如果分配了 1 个或多个值,则获取单元格的值
Getting the values for the cells if there is 1 or more values assigned
如果我使用此代码在 A 列和 B 列中的 SHEET1 的值大于或等于 2,我该如何解决此问题:(我没有任何问题)
Dim LineNumbers() As Variant
LineNumbers = Range("A1", ActiveSheet.Cells(Rows.Count, "A").End(xlUp))
Dim Lengths() As Variant
Lengths = Range("B1", ActiveSheet.Cells(Rows.Count, "B").End(xlUp))
但是,如果 A 列和 B 列上的行只有 1 个值,则会引发错误。我在这里读到,如果我使用 usedrange,不建议使用 CountA 和 xldown 来获取最后使用的行,因为它会导致结果出现一些错误,那么上面的代码效率更高。不幸的是,当我的 LineNumbers 和 Lengths 中只有 1 个值时,这会引发错误。
声明 Dim LineNumbers() As Variant
您的代码告诉 VBA 它必须保留一个数组 。任何东西(字符串、数字、对象)的数组...
那么,LineNumbers = Range("A1", ActiveSheet.Cells(Rows.Count, "A").End(xlUp))
与LineNumbers = Range("A1","A1")
或LineNumbers = Range("A1")
类似。这样的范围不能 return 数组(来自单个单元格)。
但是,如果您更改声明:
Dim LineNumbers As Variant
它不会再return一个数组,但不是必须一个数组,它会取单元格值。
请查看下一个改编代码:
Dim LineNumbers As Variant
LineNumbers = Range("A1", ActiveSheet.cells(rows.count, "A").End(xlUp))
If IsArray(LineNumbers) Then 'for the case of only one cell
Debug.Print LineNumbers
Else
Dim El As Variant
For Each El In LineNumbers
Debug.Print El
Next El
End If
从范围写入数组
Dim LineNumbers As Variant
Dim Lengths As Variant
With ActiveSheet
With .Range("A1", .Cells(.Rows.Count, "A").End(xlUp))
If .Rows.Count = 1 Then ' one cell
ReDim LineNumbers(1 To 1, 1 To 1): LineNumbers(1, 1) = .Value
Else ' multiple cells
LineNumbers = .Value
End If
End With
With .Range("B1", .Cells(.Rows.Count, "B").End(xlUp))
If .Rows.Count = 1 Then ' one cell
ReDim Lengths(1 To 1, 1 To 1): Lengths(1, 1) = .Value
Else ' multiple cells
Lengths = .Value
End If
End With
End With
如果我使用此代码在 A 列和 B 列中的 SHEET1 的值大于或等于 2,我该如何解决此问题:(我没有任何问题)
Dim LineNumbers() As Variant
LineNumbers = Range("A1", ActiveSheet.Cells(Rows.Count, "A").End(xlUp))
Dim Lengths() As Variant
Lengths = Range("B1", ActiveSheet.Cells(Rows.Count, "B").End(xlUp))
但是,如果 A 列和 B 列上的行只有 1 个值,则会引发错误。我在这里读到,如果我使用 usedrange,不建议使用 CountA 和 xldown 来获取最后使用的行,因为它会导致结果出现一些错误,那么上面的代码效率更高。不幸的是,当我的 LineNumbers 和 Lengths 中只有 1 个值时,这会引发错误。
声明 Dim LineNumbers() As Variant
您的代码告诉 VBA 它必须保留一个数组 。任何东西(字符串、数字、对象)的数组...
那么,LineNumbers = Range("A1", ActiveSheet.Cells(Rows.Count, "A").End(xlUp))
与LineNumbers = Range("A1","A1")
或LineNumbers = Range("A1")
类似。这样的范围不能 return 数组(来自单个单元格)。
但是,如果您更改声明:
Dim LineNumbers As Variant
它不会再return一个数组,但不是必须一个数组,它会取单元格值。
请查看下一个改编代码:
Dim LineNumbers As Variant
LineNumbers = Range("A1", ActiveSheet.cells(rows.count, "A").End(xlUp))
If IsArray(LineNumbers) Then 'for the case of only one cell
Debug.Print LineNumbers
Else
Dim El As Variant
For Each El In LineNumbers
Debug.Print El
Next El
End If
从范围写入数组
Dim LineNumbers As Variant
Dim Lengths As Variant
With ActiveSheet
With .Range("A1", .Cells(.Rows.Count, "A").End(xlUp))
If .Rows.Count = 1 Then ' one cell
ReDim LineNumbers(1 To 1, 1 To 1): LineNumbers(1, 1) = .Value
Else ' multiple cells
LineNumbers = .Value
End If
End With
With .Range("B1", .Cells(.Rows.Count, "B").End(xlUp))
If .Rows.Count = 1 Then ' one cell
ReDim Lengths(1 To 1, 1 To 1): Lengths(1, 1) = .Value
Else ' multiple cells
Lengths = .Value
End If
End With
End With