将选定的单元格分配给变量
Assign selected cells to variable
我有一个 vba 赋值,我想在其中将单元格值赋给一个变量。我使用 selection.SpecialCells
找到了 select 相关单元格。因此,我 select 编辑了一个包含 11 个单元格的列,但中间有空格。如何将其分配给变量?
Worksheets("Sheet1").Range(Cells(4, 3), Cells(1000, 3)).Select
Selection.SpecialCells(xlCellTypeConstants, 2).Select
Set IsinArray = Selection
(1) 删除 Set
- 它仅用于分配对象,而不是值。
(2) 阅读(并理解)How to avoid using Select in Excel VBA.
(3) 限定 Cells
- 您需要告诉 VBA 您想要从哪个工作表中获取单元格。
(4) SpecialCells 中的第二个参数指定要读取的数据类型。 2
(xlTextValues
) 只表示字符串,所以数字被过滤掉了。如果要读取所有不为空的单元格,只需省略此参数即可。
(5) 如果您的范围包含多个单元格,则这些值存储在一个二维数组中。如果您的 Range 仅包含一个值,则结果是单个值,而不是数组。如果 SpecialCells
没有找到任何东西(例如,所有单元格都是空的),它会抛出一个运行时错误。
(6) 使用 Option Explicit
并声明所有变量。由于 SpecialCells
可以是不同的类型,因此使用 Variant
.
(7) 拆分复杂语句有助于查找错误。
Dim r as Range
With Worksheets("Sheet1")
Set r = .Range(.Cells(4, 3), .Cells(1000, 3))
' (Synonym to Set r = .Range("C4:C1000")
End With
Dim myVals
On Error Resume Next ' Handle the possible error that no value was found
myVals = r.SpecialCells(xlCellTypeConstants)
On Error GoTo 0
If IsEmpty(myVals) Then
Debug.Print "No values found."
ElseIf Not IsArray(myVals) Then
Debug.Print "Only one value found."
Else
Debug.Print UBound(myVals, 1) & " values found."
End If
我有一个 vba 赋值,我想在其中将单元格值赋给一个变量。我使用 selection.SpecialCells
找到了 select 相关单元格。因此,我 select 编辑了一个包含 11 个单元格的列,但中间有空格。如何将其分配给变量?
Worksheets("Sheet1").Range(Cells(4, 3), Cells(1000, 3)).Select
Selection.SpecialCells(xlCellTypeConstants, 2).Select
Set IsinArray = Selection
(1) 删除 Set
- 它仅用于分配对象,而不是值。
(2) 阅读(并理解)How to avoid using Select in Excel VBA.
(3) 限定 Cells
- 您需要告诉 VBA 您想要从哪个工作表中获取单元格。
(4) SpecialCells 中的第二个参数指定要读取的数据类型。 2
(xlTextValues
) 只表示字符串,所以数字被过滤掉了。如果要读取所有不为空的单元格,只需省略此参数即可。
(5) 如果您的范围包含多个单元格,则这些值存储在一个二维数组中。如果您的 Range 仅包含一个值,则结果是单个值,而不是数组。如果 SpecialCells
没有找到任何东西(例如,所有单元格都是空的),它会抛出一个运行时错误。
(6) 使用 Option Explicit
并声明所有变量。由于 SpecialCells
可以是不同的类型,因此使用 Variant
.
(7) 拆分复杂语句有助于查找错误。
Dim r as Range
With Worksheets("Sheet1")
Set r = .Range(.Cells(4, 3), .Cells(1000, 3))
' (Synonym to Set r = .Range("C4:C1000")
End With
Dim myVals
On Error Resume Next ' Handle the possible error that no value was found
myVals = r.SpecialCells(xlCellTypeConstants)
On Error GoTo 0
If IsEmpty(myVals) Then
Debug.Print "No values found."
ElseIf Not IsArray(myVals) Then
Debug.Print "Only one value found."
Else
Debug.Print UBound(myVals, 1) & " values found."
End If