我遇到了一个问题,我对 VBA 相当陌生,但学习速度很快。我一直在尝试纠正下面的这段代码,以查看一列并挑选出该列中的数据行所采用的所有可能值,以便在另一段代码中使用。
我无法让阵列工作,我可能只是做错了。如果不清楚,它应该检查 I 列中单元格的值,如果它是一个值(并且如果它尚未存储(代码显示但尚未使用)),则该值存储在数组中,并且数组中的位置和列向下的位置递增。
我还没有看过的另一个问题是如何按名称等排列数组中的值?在这种情况下,值将是 AHU1、AHU2、AHU3 等,最高约为 AHU5 或 6,我还打算实现一些代码,如果需要,将扩展数组(从更小,所以它不会比它需要的大)
编辑:我还没有解决的另一个问题是为什么 If 语句总是导致将值添加到数组中(它没有)
Do
If IsNull(V1.Range("I" & i)) = False Then 'And V1.Range("I" & i).Value <> (Val(AHUArray(1)) Or Val(AHUArray(2)) Or Val(AHUArray(3)) Or Val(AHUArray(4)) Or Val(AHUArray(5)) Or Val(AHUArray(6)) Or Val(AHUArray(7)) Or Val(AHUArray(8)) Or Val(AHUArray(9)) Or Val(AHUArray(10))) Then 'And (does not equal any other values in the array
AHUArray(ArrayDim) = V1.Range("I" & i).Text
i = i + 1
ArrayDim = ArrayDim + 1
Else
i = i + 1
End If
Loop While i <= LastRow
任何想法?,帮助将不胜感激!
这些是在此代码包含这些问题之前的定义(就像过去一样,但我认为不是?
Dim V1 As Worksheet
Dim LastRow As Long
Dim C As Range
Dim FirstAddress As String
Dim AHUArray(1 To 10) As String
Dim DestCell As Integer
Dim i As Integer
Dim ArrayDim As Integer
Set V1 = ThisWorkbook.Sheets("V1")
Set AHU = ThisWorkbook.Sheets("AHU")
LastRow = V1.Range("A:A").Find("*", V1.Range("A1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
DestCell = 3
ArrayDim = 1
i = 3