2

私は問題に遭遇しました。私は 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
4

2 に答える 2

0

結局、これが私がそれを管理した方法です。IsNull を使用して実現するのは愚かであり、UBo​​und が -1 を返す方法を使用してチェック関数を作成することに成功しました。

   Do
       If IsEmpty(V1.Range("I" & i)) = False And IsInArray(V1.Range("I" & i).Value, AHUArray) = False Then '(does not equal any other values in the array
            AHUArray(ArrayDim) = V1.Range("I" & i).Value
            i = i + 1
            ArrayDim = ArrayDim + 1
        Else
            i = i + 1
        End If
Loop While i <= LastRow

これは他のチェック機能です

Function ArrayCountIs(ArrayToCount As Variant) As Integer

Dim i As Integer
Dim ArrayCount As Integer
ArrayCount = 0
i = 0
For i = LBound(ArrayToCount) To UBound(ArrayToCount)
    If Not (ArrayToCount(i)) = "" Then
        ArrayCount = ArrayCount + 1
    End If
Next

ArrayCountIs = ArrayCount

End Function
于 2013-09-02T11:42:53.600 に答える