[[20240426162236]] 『Worksheet_Changeイベント』(BB) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『Worksheet_Changeイベント』(BB)

“カレンダー”シートのI6:TU12の範囲で入力規則を設定しています。この中で選択したものは1文字のみ表示させています。

'入力規則の一文字だけ表示
If Intersect(Target, Range("I6:TU12")) Is Nothing Or Target.Count <> 1 Then Exit Sub
Application.EnableEvents = False
Target = Left(Target, 1)

この条件に追加で"カレンダー"シートのE15:E27の範囲で日付(m/d)が入力しI4:TU4(m/d)と同じであれば6行目から12行目に"休"を表示させたいんですがこのコードではできませんでした。どう修正すればいいでしょうか?よろしくお願い致します。

Private Sub Worksheet_Change(ByVal Target As Range)
'入力規則の一文字だけ表示
If Intersect(Target, Range("I6:TU12")) Is Nothing Or Target.Count <> 1 Or Intersect(Target, Range("E15:E26")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Target = Left(Target, 1)

For k = 9 To 500

    For i = 15 To 27
If Sheets("カレンダー").Cells(i, "E").Value = Sheets("カレンダー").Cells(4, k).Value Then

j = k
Sheets("カレンダー").Cells(6, j).Value = "休"
Sheets("カレンダー").Cells(7, j).Value = "休"
Sheets("カレンダー").Cells(8, j).Value = "休"
Sheets("カレンダー").Cells(9, j).Value = "休"
Sheets("カレンダー").Cells(10, j).Value = "休"
Sheets("カレンダー").Cells(11, j).Value = "休"
Sheets("カレンダー").Cells(12, j).Value = "休"
k = j
End If

    Next i
Next k

Application.EnableEvents = True

Application.EnableEvents = True
End Sub

< 使用 Excel:unknown、使用 OS:Windows10 >


> "カレンダー"シートのE15:E27の範囲で日付(m/d)が入力しI4:TU4(m/d)と同じであれば6行目から12行目に"休"を表示させたい

日本語として意味不明です。「てにをは」がおかしいですね。

下記のようなことですか。

"カレンダー"シートのE15:E27の範囲に日付(m/d)を入力したとき、
その日付がI4:TU4範囲に存在すれば、
存在した列の6行目から12行目に"休"を表示させる

もし、違うのなら、意味が伝わる日本語で説明してください。

(hatena) 2024/04/26(金) 18:15:48


すみません。ご指摘の通りです。
"カレンダー"シートのE15:E27の範囲に日付(m/d)を入力したとき、
その日付がI4:TU4範囲に存在すれば、
存在した列の6行目から12行目に"休"を表示させる

よろしくお願いします。
(BB) 2024/04/26(金) 18:29:15


 一致するセルを検索する場合は、Application.Match を使うとシンプルです。

 Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    '入力規則の一文字だけ表示
    If Not Intersect(Target, Range("I6:TU12")) Is Nothing And Target.Count = 1 Then
        Target = Left(Target, 1)
    End If

    Dim t As Range, c As Range, i As Variant
    Set t = Intersect(Target, Range("E15:E27"))
    If Not t Is Nothing Then
        For Each c In t
            i = Application.Match(c, Range("I4:TU4"), 0)
            If Not IsError(i) Then
                Range("I4").Offset(2, i).Resize(7).Value = "休"
            End If
        Next
    End If
    Application.EnableEvents = True
 End Sub

(hatena) 2024/04/27(土) 08:49:52


ありがとうございました。
(BB) 2024/04/27(土) 11:54:22

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.