|
おはようございます。
エラーに付いては、Jカーターさんがおっしゃっていますが。
ヘルプより
メモ 動的配列でキーワード Preserve を使用する場合、最後の次元の上限値のみ変更できます。次元数は変更できません。
リストボックスは、ColumnCountが2になっているとして。
配列を1行余分に作らないと、なんかうまくいかなかった。
しかし、この方法だと配列をメモリに維持しつづけるのがちょっと気になる。
数が多くなってくるとトロくなりそう。
Dim A() As String
Private Sub CommandButton1_Click()
Dim X As Integer
X = ListBox1.ListCount
If X = 0 Then
ReDim Preserve A(0 To 1, 0 To X + 1)
Else
ReDim Preserve A(0 To 1, 0 To X)
X = X - 1
End If
A(0, X) = TextBox1.Value
A(1, X) = TextBox2.Value
ListBox1.List = Application.Transpose(A)
Range("C1:D1").Value = Application.Transpose(A)
DoEvents
End Sub
これってバグ??
If X = 0 Then
ReDim Preserve A(0 To 1, 0 To X + 1)
Else
ReDim Preserve A(0 To 1, 0 To X)
X = X - 1
End If
上のIF文をとって単純に下のようにした場合。
ReDim Preserve A(0 To 1, 0 To X)
メモリ無いに維持させない方法。
Private Sub CommandButton1_Click()
Dim LtTb() As String
LTC = ListBox1.ListCount
ReDim LtTb(1 To LTC + 1, 1 To 2)
If LTC <> 0 Then
For i = 1 To LTC
LtTb(i, 1) = ListBox1.List(i - 1, 0)
LtTb(i, 2) = ListBox1.List(i - 1, 1)
Next
Else
i = 1
End If
LtTb(i, 1) = TextBox1.Value
LtTb(i, 2) = TextBox2.Value
ListBox1.List = LtTb
DoEvents
Erase LtTb
End Sub
|
|