我有一个包含一些数据的工作表。为了简化将其添加到电子邮件中的过程,我创建了一些代码,按一下按钮即可选择一系列单元格,并将其另存为图像以上传到电子邮件中。当前代码如下:
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”以查找我的范围,这样就可以在不编辑代码的情况下更新范围。这可能吗?谢谢!
答案 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)
在适用的情况下更改Sheet1
和Sheet2
。
吉普车在他的帖子中显示,您也可以将上面的文字写为
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