プロが教える店舗&オフィスのセキュリティ対策術

勤務表作成してます。
A1に「ON・OFF」を表示します。
「ON」のときに、ダブルクリックで、上のセルを表示、右クリックで「1」を表示します。
「OFF」のときは、コンテキストメニュ-(通常の操作)が出来るようにしたいのですが、ON.OFFの切り替え操作のVBAがわかりません。
よろしくお願いします。

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

ActiveCell = ActiveCell.Offset(-1, 0).Value



If Target = Range("$A$1") Then
Cancel = True

If Range("$A$1").Value = "イベントON" Then
Range("$A$1").Value = "イベントOFF"
Else
Range("$A$1").Value = "イベントON"
End If

If Range("$A$1").Value = "イベントOFF" Then
Exit Sub
End If

End If
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
ActiveCell = "1"

' If Target = Range("$A$1") Then
' Cancel = True
'
' If Range("$A$1").Value = "イベントON" Then
' Range("$A$1").Value = "イベントOFF"
' Else
' Range("$A$1").Value = "イベントON"
' End If

If Range("$A$1").Value = "イベントOFF" Then
Exit Sub
End If
End Sub

A 回答 (3件)

ONとOFFの値をcommandbuttonやオートシェープ


もしくは画面から見えないセルなどに保持すれば
あまり悩むことなくできると思いますが・・・
 あと、cancelを実行するタイミングは
どの命令の前か後か、プロシージャを抜けるまたは
終了するときにcancelをどうすればいいのか
よく考えてみてください。
 適当に書き始めてそれにこだわると
解決方法がわからなくなりがちです。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
Commandbuttonの方法もあるのですね。
まだ、初歩なので、考えてみます。
ありがとうございました。

お礼日時:2009/05/11 00:07

こんな感じで


ON.OFFの切り替えは片方でよいと思うので
どちらか削ってください

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$A$1" Then
Select Case Target.Value
Case "イベントON"
Target.Value = "イベントOFF"
Case "イベントOFF"
Target.Value = "イベントON"
End Select
Cancel = True
Exit Sub
End If
If Range("A1").Value = "OFF" Then Exit Sub
If Target.Row = 1 Then Exit Sub
Target.Value = Target.Offset(-1).Value
Cancel = True
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$A$1" Then
Select Case Target.Value
Case "イベントON"
Target.Value = "イベントOFF"
Case "イベントOFF"
Target.Value = "イベントON"
End Select
Cancel = True
Exit Sub
End If
If Range("A1").Value = "OFF" Then Exit Sub
Target.Value = 1
Cancel = True
End Sub

参考まで
    • good
    • 0

#2の修正です



両方イベントの
>If Range("A1").Value = "OFF" Then Exit Sub

If Range("A1").Value = "イベントOFF" Then Exit Sub
へ変更してください

ごめんね
    • good
    • 0
この回答へのお礼

hige_082様
いつも詳しくご回答ありがとうございます。
同内容を質問しないように注意します。
回答いただいた、VBAを操作いたしますと、イベントON、OFF関係なしに
右クリックで「1」を入力、ダブルクリックで上のセルを入力いたします。「OFF」のとき、通常の操作、「ダブルクリックではカーソル表示、右クックでコンテキストメニュー表示したいのですが、可能でしょうか。

お礼日時:2009/05/11 20:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!