使用另一个单元格值引用Excel VBA中的范围

时间:2018-10-13 15:00:11

标签: excel vba excel-vba

我有一个包含一些数据的工作表。为了简化将其添加到电子邮件中的过程,我创建了一些代码,按一下按钮即可选择一系列单元格,并将其另存为图像以上传到电子邮件中。当前代码如下:

Sub Button3_Click()
'
' Button3_Click Macro
'

'
Range("A1:D43").Select
ActiveWindow.SmallScroll Down:=-39
Selection.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
End Sub

我想使用其他单元格来引用范围。例如,在单元格J1中,我将插入“ A1”,在卖出K1中,我将插入“ D43”以查找我的范围,这样就可以在不编辑代码的情况下更新范围。这可能吗?谢谢!

3 个答案:

答案 0 :(得分:6)

欢迎来到Stackoverflow:)

A1可以写为Range("J1").Value,而D43可以写为Range("K1").Value。因此"A1:D43"可以写成Range("J1").Value & ":" & Range("K1").Value

只需将Range("A1:D43").Select替换为Range(Range("J1").Value & ":" & Range("K1").Value).Select

顺便说一句,请避免使用.Select。您可能需要查看How to avoid using Select in Excel VBA

您的代码可以写为

Range(Range("J1").Value & ":" & Range("K1").Value).CopyPicture _
Appearance:=xlScreen, Format:=xlBitmap

我假设Range("J1")Range("K1")与您要进行选择的位置在同一张纸上。如果不是,则完全合格细胞。例如

Sheet1.Range(Sheet2.Range("J1").Value & ":" & Sheet2.Range("K1").Value)

在适用的情况下更改Sheet1Sheet2

吉普车在他的帖子中显示,您也可以将上面的文字写为

Sheet1.Range(Sheet2.Range("J1").Value, Sheet2.Range("K1").Value).CopyPicture _
Appearance:=xlScreen, Format:=xlBitmap

答案 1 :(得分:1)

尝试

Sub Button3_Click()
'
' Button3_Click Macro
'
    Range(cells(1, "J").text, cells(1, "K").text).CopyPicture _
       Appearance:=xlScreen, Format:=xlBitmap

End Sub

答案 2 :(得分:1)

在由所需范围值组成的数组上使用Join()函数的另一种可能性:

Option Explicit

Sub Button3_Click()
'
' Button3_Click Macro
'
    Range(Join(Application.Transpose(Application.Transpose(Range("J1:K1").Value)), ":")).CopyPicture _
    Appearance:=xlScreen, Format:=xlBitmap

End Sub