配列に精通している人にとっては簡単に答えてくれることを願っています。(1)値を持つダイナミックアレイ - VBA Excel
私は、スペースで区切られたさまざまな数のリストを持つ単一の列を持っています。私は数字を追加するプログラムを持っています。それが空のセルに当たったら、その数を配列に追加し、配列内のスペースの数を(1)だけ増やし、合計カウンターを0に戻し、そのループの次の反復にスキップする必要があります。それが再び空間に当たるまで数え始めます。時間がたつにつれて、さまざまな量のリストが存在します。 3-4以上はあるとは思いませんが、それ以上のことがあればそれを処理するようにプログラムしたいと思います。
ので、例えば、細胞はC4:C10が200まで追加番号が含まれ、その後、セルC11は空です。セルC12:C14には150までの数字が含まれています。私は最初のスポットに200を格納し、2番目のスポットに150を格納したいと思います。それから、メッセージボックスに "List 1 is 200"、List 2 is 150 "などのポップアップが表示されます。
今、私は下付き文字を外に出していますが、私は配列の大きさを宣言していませんでしたが、ダイナミックであることを望みますが、配列に(1)スロットのみを含める方法はわかりませんでしたが、常にarr(0〜1)のようなものです。私が見ている例では単一の値しか見ていないし、forループになっているので、もし私がuboundへの束縛のループをしたら、 "List 1 is 200"、 "List 2 "リストが1つだけの場合はデータがないので、2番目の値は無価値です"
私はこれを考えすぎているか間違った方向に行っているかもしれませんが、私はこのプログラムに役立つと思う。あなたが提供できるお手伝いをありがとう。
私は以下の混乱を提供します。私はこれをきれいにしておらず、コメントしていますが、質問があるかどうか尋ねることができます。私はそれが間違っていると確信しています、私はちょうどあなたに私が行くつもりのアイデアを与えようとしています。
Private Sub cmdTest_Click()
Dim wb As Workbook
Dim ws As Worksheet
Dim intCounter As Integer
Dim intValue As Integer
Dim strCell As String
Dim arr() As Long
Dim intArr As Integer
Set wb = Application.Workbooks("ListTotal.xlsm")
Set ws = wb.Worksheets("Main")
Call LastRowWithData_xlUp_1(lastColRow)
MsgBox "Number of lists is: " & WorksheetFunction.CountIf(Range("C3:C" & lastColRow), "") + 1
Call FindLastRow(LastRow)
'Count pages left in each series
intValue = 0
'set number of values in array
intArr = 1
For i = 3 To LastRow
strCell = "C" & i
If Range(strCell) = "" Then
arr(0) = intValue
intValue = 0
GoTo NextIteration
End If
openingParen = InStr(Range(strCell), "[")
closingParen = InStr(Range(strCell), "]")
enclosedvalue = Mid(Range(strCell), openingParen + 1, closingParen - openingParen - 1)
intValue = intValue + enclosedvalue
MsgBox "The number of pages in this book is: " & enclosedvalue
NextIteration:
MsgBox "The total pages left in the series is: " & intValue
Next
For i = LBound(arr) To UBound(arr)
MsgBox ("The number of pages left in Series " & j & " is:") 'arr(i))
Next i
End Sub
配列のサイズを変更する必要があるようです。 'Redim'を使ってこれを実現できます。 'Redim Arr(99)'のようなものは、1次元の配列100の空の要素の大きさになります。各列に十分なスペースが必要ですか?もしそうなら、LastRowを使うことができますが、どこに宣言されているのか分かりません。 –
ちょっとライアン。はい、私はそれをサイズ変更する方法を見ました。私はRedim Preserve Arrを使うことができました。私は各行を保存していません。私は各リストを集計し、合計を配列に保存しています。アイデアは配列全体をループして各合計を表示できるということでした。だから私が3つのリストを持っていたなら、私は配列のuboundを取得し、j = 1からuboundまで言うことができる。msgbox "合計は:"&arr(j)。 – Dalton