
No.3ベストアンサー
- 回答日時:
ChangeプロシージャのTargetには内容が変更されたセルの
位置情報が入っています。
しかし、ActiveCellには現在カーソルのある(太枠表示)セルの
位置情報が入っています。
Activeプロシージャは、Enterキーが押されたり、他のセルがクリックされたり
した時に発生します。ということは、ActiveCellは常に「Changeイベントが発生したセル」とは
異なっています。
よって、メッセージボックスは表示されません。
> A列、B列、C列、D列のアクティブの行のセルが変更されたらコード実行
「セルが変更」されるとは、
「内容が変更されたセルからフォーカスが別のセルに移」
らないとなりません。つまりアクティブセルは常に
「変更を加えたセル」以外になりますので、
ちょっと意味がわからないのですが、
下記のようではダメでしょか??
' A列~D列で変更があった場合
Dim r&, c&
c = target.Column
If 1 =< c And c <= 4 Then
MsgBox r
End If
' A列~D列の3行目から5行目のセルで変更があった場合
Dim r&, c&
r = Target.Row
c = target.Column
If (3 <= r And r <= 5) and (1 =< c And c <= 4) Then
MsgBox r
End If
などなど...
回答ありがとうございます。
どうやら無事動いているようです。
追加質問なのですが、
Dim r&, c&
c = Target.Column
Dim w As Integer
Dim Mark As String
w = ActiveCell.Row
Mark = Cells(w - 1, 2)
If 2 <= c And c <= 16 Then
If Mark = "" Then
Call A
ElseIf Mark = "休" Then
Call B
End If
End If
とあり、Aの方は無事ちゃんと動きました。
Bの方が以下のようになっています。
Dim w As Integer
w = ActiveCell.Row
w = w - 1
Cells(w, 11) = "あ"
Cells(w, 14) = "い"
これで無限ループになってしまうのです。
なぜなのでしょうか?
よろしくお願いします。
No.4
- 回答日時:
うむむ、ハマりましたね、ドツボに。
> Cells(w, 11) = "あ"
セルに値を代入していますね。
ということはこの時点で「Changeイベント」が発生して、
「Cahngeプロシージャ」に制御が飛び込んできますが
そこでまたCall B が発生して、
セルに値を代入してChangeイベントが発生して...ひい~っ!
ということではないでしょうか!?。
どのような仕様のプログラムかわからないのでなんともいえませんので
とりあえず手がかりを提示しておきます。
・ひとつの案
Changeイベントを拾わずに、SelectionChangeイベントにする。
具体的には、今 Worksheet_Change()プロシージャに書かれているコードを
Worksheet_SelectionChange()プロシージャに移し変える。
・もうひとつの案
フラグ用にパブリック変数を作り、Call B が発生するときは
フラグを立てて、対象範囲を処理中はChangeプロシージャに再度飛び込んできても
無処理で抜けるようにする。
SelectionChangeイベントを使う方法は、作成するプログラムの目的や仕様に
よってはうまくいかないかもしれません。
また、フラグで制御は結構面倒くさいんですが...(ワラシこれちか知ゅらないの、たはは)
こういった問題で別に質問を立てたほうが
色々なアイデアを出してくれる「すごい」人がいるかもしれませんねぇ
No.1
- 回答日時:
Dim r&, c&
r = Target.Row: c = Target.Column
If r = ActiveCell.Row And c >= 1 And c <= 4 Then
みたいなかんじですかね
回答ありがとうございます。
こういうことでいいのでしょうか?
Private Sub worksheet_change(ByVal target As Range)
Dim r&, c&
r = target.Row: c = target.Column
If r = ActiveCell.Row And c >= 11 And c <= 16 Then
MsgBox r
としてみたんですが、メッセージボックスが表示されませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの自動更新のタイミングについて 1 2022/07/20 16:12
- Excel(エクセル) エクセルのイベントプロシージャーでF列の最終行のセルの入力をトリガーにしたいのですが 1 2022/10/14 09:36
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 4 2023/05/26 10:43
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) EXCELのセル相互同期用のVBAでの不具合 3 2022/08/10 11:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
office ワードで段組みで分けた...
-
同様の質問になってしまいます...
-
テキストボックスの文字列を上...
-
ワード(office365)のワード、...
-
ワードの隠し文字について。 隠...
-
テスト問題などにある四角い空...
-
マイクロソフトワードのアプリ...
-
正の字の入力
-
パソコンを修理にだすときにワ...
-
エクセルExcelで作った表をワー...
-
ワード レイアウトの崩れ
-
群像新人賞って、400字詰め換算...
-
縦使い・横書きは 画像のような...
-
国税局への申告用紙印刷
-
グラフを挿入した時の線のスタ...
-
<OFFICE>フォントを教えてく...
-
文章の途中に四角い穴埋めをつ...
-
パソコンのワードでいつもは、...
-
どのフォントを使用しているの?
-
ワードが白と黒が反転してしま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスの文字列を上...
-
国税局への申告用紙印刷
-
ワードが白と黒が反転してしま...
-
縦使い・横書きは 画像のような...
-
マイクロソフトワードのアプリ...
-
テスト問題などにある四角い空...
-
群像新人賞って、400字詰め換算...
-
文章の途中に四角い穴埋めをつ...
-
Office365 ワードのアイコンが...
-
win10ですがワードやメモ帳など...
-
正の字の入力
-
我慢の左上に文字が表示される現象
-
ワード PDF化した際、背景の...
-
パソコンのワードでいつもは、...
-
エクセルExcelで作った表をワー...
-
ワード 表の不要な縦線がどうし...
-
パソコンを修理にだすときにワ...
-
グラフを挿入した時の線のスタ...
-
ワードの隠し文字について。 隠...
-
自分で作成したワードのテンプ...
おすすめ情報