将工作表和单元格设置为变量

Ste*_*eng 5 excel vba excel-vba

我是VBA编码的新手.假设我正在从Sheet3.Cell(23,4)中检索值的值,在VBA代码中是否有任何方法可以将其设置为变量?

例如,我已经更改了接口并让值保持在Sheet4.Cell(20,1),我的代码中的任何地方都引用Sheet3.Cell(23,4)需要更改为Sheet4.Cell(20,1) ).我在想是否有针对这种情况编码VBA的最佳做法?

Sid*_*out 7

是.为此,请确保声明工作表

例如

以前的代码

Sub Sample()
    Dim ws As Worksheet

    Set ws = Sheets("Sheet3")

    Debug.Print ws.Cells(23, 4).Value
End Sub
Run Code Online (Sandbox Code Playgroud)

新规范

Sub Sample()
    Dim ws As Worksheet

    Set ws = Sheets("Sheet4")

    Debug.Print ws.Cells(23, 4).Value
End Sub
Run Code Online (Sandbox Code Playgroud)

  • 嘿Sidd,我不明白你的代码.为什么要在内存中设置不必要的变量?Sheet Codenames基本上就像使用变量一样,如果工作表名称更改,则代号不会. (3认同)

Jer*_*ire 6

是的,将单元格设置为RANGE对象一次,然后在代码中使用该RANGE对象:

Sub RangeExample()
Dim MyRNG As Range

Set MyRNG = Sheets("Sheet1").Cells(23, 4)

Debug.Print MyRNG.Value

End Sub
Run Code Online (Sandbox Code Playgroud)

或者,您可以简单地将该单元格的值存储在内存中并引用实际值,如果这是您真正需要的.如果是数字,那么该变量可以是Long或Double或Single;或String:

Sub ValueExample()
Dim MyVal As String

MyVal = Sheets("Sheet1").Cells(23, 4).Value

Debug.Print MyVal

End Sub
Run Code Online (Sandbox Code Playgroud)