- ベストアンサー
エクセルマクロ if文を繰り返したい
- マクロ初心者です。以下のようなマクロを作ったのですが、これをE34まで繰り返しの処理をしたいです。どこにどんな文章を挟んでいいのかわかりません。
- エクセルマクロ初心者が、特定条件によって条件分岐をするマクロを作成しました。しかし、この処理をE34まで繰り返す方法がわかりません。どこにどのようなコードを挿入すれば良いのか教えてください。
- エクセルマクロの初心者ですが、特定の条件に基づいて処理を分岐させるマクロを作成しました。しかし、この処理をE34まで繰り返す方法が分かりません。どのようにコードを修正すれば良いのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
どのように繰り返すのかが情報不足ですね。 O22とE11を上記マクロの通り処理したら、次はO23とE12という形でよいのでしょうか? この場合の繰り返しはForを使うのが一番良いです。 またセル参照はA1参照ではなく、Cells(行数,列数)のようにCellsプロパティを使った参照の方がよいですね。 例えば上記をO22~O45、E11~E34まで繰り返したいという場合は For n = 0 To 23 If Workbooks("日報.xls").Worksheets("お手本").Cells(22 + n, 15) = "A" Then Workbooks("test.xls").Worksheets("II-1(1)").Cells(11 + n, 5) = "" ~ End If Next のように「Range("O22")」の部分は「Cells(22 + n, 15)」(15はO列の意味、左から15列目なので)に 「Range("E11")」の部分は「Cells(11 + n, 5)」にすると良いです。 For処理でnには0~23を代入しながら繰り返し処理するので、各行ずつ処理してくれるようになります。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
こういうコードを書いたあとで、何をしたいのか、文章で書いてみること。 >E34まで繰り返しの処理をしたいです では良くわからない。 -- コードがあまりにも見慣れたものと違い、初心者という感じ。 O22セルがA,B、DならE11を空白にするなら .Rnge("O22") = "A" Or .ange("O22") = "B" Or Range("O22") = "D" Then ・・・ とOrを使う ーー または Select Case .Range("O22") Case "A" ・・ Case "B" ・・ とする。 ーーー Workbooks("日報.xls").Worksheets("お手本").の部分はしつこいので With Workbooks("日報.xls").Worksheets("お手本") .Range("O22")=・・ End With などとする。 または Set Sh1=Workbooks("日報.xls").Worksheets("お手本") Sh1.Range("O22")=・・ などとする。 ーーー 初心者はなるべくCopyを使わず、代入で済ます。(書式まで問題にしてない場合) -------- >E34まで繰り返しの処理をしたいです セルは質問のコードで何箇所も出てきている。 どこを繰り返すのですか。 初心者らしく、質問もあいまい。
お礼
ありがとうございます。Orが使えるなんてことももちろん知りません。 参考になります。 やりたいのはひとつの日報から4つの他のシートに反映させたいのですが、その分け方がO22セルに入れているA~Dのアルファベットなのです。 test.xlsは"C"の日報を抜粋したいのです。 そして、もし”C”であれば、お手本シートのC22をtest.xlsのII-1(1)シートのE11にコピペ、以下それをC23 C24・・・と繰り返しみて、指定のセルまでで処理を止めたいのです。 本当に初心者丸出しですいません。
- mt2008
- ベストアンサー率52% (885/1701)
"お手本"シートのセルとしてO22が3回、C22が2回出てきますが、これは全部O22の間違いですか?それとも、C22が2回出てくるのは正しいのでしょうか?
お礼
ありがとうございます。 はい、おっしゃるとおり、間違えです。 やりたいのはひとつの日報から4つの他のシートに反映させたいのですが、その分け方がO22セルに入れているA~Dのアルファベットなのです。 test.xlsは"C"の日報を抜粋したいのです。 そして、もし”C”であれば、お手本シートのC22をtest.xlsのII-1(1)シートのE11にコピペして、以下それをC23 C24・・・と繰り返しみて、指定のセルまでで処理を止めたいのです。 本当に初心者丸出しですいません。
お礼
ありがとうございます。 すいません、おっしゃるとおり、次はO23とE12という形で最終的にO45とE34まで繰り返し、という意味です。 いろいろ調べたときに確かにcellsが出ていたのですが、イマイチ良く分からず、今ようやく分かりました。 試してみます。