5

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

Sub Button3_Click()
'
' Button3_Click Macro
'

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

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

4

3 回答 3

6

欢迎来到 Stackoverflow :)

A1可以写成Range("J1").ValueD43也可以写成Range("K1").Value。所以"A1:D43"可以写成Range("J1").Value & ":" & Range("K1").Value

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

顺便说一句,避免使用.Select. 您可能想查看如何避免在 Excel VBA 中使用 Select

你的代码可以写成

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适用。

正如 jeeped 在他的帖子中显示的那样,您也可以将上述内容写为

Sheet1.Range(Sheet2.Range("J1").Value, Sheet2.Range("K1").Value).CopyPicture _
Appearance:=xlScreen, Format:=xlBitmap
于 2018-10-13T15:07:11.500 回答
1

尝试,

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

End Sub
于 2018-10-13T15:09:15.873 回答
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
于 2018-10-13T15:22:12.927 回答