excel 字符串中的VBA范围

ewm0tg9j  于 2023-05-08  发布在  其他
关注(0)|答案(2)|浏览(210)

这有点傻,但我已经在这个简单的声明中停留了一段时间:

Dim range1 as Range
    Dim mysheet as String
    Dim myrange as String

    mysheet = "Sheet1"
    range = "A1:A10"

range1 = Worksheets(mysheet).Range(myrange)

我已经测试了我在互联网上找到的所有解决方案,例如thisthisthis,但什么都没有。
它总是给我错误:1004“应用程序定义的错误”或“对象变量或未设置”。
我尝试了以下方法:

range1 = ThisWorkbook.Worksheets(mysheet).Range(myrange)

range1 = ActiveWorkbook.Worksheets(mysheet).Range(myrange)

range1 = Sheets(mysheet).Range(myrange) (and the combinations above)

range1 = Worksheets(mysheet).Range(Cells(1,1), Cells(1,10)) (and the combinations with This/Active workbook)

和/或

with This/ActiveWorkbook
range1 = .Worksheets(mysheet).Range(myrange)
end with

没有一个奏效。
这是一个非常愚蠢的事情,但我已经被卡住了一段时间了:s
谁能帮帮我?
真的提前感谢。
最好的问候,

33qvvth1

33qvvth11#

您需要使用“集”来指定对象:

Set range1 = Worksheets(mysheet).Range(myrange)
drnojrws

drnojrws2#

我知道你被卡住了,我提供了一个轻微的卡住变体:

rngStr = corrSht.Range("T" & 63 + iterCnt).Address               
*** Set strRng = Range(rngStr)***

所以可以肯定的是,****使用Set让string 'become' a range...但是直到我在前一行中将“Address”添加到范围字符串中,这才起作用。因此,将光标悬停在rngStr上显示的是范围而不是范围内容。我发现VBA非常厚脸皮/像这样的刺激。希望我有一个更好的概述“为什么”,而不是“如何”有时。

相关问题