• 締切済み

VBA 特定文字入力による 行のカット 挿入

はじめまして、VBA初心者です。よろしくお願いします。 下記のようなデータがあります。    A   B     C   D   E    F 1  発注日 納入日  名称  数量 単価  請求書C 2 1月15日 1月20日 バルブ  1  1500  C(セル色がオレンジ) 3 1月19日 1月22日 リレー  2  5200  C(セル色がオレンジ) 4 1月21日       ねじ   2  100 5 1月31日      ワッシャ 5 200    6 2月13日      砥石   1  14800    請求書CのF列セルにC文字を入力すると、 以下のイベントが起きるようにしたいです。 1.C入力セルの色がピンク色に変わる 2.C入力セルの行をカットする 3.対象行以上の上段行でC文字が入力されている行の下に挿入する 例えば、F5にC入力すると下記になるようにしたいです。    A   B     C   D   E    F 1  発注日 納入日  名称  数量 単価  請求書C 2 1月15日 1月20日 バルブ  1  1500  C(セル色がオレンジ) 3 1月19日 1月22日 リレー  2  5200  C(セル色がオレンジ) 4 1月31日 2月10日 ワッシャ 5 200  C(セル色がオレンジ) 5 1月21日       ねじ   2  100 6 2月13日      砥石   1  14800    当方でも、下記までコード作成し、エラー無く動くのですが、 Cが既に入ってる上段行の下の行に入力すると (上記F5セルにCを入力すると)1行目にカット行が挿入されてしまいます。 Private Sub Worksheet_Change(ByVal Target As Range)   With Target   If .Row < 4 Then Exit Sub   If .Column <> 10 Then Exit Sub      If .Value <> "" Then   .EntireRow.Cut   .Offset(0, 0).Activate        .End(xlUp).Offset(1).Activate   .EntireRow.Insert Shift:=xlDown      End If   End With    End Sub また、F列セルのC文字をDELETEするとエラーがでます(例えば、F2:F4セル選択で削除)。 他に上記コードでエラーになりうる可能性がありますでしょうか? 大変申し訳ありませんが、 みなさんのご教授を頂きたく、よろしくお願いします。

みんなの回答

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

紛らわしい書き方でした。 End With を省略して書いただけです。 With Target   If .Row < 4 Then Exit Sub   If .Column <> 6 Then Exit Sub   If .Count <> 1 Then Exit Sub   If .Offset(-1).Value <> "" Then Exit Sub   If .Value <> "" Then     Call 行CutInマクロ   End If End With Target.Count <> 1 Then Exit Sub の、意味ということでしたら ブレークポイントを設けて、 複数セルを選択削除 と単独セルの削除 といった操作を確認してください。 ブレークポイントとローカルウィンドウ http://www.kkkxcec.com/supportwlog/archives/2005/07/post_7.html >なお、このコードを複数の同じ条件のシートに使用しようと思っています。 未検証ですが、ThisWorkbook の、SheetChangeイベントを使えばよいかもしれません。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

試した結果ですが、 EntireRow.Insert Shift:=xlDown の行でエラーが発生 If .Value <> "" Then   .EntireRow.Cut   .End(xlUp).Offset(1).EntireRow.Insert Shift:=xlDown End If と、いうようにすると通りました。 >Cが既に入ってる上段行の下の行に入力すると >(上記F5セルにCを入力すると)1行目にカット行が挿入されてしまいます。 一例 With Target   If .Offset(-1).Value <> "" Then Exit Sub >また、F列セルのC文字をDELETEするとエラーがでます >(例えば、F2:F4セル選択で削除)。 一例 With Target   If .Count <> 1 Then Exit Sub

nkgw_4a_t
質問者

補足

早速のご回答ありがとうございます。 上記でうまく動きました。 下記質問あります。すいません初歩的ですが。。 >また、F列セルのC文字をDELETEするとエラーがでます >(例えば、F2:F4セル選択で削除)。 一例 With Target   If .Count <> 1 Then Exit Sub ですが、 このコードの意味することはどういうことですか? なお、このコードを複数の同じ条件のシートに使用しようと思っています。 ですが、対象のワークシートがたくさんあります。 各シートに同じコードを貼り付けていくのは面倒ですし、 サイズも大きくなります。 一つのコードで、複数のワークシートを制御するやり方は無いでしょうか? よろしくお願いします。

関連するQ&A