如何将地址转换回 VBA 中的范围?
How do I convert an address back to a range in VBA?
我有一个输入框,要求用户输入 select 一个单元格,并将其存储为一个范围。
然后,此范围将转换为地址(字符串),因此不会同时保存 !worksheet。
For 循环将循环遍历工作表,但是,我需要将起始单元格(范围)引用到 运行 宏 - 问题是,我无法再引用起始单元格,因为这个现在是字符串,而不是范围。
我需要在 For 循环中将地址(字符串)重新转换回一个范围。
Set myCell = Application.InputBox( _
prompt:="Select a cell", Type:=8)
celladdress = myCell.Address()
NoSheets = Sheets.Count
For x = 2 To NoSheets
'covert address back to range
'Identify blend data
NumRows = Range(myCell, myCell.Offset(1, 0).End(xlDown)).Rows.Count
NumColumns = Range(myCell, myCell.Offset(0, 1).End(xlToRight)).Columns.Count
Set StartRange = Range(myCell, myCell.Offset(NumRows - 1, NumColumns - 1))
StartRange.Copy
myCell.address(,true) 为您提供范围的完整外部地址。
myCell.Parent.Name 给你工作表的名称
您想要在该循环中使用 Worksheet
对象引用:
For x = 2 To NoSheets
Dim currentSheet As Worksheet
Set currentSheet = thatWorkbook.Worksheets(x)
...
Next
一旦有了 sheet,您仍然可以使用 myCell
在 currentSheet
上获得 Range
,而无需处理单元格地址字符串:
Set currentCell = currentSheet.Cells(myCell.Row, myCell.Column)
避免对 Range
和 Cells
的不合格调用;他们隐含地引用了 ActiveSheet
,这通常意味着代码仅适用于 Worksheet.Activate
调用(您通常希望避免必须一起使用 Select
和 Activate
).
我有一个输入框,要求用户输入 select 一个单元格,并将其存储为一个范围。 然后,此范围将转换为地址(字符串),因此不会同时保存 !worksheet。
For 循环将循环遍历工作表,但是,我需要将起始单元格(范围)引用到 运行 宏 - 问题是,我无法再引用起始单元格,因为这个现在是字符串,而不是范围。
我需要在 For 循环中将地址(字符串)重新转换回一个范围。
Set myCell = Application.InputBox( _
prompt:="Select a cell", Type:=8)
celladdress = myCell.Address()
NoSheets = Sheets.Count
For x = 2 To NoSheets
'covert address back to range
'Identify blend data
NumRows = Range(myCell, myCell.Offset(1, 0).End(xlDown)).Rows.Count
NumColumns = Range(myCell, myCell.Offset(0, 1).End(xlToRight)).Columns.Count
Set StartRange = Range(myCell, myCell.Offset(NumRows - 1, NumColumns - 1))
StartRange.Copy
myCell.address(,true) 为您提供范围的完整外部地址。
myCell.Parent.Name 给你工作表的名称
您想要在该循环中使用 Worksheet
对象引用:
For x = 2 To NoSheets
Dim currentSheet As Worksheet
Set currentSheet = thatWorkbook.Worksheets(x)
...
Next
一旦有了 sheet,您仍然可以使用 myCell
在 currentSheet
上获得 Range
,而无需处理单元格地址字符串:
Set currentCell = currentSheet.Cells(myCell.Row, myCell.Column)
避免对 Range
和 Cells
的不合格调用;他们隐含地引用了 ActiveSheet
,这通常意味着代码仅适用于 Worksheet.Activate
调用(您通常希望避免必须一起使用 Select
和 Activate
).