我们可以将工作表名称和范围设置为全局变量吗



我有三个循环过程,它们使用了一些表和一些范围。我想设置它,这样我就可以在一个地方更改图纸名称和范围,而不是在三个不同的地方进行更改。这可能吗?

现在,我就这样做。

' 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等

相关内容

  • 没有找到相关文章

最新更新