Excel VBA 質問スレッド №2008 (解決済)

イベントプロシージャでセル複数選択でエラー

投稿者 : 初心者K     投稿日時 : 2024/09/05(Thu) 22:25:43     OS : Windows 10     EXCEL : Excel 2019
イベントプロシージャでクリックで
平日〇土日祝●3行目”d”4行目”aaa”の
横型カレンダー
G5:G7がセル結合で31日分で
このセルの中に◯●が入ります
複数セル選択の時エラーが発生するのですが何処をどうすればエラーが無くなりますか?どうぞよろしくお願いします。
IF Not Intersect(Range(”G5:AH7”).target.Item(1)) Is Nothing Then
IF Target.not.Offset(-1,0).text =”土”Or
Target.Offset(-1,0).text = ”日” Or
Target.Offset(-1,0).text = ”祝” Or Then
Target = ”●”
Else
Target = ”◯”
End If
Offsetで行下げで6列のプロシージャです
Offset(-6,0) Offset(-11,0)Offset(-16,0)
Offset(-21,0)Offset(-26,0)
何処が問題でしょうか?

スポンサーリンク
[返信 1] Re : イベントプロシージャでセル複数選択でエラー
投稿者 : さんこう     投稿日時 : 2024/09/05(Thu) 23:14:39
>複数セル選択の時エラーが発生するのですが

複数セル選択でなくても、エラーが発生します。

タイプミスらしきところを修正すれば、エラーはでません(動作は怪しいですが)。


>Offsetで行下げで6列のプロシージャです

こちらは、意味がわかりません。


タイプミスのない正しいコードと、どの行でどんなエラーがでるのか提示してみてはいかがでしょうか。

[返信 2] Re : イベントプロシージャでセル複数選択でエラー
投稿者 : 初心者K     投稿日時 : 2024/09/06(Fri) 06:14:41
■[返信 1] さんこうさん(2024-09-05 23:14:39)の記事
> >複数セル選択の時エラーが発生するのですが

> 複数セル選択でなくても、エラーが発生します。

> タイプミスらしきところを修正すれば、エラーはでません(動作は怪しいですが)。


> >Offsetで行下げで6列のプロシージャです

> こちらは、意味がわかりません。


> タイプミスのない正しいコードと、どの行でどんなエラーがでるのか提示してみてはいかがでしょうか。
> さんこうさんありがとうございます!
ここではPCが無いので職場で確認します。
又、よろしくお願いします!

[返信 3] Re : イベントプロシージャでセル複数選択でエラー
投稿者 : ピロリ     投稿日時 : 2024/09/06(Fri) 09:39:50
■[質問] 初心者Kさん(2024-09-05 22:25:43)の記事
> 複数セル選択の時エラーが発生するのですが・・・
ご提示のコードでは推定できませんけど、選択された複数セルを処理したいのであれば、 For Each ~ で
1セルずつ抽出して処理すべきでしょう。
良く分かりませんが、下のようなことがしたいってことでしょうか? 外していたらご免なさい。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim C As Range
    For Each C In Target                    '選択範囲から1セルずつ抽出して、
        If Not Intersect(Range("G5:AK34"), C) Is Nothing And _
           C.Row Mod 5 = 0 Then                     '処理すべき範囲・行なら、
            If Cells(4, C.Column).Text = "土" Or _
               Cells(4, C.Column).Text = "日" Or _
               Cells(4, C.Column).Text = "祝" Then  '4行目が土日祝なら、
                C = "●"
            Else
                C = "◯"
            End If
        End If
    Next C
End Sub

[返信 4] Re : イベントプロシージャでセル複数選択でエラー
投稿者 : 初心者K     投稿日時 : 2024/09/07(Sat) 15:08:42
■[返信 1] さんこうさん(2024-09-05 23:14:39)の記事
> >複数セル選択の時エラーが発生するのですが

> 複数セル選択でなくても、エラーが発生します。

