windowsXP Excel2000 でマクロを作成している超初心者です。
あるサイトの暦で日付を入力するマクロですが、1枚のシートに
1)と 2)を併記して実験したところ正常に表示できました。
2)をシングルクリックで表示したいのですができません。なぜでしょうか?
2)はいかにも稚拙です。もっと整理したいのですが方法が分かりません。以上2点よろしくご指導ください。
--------------------------------------------------------------------
1)シングルクリックで UserForm1を正常に起動できました。
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'シングルクリックで表示
Cancel = True 'プロシージャ終了後に表示されるショートカットメニューの非表示
If Target.Row > 22 And Target.Column > 2 And Target.Column < 4 Then
UserForm1.Show
End If
If Target.Row > 22 And Target.Column > 13 And Target.Column < 15 Then
UserForm1.Show
End If
End Sub
-------------------------------------------------------------------------
2)ダブルクリックでしか正常に表示されません。
'Private Sub Worksheet_SelectionChange(ByVal Target As Range)’ 起動しない
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) '起動した
Cancel = True 'プロシージャ終了後に表示されるショートカットメニューの非表示
If Target.Row > 23 And Target.Column > 1 And Target.Column < 3 Then
Call ShowCalendarFromRange2(Target)
End If
If Target.Row > 23 And Target.Column > 12 And Target.Column < 14 Then
Call ShowCalendarFromRange2(Target)
End If
If Target.Row > 12 And Target.Row < 21 And Target.Column > 12 And Target.Column < 14 Then
Call ShowCalendarFromRange2(Target)
End If
If Target.Row > 12 And Target.Row < 21 And Target.Column > 14 And Target.Column < 16 Then
Call ShowCalendarFromRange2(Target)
End If
If Target.Row > 12 And Target.Row < 21 And Target.Column > 16 And Target.Column < 18 Then
Call ShowCalendarFromRange2(Target)
End If
If Target.Row > 12 And Target.Row < 21 And Target.Column > 18 And Target.Column < 20 Then
Call ShowCalendarFromRange2(Target)
End If
End Sub
-----------------------------------------------------------------------
3)'これがサイトにあった例で、これを元に上のスクリプトを作りました。
'Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' 複数セル選択時は無視
' If Target.Count <> 1 Then Exit Sub
' A列以外は無視(今回サンプルの例)
' If Target.Column <> 1 Then Exit Sub
' カレンダーフォームを起動する
' Call ShowCalendarFromRange2(Target)
'End Sub
---------------------------------------------------------------
こんにちは。
以下はダブルクリックした時のイベントないで、シングルクリックでは実行されません。
>Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
以下の方法では如何でしょうか。参考にしてください。
Dim tR As Long
Dim tC As Integer
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'シングルクリックで表示
Cancel = True 'プロシージャ終了後に表示されるショートカットメニューの非表示
tR = Target.Row
tC = Target.Column
If tR > 22 And (tC > 2 And tC < 4) Or (tC > 13 And tC < 15) Then
UserForm1.Show
Exit Sub
End If
If (tR > 23 And (tC > 1 And tC < 3) Or (tC > 12 And tC < 14)) Or _
(tR > 12 And tR < 21 And ((tC > 12 And tC < 14) Or (tC > 14 And tC < 16) Or _
(tC > 16 And tC < 18) Or (tC > 18 And tC < 20))) Then
Call ShowCalendarFromRange2(Target)
End If
End Sub
お礼
pkh4989 様 素早いご回答ありがとうございました。おかげさまで自分の思うとおりのマクロができました。この見事なコードで実行することが出来嬉しい限りです。今後ともよろしくお願いします。