gpt4 book ai didi

arrays - Excel VBA : Cant add to an array?

转载 作者:行者123 更新时间:2023-12-04 20:45:29 29 4
gpt4 key购买 nike

我遇到了一个问题,我对 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

最佳答案

改变

IsNull(V1.Range("I" & i)) = False 


V1.range("I" & i).value <> "" 

当您使用 IsNull像那样你总是会得到真实的,因为你在问,“这个范围值是我刚刚创建并定义的 Null 吗?”

关于动态增长数组,见 this answer有关如何执行此操作的示例。

关于arrays - Excel VBA : Cant add to an array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18508153/

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