• 締切済み

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 お願い致します。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんにちは。 ざっと読んでみたところ、そのコードではきちんとロジックが通っていないようですね。 >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のどこかに「価格」文字が入っています。 つまり、ここの最初の設問の部分が、上手く成り立っていないようです。 マクロのコードではなく、どういう内容になっているか、そして、どうしたいのか説明していただいたほうが良いのではないか、と思います。

maki6006
質問者

補足

回答有難う御座います。 元々(1)パターンと(2)パターンは別Bookで実行しておりました。 「価格」はA1の場合限定と可変によりD1やE1となる場合があります。 (1)パターンは「価格」A1の限定 (2)パターンは「価格」可変によりD1やE1(例ではE1に限定) Range("F1").Selectはマクロ記録により 不要でしたね。 説明不足ですみません。

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.5

>*(2)パターン実行時は「価格」セルを探してから。(E1) すいません、意味が解りません セルの位置は cells(1,i) ですが、 (E1)<- は何か意味が有るのでしょうか?

maki6006
質問者

補足

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)
回答No.4

また間違えた。 acticevell.offset(1,0) を activecell.offest(1,0).select にして下さい。

  • Yorisin
  • ベストアンサー率54% (364/663)
回答No.3

ごめんなさい。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

maki6006
質問者

お礼

再度有難う御座います。 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)
回答No.2

For i = 1 To 9  If Cells(1, i) = "価格" Then   If i = 1 Then    MsgBox "(1)パターン"   Else    MsgBox "(2)パターン"   End If  End If Next ------------------------- で、どうでしょう

maki6006
質問者

補足

回答有難う御座います。 *(2)パターン実行時は「価格」セルを探してから。(E1) はどのようにしたらよいでしょうか。

  • Yorisin
  • ベストアンサー率54% (364/663)
回答No.1

勝手に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

maki6006
質問者

お礼

回答有難う御座います。 >activecell.offest(1,0) コンパイルエラーになってしまいました。