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

『エクセルでセルをクリックすると“○”と入力』という質問があり、皆さんの回答がわかりやすかったので、自分も一つ質問させて下さい。

同じシート内であるセルをクリックすると〇、また他のセルをクリックすると✔マークが入るようにするにはどうしたらいいでしょうか?

これで〇が入るのは確認できました。
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Target.Column = 1 And Target.Row = 1 Then
If Target.FormulaR1C1 = "○" Then
Target.FormulaR1C1 = ""
Else
Target.FormulaR1C1 = "○"
End If
End If
End Sub

A 回答 (2件)

#1さんのを見ないで作ってみましたが、やはり、◯、✔、[なし]になってしまいますね。


>Worksheet_SelectionChange
これは、正確にはクリックで起動するのではありません。

'シートモジュール-タブキー-右クリック-コードの表示/貼り付ける
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 Cancel = True
 With Target
  Select Case .Value
   Case "": .Value = "◯"
   Case "◯": .Value = ChrW(&H2713)
   Case ChrW(&H2713): .Value = ""
   Case Else
  End Select
 End With
End Sub
    • good
    • 0

こんばんは!



質問があまりに抽象的なので回答がなかなかつかないような気がします。

VBAの場合は具体的なセルの範囲(配置)などが判らないとココでコードを記載しても無意味になり
二度手間・三度手間になる事がほとんどです。

>あるセルをクリックすると・・・
>また他のセルをクリックすると・・・
では一番大切な部分が判りませんね。

そして、「○」 → 「✓」 → 「空白」 の順に変化すればよいのか?
それともあるセルでクリック → 「○」 → 他のセルでクリック → 「✓」 といった感じをお望みなのか?
その辺も判りません。

とりあえず
あるセル → A列限定とします。(「○」か「空白」)
他のセル → B列限定とします。(「✓」か「空白」)

尚、クリックでの操作は間違ったセルを選択した時点でも実行されてしまいますので、
ダブルクリックの操作としてみました。
↓のコードをシートモジュールにし、AまたはB列をダブルクリックしてみてください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("A:B")) Is Nothing Then Exit Sub
Cancel = True
With Target
If .Column = 1 Then
If .Value = "" Then
.Value = "○"
Else
.ClearContents
End If
Else
If .Value = "" Then
.Value = ChrW(10003)
Else
.ClearContents
End If
End If
End With
End Sub

とりあえずはこの程度で・・・m(_ _)m
    • good
    • 0
この回答へのお礼

tom04さん、回答ありがとうございます。
エクセルなかなか難しいです。
プログラム的な事はわからないので、そっくりそのままコピーさせてもらいました。
ダブルクリックの方が誤入力防止になりますね。気づきませんでした。

ありがとうございます!

お礼日時:2017/11/13 12:16

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

このQ&Aを見た人はこんなQ&Aも見ています