|
尽可能不要使用公共全局变量,除非是常量,公共全局变量与过程是无耦合状态,- Sub cs1_a(ss() As Variant, lastRow As Long, shName As String)
- '过程:获取指定工作表列数据
- '参数:ss()动态数组,接收返回的数组
- '参数:lastRow,接收返回的指定列最大行数
- '参数:shName,要操作的工作表名
-
- Dim sh As Worksheet
- Dim i As Long
-
- '某种操作
- Erase ss '结果数组初始化
- Set sh = Sheets(shName) '实例化要操作的工作表
- lastRow = sh.Range("a65536").End(xlUp).Row '某列的最大非空行
- ReDim ss(1 To lastRow) As Variant '重新定义数组
-
- '数组赋值
- For i = 1 To lastRow
- ss(i) = sh.Cells(i, 1) '不要直接使用没有工作表前缀的Calls操作,容易出错
- Next i
- Set sh = Nothing '释放对象
-
- End Sub
- Sub cs2_main()
- '主过程
- Dim ss() As Variant
- Dim shName As String '要操作的工作表名
- Dim lastRow As Long '接收数组最大下标
- Dim i As Long
-
- '......
- shName = "sheet1" '要操作的工作表名
- Call cs1_a(ss, lastRow, shName)
- '后续操作
- For i = 1 To lastRow
- ss(i) = ss(i) * 2 '操作返回的结果数组
- Next i
- '......
- End Sub
复制代码 变化容易失控。应该用传递参数的方式来完成你期望的操作。
一个传递参数的例子:
|
评分
-
1
查看全部评分
-
|