• ベストアンサー

エクセルの select case文

Dim i For i = 1 To 5 Select Case Cells(i, "A") Case "午前" Range("w1").Select Selection.Copy  Cells(i, "C").Select ActiveSheet.Paste Case "午後" Range("x1").Select Selection.Copy Cells(i, "d").Select ActiveSheet.Paste  End Select Next i Dim j For j = 1 To 5 Select Case Cells(j, "A") Case "関東" Range("y1").Select Selection.Copy  Cells(j, "e").Select ActiveSheet.Paste Case "関西" Range("z1").Select Selection.Copy Cells(i, "F").Select ActiveSheet.Paste  End Select Next i 毎回皆様にはお世話になっています。 あるセルを参照してその入力結果により 違うセルを貼り付けるマクロを組みました。 参照するセルが複数個(この例だと2セル)あるので それぞれに変数を宣言してfor nextで まわしています。 この内容を変数ひとつだけで すっきりと記述することは可能でしょうか? 参照するセルや判別する内容が増えると 記述が膨大になって マクロが 見にくくなるので 良い方法がありましたら 御教授ねがいます。

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 両方とも、A列を参照していますが、これは単なる間違いでしょうか? 単なる間違いなら、わざわざ2回ループを廻す必要はないと思います。 あと、CopyとPasteメソッドでいちいちSelectしない方がいいです。 Dim i As Long For i = 1 To 5   Select Case Cells(i, 1).Value     Case "午前"       Range("W1").Copy Cells(i, 3)     Case "午後"       Range("X1").Copy Cells(i, 4)   End Select   Select Case Cells(i, 2).Value     Case "関東"       Range("Y1").Copy Cells(i, 5)     Case "関西"       Range("Z1").Copy Cells(i, 6)   End Select Next i

ennkai
質問者

お礼

無事に解決いたしました。 コピペーストの記述の簡略化まで 御指摘いただきありがとうございました。 おかけですっきりした記述ができました。

ennkai
質問者

補足

御回答ありがとうございます 御指摘の通りに 1回目の参照先列はAで二回目はBでした。 質問の記載間違い、大変失礼いたしました。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

iとjは、同じなので、1つにできます。 ついでに、select→copy→select→pasteしなくても cells(x,y)=range("??").value できると思います。

ennkai
質問者

お礼

無事に解決いたしました ありがとうございます。 御回答のおかけで 見やすい記述ができました 補足でも申し上げましたが コピーペエストの記述の簡略化についても ありがとうございました

ennkai
質問者

補足

御回答ありがとうございます どこの部分に2個目の記述を 書いたらいいんでしょうか? select→copy→select→paste の部分に関しては 貼り付けたい内容が 文字と○(オートシェイプ)なもので こういう方法を取っています。 こちらについても御指摘ありがとうございました。 文字だけの場合はおっしゃるとおりの方法を ためさせていただきたいです

関連するQ&A