アプリ版:「スタンプのみでお礼する」機能のリリースについて

過去の質問を参考に『セルをダブルクリックすると"○"と入力される』というマクロを○⇒●⇒-⇒  ⇒○⇒・・・として使っているんですが、ダブルクリックの度にセルが直接入力の状態(縦の棒の点滅)になってしまい、一度他のセルをクリックしないと次へ進めずに困っています。

良い方法ってあるのでしょうか?

ちなみに使用しているマクロは
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Const rng As String = "A1:A3" '処理対象のセル範囲
If Not Application.Intersect(Target, Range(rng)) Is Nothing Then
If Target.Value = "" Then
Target.Value = "○"
ElseIf Target.Value = "○" Then
Target.Value = "●"
ElseIf Target.Value = "●" Then
Target.Value = "-"
Else
Target.ClearContents
End If
End If
End Sub
というものです。
よろしくお願いします。

A 回答 (4件)

End If と End If の間に、



Target.Offset(, 1).Select
とか、
Cancel = True
SendKeys ("{ENTER}")
と書き加えて見てください。
    • good
    • 0
この回答へのお礼

すばやい回答、ありがとうございました。
参考にさせてもらいます。

お礼日時:2007/04/27 20:05

こんにちは。



既に回答は出ていますが、今回のような場合はSelect文を使ったほうが見やすいかもそう。。。

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

 Const rng As String = "A1:A3"

 If Application.Intersect(Target, Range(rng)) Is Nothing Then Exit Sub

 Cancel = True '▲▲▲ これで編集モード解除になる

 Select Case Target.Value
   Case ""
     Target.Value = "○"
   Case "○"
     Target.Value = "●"
   Case "●"
     Target.Value = "-"
   Case Else
     Target.ClearContents
 End Select

End Sub
'---------------------------------------------

以上です。
 
    • good
    • 0
この回答へのお礼

ありがとうございました。
勉強になりました。

お礼日時:2007/04/27 20:07

マクロを使わずにこの方法でもできます!


(1)全セルを入力OKに設定する。
全セルを範囲指定→書式→保護→「ロック」のチェックを外し→OK
(2)直接入力だけを禁止したいセルを範囲指定→書式→保護→「ロック」にチェックを入れる→OK・・・2箇所意所の場合は設定を繰り返す。
(3)ツール→保護→シートの保護→OK

上記で設定で、(2)の部分のセルをクリックしても、入力禁止のエラーが発生し入力できない。
指定セルの、入力禁止・計算式やマクロの解除を禁止できる。
    • good
    • 0
この回答へのお礼

私のやり方が間違っているのか、この方法だとダブルクリックまでロックされてしまいました。
回答、ありがとうございました。

お礼日時:2007/04/27 20:13

こんにちは。



こんな感じにしてください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Const rng As String = "A1:A3" '処理対象のセル範囲
If Application.Intersect(Target, Range(rng)) Is Nothing Then Exit Sub
  If Target.Value = "" Then
    Target.Value = "○"
  ElseIf Target.Value = "○" Then
    Target.Value = "●"
  ElseIf Target.Value = "●" Then
    Target.Value = "-"
  Else
    Target.ClearContents
  End If
    Cancel = True  'ここに入れます。
End Sub
    • good
    • 0
この回答へのお礼

とても丁寧に答えていただき、感謝しています。
これをそのまま使わせていただきます。
ありがとうございました。

お礼日時:2007/04/27 20:08

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