例えば次のような状態の表がシートにあり、
列1:2の空白のセル4つに、
2行目と同じ「あああ」「いいい」を入れるマクロの作り方教えてください。
列1 | 列2 | 列3 |
---|---|---|
あああ | いいい | ううう |
えええ | ||
おおお |
マクロの記録を使いましたが、うまく実行されませんでした。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
仕様が不明瞭だったので、
列AとBだけについて、列Cが存在する限り処理するものとする、
としました。
VBA
1Private Sub CommandButton1_Click() 2 Dim r As Long, rr As Long, r_src As Long 3 Dim c As Long 4 5 With ActiveSheet 6 r = 2 7 Do While Not IsEmpty(.Cells(r, 3).Value) 8 For c = 1 To 2 9 If IsEmpty(.Cells(r, c).Value) Then 10 rr = r - 1 11 Do While IsEmpty(.Cells(rr, c).Value) 12 rr = rr - 1 13 Loop 14 .Cells(rr, c).Copy Destination:=.Range(.Cells(rr + 1, c), .Cells(r, c)) 15 End If 16 Next 17 r = r + 1 18 Loop 19 End With 20 21End Sub
投稿2017/12/08 08:27
編集2017/12/08 08:32退会済みユーザー
総合スコア0
0
やりたいことの記述だけになってしまっていますね。
これだと「丸投げの質問」ととられてしまいますよ。
マクロの記録を使いましたが、うまく実行されませんでした。
とありますが、どんな操作を「マクロ記録」して(結果どんなコードが生成されて)、でもどんなところが思った動作とならなかったのか。
この記載がないとなかなか回答もつかないと思います。
やりたいことは「A列とB列の空欄を、直上の入力内容で埋めたい」だと思います。
処理の流れとしては
①対象の行範囲を上から順にループする ~行ループここから~ ②A列の判定 ②-a A列が空欄でなければ、変数Aに値を格納する ②-b A列が空欄なら、変数Aの値をセルに出力する ③B列の判定 ③-a B列が空欄でなければ、変数Bに値を格納する ③-b B列が空欄なら、変数Bの値をセルに出力する ④次の行の処理(②)へ ~行ループここまで~
という感じになると思います。
現時点ではこの程度のアドバイスしかできませんが、難しいコードではないと思いますので頑張ってみてください。
投稿2017/12/08 08:40
編集2017/12/08 08:42総合スコア3013
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/12/13 02:28