> タイプミスらしきところを修正すれば、エラーはでません(動作は怪しいですが)。


> >Offsetで行下げで6列のプロシージャです

> こちらは、意味がわかりません。


> タイプミスのない正しいコードと、どの行でどんなエラーがでるのか提示してみてはいかがでしょうか。

エラーの表現が悪かったようです。
Range指定以外の所で◯が出来ます
極端すべてのセルに◯が入ります。
質問が悪くすいません。

[返信 5] Re : イベントプロシージャでセル複数選択でエラー
投稿者 : さんこう     投稿日時 : 2024/09/07(Sat) 19:03:22
>Range指定以外の所で◯が出来ます
>極端すべてのセルに◯が入ります

そのように書かれた(らしい)コードなので、正しい動作です。

どうなるのがご希望の動作なのか示されていないのですが、

クリック(というか、選択)した範囲の判定と、

処理(書き込み)先の指定が異なっているので、

それを修正すればよろしいかと思います。

[返信 6] Re : イベントプロシージャでセル複数選択でエラー
投稿者 : jindon     投稿日時 : 2024/09/07(Sat) 19:14:44
■[質問] 初心者Kさん(2024-09-05 22:25:43)の記事
> イベントプロシージャでクリックで
> 平日〇土日祝●3行目”d”4行目”aaa”の
> 横型カレンダー
> G5:G7がセル結合で31日分で
> このセルの中に◯●が入ります
> 複数セル選択の時エラーが発生するのですが何処をどうすればエラーが無くなりますか?どうぞよろしくお願いします。

G3:AK3 に日付が入力されていて書式を "d" にしている。
G4:AK4 にG3:K3と同じ日付があり書式を"ddd"にして曜日が表示されており、中には祝もある。
G5:G6 は結行されていてAK列まで各列の5:6行が夫々結合されている。

上記で間違えなければ。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim rng As Range, r As Range
    Set rng = Intersect(Target, [g5:ak5])
    If rng Is Nothing Then Exit Sub
    For Each r In rng
        If r(0).Text Like "[土日祝]" Then
            r = "●"
        Else
            r = "〇"
        End If
    Next
End Sub

あとの
> Offsetで行下げで6列のプロシージャです
から先は何をしたいのか詳しく説明してください。
あり得ないコードです。

[返信 7] Re : イベントプロシージャでセル複数選択でエラー
投稿者 : 初心者K     投稿日時 : 2024/09/07(Sat) 20:09:18
■[返信 3] ピロリさん(2024-09-06 09:39:50)の記事
> ■[質問] 初心者Kさん(2024-09-05 22:25:43)の記事
> > 複数セル選択の時エラーが発生するのですが・・・
> ご提示のコードでは推定できませんけど、選択された複数セルを処理したいのであれば、 For Each ~ で
> 1セルずつ抽出して処理すべきでしょう。
> 良く分かりませんが、下のようなことがしたいってことでしょうか? 外していたらご免なさい。

> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
> Dim C As Range
> For Each C In Target '選択範囲から1セルずつ抽出して、
> If Not Intersect(Range("G5:AK34"), C) Is Nothing And _
> C.Row Mod 5 = 0 Then '処理すべき範囲・行なら

> If Cells(4, C.Column).Text = "土" Or _
> Cells(4, C.Column).Text = "日" Or _
> Cells(4, C.Column).Text = "祝" Then '4行目が土日祝なら、
> C = "●"
> Else
> C = "◯"
> End If
> End If
> Next C
> End Sub
ピロリさん
ありがとうございます!
問題解決です
感謝です!!



[返信 8] Re : イベントプロシージャでセル複数選択でエラー
投稿者 : 初心者K     投稿日時 : 2024/09/07(Sat) 22:46:44
さんこうさん
ありがとうございます!
今後、又お願いするかと思いますが
その時は、よろしくお願いします!!

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-07-05 06:46:26 )
タイトルとURLをコピーしました