- 締切済み
If ~Then文
2つの方法をIf ~Then文により処理したいと思います。 A1~I1のどこかに「価格」文字が入っています。 その「価格」がA1なら(1)パターンを実行、それ以外なら(2)パターンを実行 *(2)パターン実行時は「価格」セルを探してから。(E1) (1)パターン m = ActiveSheet.Range("A3").End(xlDown).Row Range("A1:E" & m).Select Range("B1:E" & m).Select Selection.ClearContents Range("F1").Select (2)パターン n = ActiveSheet.Range("A3").End(xlDown).Row Range("E1:I" & n).Select Selection.Cut Range("A1").Select ActiveSheet.Paste Range("F1").Select お願い致します。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 ざっと読んでみたところ、そのコードではきちんとロジックが通っていないようですね。 >A1~I1のどこかに「価格」文字が入っています。 >Range("A1:E" & m).Select >Range("B1:E" & m).Select A列で見つかって、なぜ、E列まででしょうか? B列、C列、E列、~ I列としていく、どこかでロジックがヘンではありませんか? そして、なぜ、F1を選択するのでしょうか? ------------------------------------------- Range("E1:I" & n).Select Selection.Cut Range("A1").Select ActiveSheet.Paste Range("F1").Select こちらも同様にヘンですね。消したE列からI列を選択して、それをA列に貼り付けしようとしています。 >A1~I1のどこかに「価格」文字が入っています。 つまり、ここの最初の設問の部分が、上手く成り立っていないようです。 マクロのコードではなく、どういう内容になっているか、そして、どうしたいのか説明していただいたほうが良いのではないか、と思います。
- ASIMOV
- ベストアンサー率41% (982/2351)
>*(2)パターン実行時は「価格」セルを探してから。(E1) すいません、意味が解りません セルの位置は cells(1,i) ですが、 (E1)<- は何か意味が有るのでしょうか?
補足
For i = 1 To 9 If Cells(1, i) = "価格" Then If i = 1 Then m = ActiveSheet.Range("A3").End(xlDown).Row Range("A1:E" & m).Select Range("B1:E" & m).Select Selection.ClearContents Range("F1").Select Else n = ActiveSheet.Range("A3").End(xlDown).Row Range("E1:I" & n).Select Selection.Cut Range("A1").Select ActiveSheet.Paste Range("F1").Select End If End If Next 例ではRange("E1:I" & n).Select E1と限定してしまっております。 E1 → cells(1,i)にするには という事なんですが 解りにくく申し訳御座いません。
- Yorisin
- ベストアンサー率54% (364/663)
また間違えた。 acticevell.offset(1,0) を activecell.offest(1,0).select にして下さい。
- Yorisin
- ベストアンサー率54% (364/663)
ごめんなさい。offsetの後にselectを入れ忘れました。 下記でOKと思います。 if range("A1").value="価格" then パターン(1) else i=0 do activecell.offest(1,0) i=i+1 loop while(activecell.value<>"価格" or i<9) if activecell.value="価格" then パターン(2) end if end if
お礼
再度有難う御座います。 if range("A1").value="価格" then パターン(1) else i=0 do activecell.offest(1,0).Select i=i+1 loop while(activecell.value<>"価格" or i<9) if activecell.value="価格" then パターン(2) end if end if >activecell.offest(1,0).Select デバッグになってしまいました。
- ASIMOV
- ベストアンサー率41% (982/2351)
For i = 1 To 9 If Cells(1, i) = "価格" Then If i = 1 Then MsgBox "(1)パターン" Else MsgBox "(2)パターン" End If End If Next ------------------------- で、どうでしょう
補足
回答有難う御座います。 *(2)パターン実行時は「価格」セルを探してから。(E1) はどのようにしたらよいでしょうか。
- Yorisin
- ベストアンサー率54% (364/663)
勝手にExcelと判断します。 きれいなルーチンじゃないけど、これでどうでしょうか? if range("A1").value="価格" then パターン(1) else i=0 do activecell.offest(1,0) i=i+1 loop while(activecell.value<>"価格" or i<9) if activecell.value="価格" then パターン(2) end if end if
お礼
回答有難う御座います。 >activecell.offest(1,0) コンパイルエラーになってしまいました。
補足
回答有難う御座います。 元々(1)パターンと(2)パターンは別Bookで実行しておりました。 「価格」はA1の場合限定と可変によりD1やE1となる場合があります。 (1)パターンは「価格」A1の限定 (2)パターンは「価格」可変によりD1やE1(例ではE1に限定) Range("F1").Selectはマクロ記録により 不要でしたね。 説明不足ですみません。