|
▼かじったばかり さん:
こんばんは。
>いつも勉強させていただいています。
>早速ですが次のコード 1 と 2 では同じような結果
>でませんがどうしてかわかりません。ご教授下さい。
>
>1 C1からC3に1 2 3 と入力し下記コード実行すると
> B1から下に 1 2 3 と表示されます。
>
>Dim myRange As Range
>Dim buf1
>Set myRange = Worksheets("Sheet1").Range("C1:C3")
>Worksheets("Sheet1").Range("B1").Resize(UBound(buf1)).Value = buf1
↑これでは、エラーになってしまいますね!!
Sub test()
Dim buf1 As Variant
buf1 = Worksheets("Sheet1").Range("C1:C3").Value
Worksheets("Sheet1").Range("B1").Resize(UBound(buf1)).Value = buf1
End Sub
ということでしょうか?
でもこの時のBuf1に作成される配列は、Buf1(1 to 3,1 to 1)
こんな形の2次元配列が作成されます。
よって、
>Dim buf(1 To 3)
'これは、1次元配列ですから、結果が違ってきます。
>Dim i As Integer
>With Me
> For i = 1 To UBound(buf)
> buf(i) = .Controls("TextBox" & i).Value
> Next i
>End With
Worksheets("Sheet1").Range("A1").Resize(UBound(buf)).Value = _
Application.Transpose(buf())
としてみてください。
|
|