重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

いつもお世話になっております。
以下の商品名があり、
Array("バナナ", "りんご", "なし", "ぶどう", "オレンジ", "マンゴー", "いちご", "キウイ")
この商品を
Range("C4")を基準に4行おきに貼り付けたいのですが、
Arrayで配列してRange("C4")にoffset(4)とかで
いろいろ試しましたが、どうもうまくいきません。
おしえてくれませんでしょうか

「VBAでのコピーのやり方」の質問画像

質問者からの補足コメント

  • Range("A4").Resize(UBound(t)) = t
    だとバナナが7縦に並ぶだけです。
    わかりません。

      補足日時:2020/02/19 17:17

A 回答 (2件)

こんにちは!



色々やり方はあると思いますが、一例です。

Sub Sample1()
 Dim k As Long
 Dim myAry
  myAry = Array("バナナ", "りんご", "なし", "ぶどう", "オレンジ", "マンゴー", "いちご", "キウイ")
   For k = 0 To UBound(myAry)
    Cells(4 * (k + 1), "C") = myAry(k)
   Next k
End Sub

のように行合わせだけでいけると思います。m(_ _)m
    • good
    • 0
この回答へのお礼

いつもお世話になっております。
わたしの作ったのダサいSub kk()
Dim R As Range
Dim n As Long

For Each R In Range("C289:i289")
R.Cut Destination:=Range("b289").Offset(n + 3, 0)
n = n + 3
Next
End Sub

これではだめです。
   For k = 0 To UBound(myAry)
    Cells(4 * (k + 1), "C") = myAry(k)
   Next k
とてもいいです。
有難うございます。

お礼日時:2020/02/19 18:02

ループを使わずにって事であれば、個人的には知識ありませ~ん。


強引なやり方としては、

Range("C4").Resize(29).Value = Application.Transpose( _
Array("バナナ", "", "", "", "りんご", "", "", "", "なし", "", "", "", "ぶどう", "", "", "", "オレンジ", "", "", "", _
"マンゴー", "", "", "", "いちご", "", "", "", "キウイ")) '★行列入れ替えの関数を使用する。

こんな感じ?
ようは飛び飛びのセルを選択してコピペすると、間の空白がなくなって詰めてセルに代入されるの逆パターンですね。
値の間に空白を作成するって私は聞いた事(見た事)ないです。
なので変数:t をループで順番に値を取得しつつ行を飛ばして(Stepでも良いし)って感じでしょうか。

ただ個人的見解なので他の回答を待ってみて下さいな。
    • good
    • 0
この回答へのお礼

有難うございます。

お礼日時:2020/02/19 18:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!