我很难选择一个特定的标题。不过,我希望有人能够帮助我。
我知道我可以通过这样的字符串引用范围:
Dim Str as String
Str = "A1:A10"
ThisWorkbook.Sheets("Table1").Range(Str).Select
[...]
ThisWorkbook.Sheets("Table2").Range(Str).Select
[...]
但是通过将两个语句之间的整个语句(例如'Range(“ A1:A10”)')放入变量中,是否也可以解决特定的范围?
这很方便,因为我经常复制和粘贴代码,有时需要引用'Rows(1:5)',有时需要引用'Columns(A:E)'或特定的'Range(“ A1:A10” )'。然后,我需要遍历整个代码并替换这些部分。
最好在开头就在变量中定义此部分,并在整个脚本中使用它。像
Dim Rfrc As String
Rfrc = Rows("1:5")
or Rfrc = Columns("A:E")
or Rfrc = Range("A1:A10")
ThisWorkbook.Sheets("Table1").Rfrc.Select
[...]
ThisWorkbook.Sheets("Table2").Rfrc.Select
[...]
这确实是我的第一个问题,希望您能帮助我。到目前为止,我始终可以在这里找到所有问题的答案,但是这次我找不到。
答案 0 :(得分:1)
“但是也可以通过将整个'Range(“ A1:A10”)'之类的语句放入变量来解决特定的Range吗?“
是-Range
变量,是Excel VBA工具包的基本组成部分。不用Set
来引用范围,而是直接引用Range
变量。
Sub WorkWithRanges()
Dim rng As Range
' Work with a specific range, rows or columns
With Sheets("Sheet1")
Set rng = .Range("A1:A10")
Set rng = .Rows("1:5")
Set rng = .Columns("A:E")
End With
End Sub
请注意,您通常不需要Select
范围就可以使用它们,并且希望始终完全限定它们在Worksheet
上所处的位置-即,尽量避免使用ActiveSheet
。 / p>
编辑1
如果要遍历工作表,并且每张工作表上的Range
相同,请使用一个引用设置Range
。
Sub DimARangeOnceOnly()
Dim ws As Worksheet
Dim rng As Range
For Each ws In ThisWorkbook.Worksheets
With ws
' It's the same Range on each Worksheet
' And if I need to update the reference I only need to do it once
Set rng = .Range("A1:A10")
Set rng = .Rows("1:5")
Set rng = .Columns("A:E")
' ...
End With
Next ws
End Sub
如果您想在开始时定义一个引用并在以后使用,这是一种基于String
的方法。
Sub UseAStringForARangeReference()
Dim rowRfrc As String
Dim colRfrc As String
Dim rngRfrc As String
Dim rng As Range
Dim ws As Worksheet
rowRfrc = "1:5"
colRfrc = "A:E"
rngRfrc = "A1:A10"
For Each ws In ThisWorkbook.Worksheets
With ws
Set rng = .Range(rngRfrc)
Set rng = .Rows(rowRfrc)
Set rng = .Columns(colRfrc)
End With
Next ws
End Sub