gpt4 book ai didi

arrays - 根据条件将单元格值分配给数组

转载 作者:行者123 更新时间:2023-12-04 21:54:12 26 4
gpt4 key购买 nike

这是我第一次在 VBA 中使用数组。我试图根据特定条件检查我的数组的值。

我通过 检查我的数组值Locals Window . window 是空的。我做错了什么?

Option Explicit

Sub test()

'define dynamic array
Dim sn As Variant
Dim i As Long

'Loop through all the row
For i = 1 To Rows.Count
If Cells(i, 12).Value = "Renewal Reminder" And Not IsEmpty(Cells(i, 12).Value) Then
'assign cell value to array
sn = Cells(i, 1).Value
Debug.Print "aaa" ' there are 8 cell values that meet the condition
End If
Next i

End Sub

更新
Dim sn as Varient以错误突出显示

user-defined type not defined

最佳答案

除了错误消息中显示的拼写错误之外,您实际上并没有使用 sn作为一个数组 - 您只是将每个值存储在一个标量变量中,替换之前在该变量中的值。

以下内容应该适合您:

Option Explicit

Sub test()

'define dynamic array
Dim sn As Variant
Dim cnt As Long
Dim i As Long
ReDim sn(1 To 1)
cnt = 0
'Loop through all the row
For i = 1 To Cells(Rows.Count, "L").End(xlUp).Row
If Cells(i, 12).Value = "Renewal Reminder" Then
'assign cell value to array
cnt = cnt + 1
ReDim Preserve sn(1 To cnt)
sn(cnt) = Cells(i, 1).Value
Debug.Print "aaa" ' there are 8 cell values that meet the condition
End If
Next i

For i = 1 To cnt
Debug.Print sn(i)
Next

End Sub

the answer 中所述由 Chemiadel ,如果你知道那是什么,最好使用适当的基类型来声明你的变量。

因此,如果您知道 A 列包含文本,请替换 Dim sn As Variant
Dim sn() As String

或者,如果它是 double 数,请使用
Dim sn() As Double

等等如果A列可以包含各种不同的类型,使用 Variant可能是合适的。

注意:您不必包含 ()使用 Variant 时因为 Variant变量可以在标量、数组、对象等之间愉快地切换。

关于arrays - 根据条件将单元格值分配给数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48016735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com