Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


39317 / 76732 ←次へ | 前へ→

【42528】Re:配列について
発言  ichinose  - 06/9/13(水) 21:27 -

引用なし
パスワード
   ▼かじったばかり さん:
こんばんは。

>いつも勉強させていただいています。
>早速ですが次のコード 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())

としてみてください。

1 hits

【42520】配列について かじったばかり 06/9/13(水) 19:39 質問
【42528】Re:配列について ichinose 06/9/13(水) 21:27 発言
【42531】Re:配列について かじったばかり 06/9/13(水) 22:15 お礼

39317 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free