我有三个循环过程,它们使用了一些表和一些范围。我想设置它,这样我就可以在一个地方更改图纸名称和范围,而不是在三个不同的地方进行更改。这可能吗?
现在,我就这样做。
' Loop One
Sub TestMe()
sheet_in = "Model In"
sheet_out = "Model Out"
range_in = "E10:AB300"
range_out = "E2"
Set sheet_in = Sheets(sheet_in).Range(range_in)
Set sheet_out = Sheets(sheet_out).Range(range_out)
row_count = Sheets(sheet_in).Range(range_in).Rows.Count
col_count = Sheets(sheet_in).Range(range_in).Columns.Count
For j = 1 to col_count
For i = 1 to row_count
range_out.Cells(K , 1).Value = range_in.Cells(i, j).Value
Next i
Next j
End Sub
我觉得有更好的方法可以做到这一点。
考虑在专用模块中定义常量:
Public Const WS_SHEET_IN As String = "Model In"
Public Const RNG_SHEET_IN As String = "E10:AB300"
Public Const WS_SHEET_OUT As String = "Model Out"
Public Const RNG_SHEET_OUT As String = "E2"
在您的常规代码中:
Sub TestMe()
' etc., etc.
row_count = Worksheets(WS_SHEET_IN).Range(RNG_SHEET_IN).Rows.Count
End Sub
一如既往地";这取决于";是什么是";最好的";组织代码的方法。
例如:
命名您的工作表代码模块,并直接使用该名称,而不是引用选项卡名称:
InSheet.Range(RNG_SHEET_IN)
OutSheet.Range(RNG_SHEET_OUT)
使用属性或函数返回通常访问的对象:
Function InRange() As Range
Set InRange = thisworkbook.worksheets(WS_SHEET_IN).Range(RNG_SHEET_IN)
End function
Etc等