Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Target.Count <> 1 Then Exit Sub
If Not IsNumeric(Target.Value) Then Exit Sub
If Target.Value <> 1 Then Exit Sub
If Intersect(Target, Range("W:W, AC:AC, AQ:AQ, AW:AW")) Is Nothing Then Exit Sub
i = Target.Column - 6 '
Debug.Print Target.Address & " " & Target.End(xlToLeft).Column
If i < 1 Then Exit Sub
Target.Offset(0, i - Target.Column).Resize(1, 5).Copy
Application.EnableEvents = False
Target.PasteSpecial Paste:=xlPasteAll
Application.CutCopyMode = False
Application.EnableEvents = True
Target.Select
end sub
上のコードはW列、AC列、AQ列、AW列に1と入力すると、入力セルから
みて6つ左から5つのデータがコピーされるマクロです。ここでAK列、BE列からみて8つ左から5つのデータをコピーする
条件を付加したいのですがうまくいきません。
If Intersect(Target, Range("AK:AK, BE:BE")) Is Nothing Then Exit Sub
i = Target.Column - 8 '
↑ このコードを追加する感じです。
この条件を付加しなければうまく動くのですが、付加して何とか動かしたいと考えています。
何か良い方法があればおしえていただけると幸いです。
No.2ベストアンサー
- 回答日時:
ふつーに丁寧に作成していけば,今の延長でも別にムズカシイ作業じゃありません。
private sub worksheet_Change(byval Target as excel.range)
dim i as long
if target.count > 1 then exit sub
if target <> 1 then exit sub
if not application.intersect(target, range("W:W,AC:AC,AQ:AQ,AW:AW")) is nothing then
i = -6
elseif not application.intersect(target, range("AK:AK,BE:BE")) is nothing then
i = -8
else
exit sub
end if
application.enableevents = false
target.resize(1, 5).value = target.offset(0, i).resize(1, 5).value
application.enableevents = true
end sub
他にも例えばSelect caseを使い,Target.columnで仕分けてみるなんてやり方もアリかもしれませんね。
ご回答ありがとうございます。完璧なコードで非常に感謝致します。何より背景の色も
コピーされていて困っていたのですがそれもなくなっており、次のセルを選択するように
できていたのですごく嬉しいです。本当に感謝致しますm(_ _)m
No.1
- 回答日時:
>ここでAK列、BE列からみて8つ左から5つのデータをコピーする
という事は
ここでAK列からみて8つ左から5つのデータをコピーする
AD~AH をコピー
BE列からみて8つ左から5つのデータをコピーする
AX~BC をコピー
という事でしょうか
Offsetのこだわらず
Rnage("AD"& Target.ROW).Resize(1, 5).Copy
とか
Rnage("AD"& Target.ROW & ":AH" & Target.Row).Copy
といった記述がわかりやすくないでしょうか。
ご回答ありがとうございます。若干ずれはありますがイメージととしては
そのような感じでした。たしかにそうですよね。参考にさせていただきますm(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで重複した値のセルに色付けをしたい 1 2022/11/02 16:12
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
- Visual Basic(VBA) 【再投稿】VBAで動作しなくて困っています 2 2022/10/11 11:05
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Excel(エクセル) エクセルのイベントプロシージャーでF列の最終行のセルの入力をトリガーにしたいのですが 1 2022/10/14 09:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】エクセルにかいてあ...
-
エクセルの行の抽出について質...
-
Excel初心者です。 詳しい方、...
-
スプレッドシート クエリ関数 1...
-
別シートからの文字を変更
-
Excel初心者です。 詳しい方、...
-
Excel 2019 のピボットテーブル...
-
MOS365 Excel Expert / Excel R...
-
エクセルの数式で教えてください。
-
数学 Tan(θ)-1/Cos(θ)について...
-
4つのパターンを表示するEXACT...
-
各ページの1番上の表示について
-
INDIRECTを使わず excelで複数...
-
関数を教えて下さい。
-
Excelのグラフ軸について
-
Excel:一部のフォントでセルの...
-
エクセルで指定した日付、店舗...
-
Excel ウインドウ枠の固定をす...
-
EXACT関数とIF関数の組み合わせ...
-
写真のコピー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報