
ある申請書式でチェックボックスをあらかじめ用意しておりますが、左ワンクリックもしくは右クリックすればレ点が入るようにVBA言語を作りたいと思っています。
(例)
□昭和
□平成
ちなみにその申請書式ではセル結合も含まれております。
ちなみにフォームコントロールまたはアクティブXからのチェックボックスで一端作成してみましたが
ファイルを閉じたり開いたりするたびに位置がずれていくのでVBAで解決したいです。
VBAに詳しい方教えてください。
よろしくお願いします。
No.6ベストアンサー
- 回答日時:
No.5 の補足
複数セルを選択した状態で右クリックを行うと、一番左上のセルに合わせて全ての選択したセルが変化してしまいます。一番左上のセルのみ変化させるには以下のようにしてください。
-----------------------------------------------------------------------------
☆ シートモジュール
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Select Case Target.Column
Case 1, 3
Application.EnableEvents = False
Cancel = True
Select Case Target(1).Text
Case ChrW(9744)
Target(1).Value = ChrW(9745)
Case ChrW(9745)
Target(1).Value = ChrW(9744)
End Select
Application.EnableEvents = True
End Select
End Sub
-----------------------------------------------------------------------------
☆ 標準モジュール(エラーなどで、イベントが発生しなくなった時の回復用)
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Sub イベント回復()
Application.EnableEvents = True
End Sub
-----------------------------------------------------------------------------
No.8
- 回答日時:
もしも、いまさら「☑」や「☐」を入力するのが面倒なら「置換で検索する文字列」に「□」、「置換後の文字列」に「☐」を入れて「すべて置換」を行えば一括で置換できます。
ちなみになぜ「□」を使わないかというと、それに対する「☑」が無いためです。微妙に大きさや形が違いますよね!

GooUserラック様
今までの数々の回答ありがとうございました。
おかげ様でできました。
「しかく」から変換した□を使用するのではなく、上記のU2610かU2611の文字を使用したら
できました。ありがとうございました。
No.7
- 回答日時:
No.4 の訂正です。
右と左を間違えていました、大変申し訳ございません。×「複数セルを選択状態でクリックしたときは、一番右上のセルのみ対応します。」
〇「複数セルを選択状態でクリックしたときは、一番左上のセルのみ対応します。」
No.5
- 回答日時:
右クリックバージョンで、セル結合に対応し、A列とC列は右クリックメニューが出ないものです。
-----------------------------------------------------------------------------
☆ シートモジュール
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Select Case Target.Column
Case 1, 3
Application.EnableEvents = False
Cancel = True
Select Case Target(1).Text
Case ChrW(9744)
Target.Value = ChrW(9745)
Case ChrW(9745)
Target.Value = ChrW(9744)
End Select
Application.EnableEvents = True
End Select
End Sub
-----------------------------------------------------------------------------
☆ 標準モジュール(エラーなどで、イベントが発生しなくなった時の回復用)
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Sub イベント回復()
Application.EnableEvents = True
End Sub
-----------------------------------------------------------------------------
No.4
- 回答日時:
左シングルクリックバージョンです。
ただし、左シングルクリックのイベントが無いので「SelectionChange」イベントを使用しますので制約がいくつかあります。
-------------------------------------------------------------------------------------
制約①
「入力後にセルを移動する」が有効になっていると、[Enter] のみでチェックマークのセルに移動して来ても反応してしまいます。(元のセルの内容が変更された場合は反応しないようにされています)
制約②
カーソルキーでチェックマークのセルに移動して来ても反応してしまいます。
制約③
クリックが早すぎると誤動作しますので、操作はゆっくりと行ってください。
制約④
複数セルを選択状態でクリックしたときは、一番右上のセルのみ対応します。
-----------------------------------------------------------------------------
☆ シートモジュール
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Private Sub Worksheet_Change(ByVal Target As Range)
無効 = True
End Sub
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If 無効 = False Then
Select Case Target.Column
Case 1, 3
Application.EnableEvents = False
Select Case Target(1).Text
Case ChrW(9744)
Target(1).Value = ChrW(9745)
Cells(Target(Target.Count).Row, Target(Target.Count).Column + 1).Select
Case ChrW(9745)
Target(1).Value = ChrW(9744)
Cells(Target(Target.Count).Row, Target(Target.Count).Column + 1).Select
End Select
Application.EnableEvents = True
End Select
End If
無効 = False
End Sub
-----------------------------------------------------------------------------
☆ 標準モジュール
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Public 無効 As Boolean
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Sub イベント回復()
Application.EnableEvents = True
End Sub
-----------------------------------------------------------------------------
※ もちろんチェックマークには「☑」か「☐」をコピーしてお使いください。
No.2
- 回答日時:
チェックマークには「☑」か「☐」をコピーしてお使いください。
(IMEに単語登録しておいた方が良いと思います)
-----------------------------------------------------------------------------
☆ シートモジュール
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Count <> 1 Then Exit Sub
Select Case Target.Column
Case 1, 3
Application.EnableEvents = False
Select Case Target.Text
Case ChrW(9744)
Target.Value = ChrW(9745)
Cancel = True
Case ChrW(9745)
Target.Value = ChrW(9744)
Cancel = True
End Select
Application.EnableEvents = True
End Select
End Sub
-----------------------------------------------------------------------------
☆ 標準モジュール(エラーなどで、イベントが発生しなくなった時の回復用)
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Sub イベント回復()
Application.EnableEvents = True
End Sub
-----------------------------------------------------------------------------
なお「Cancel = True」は、右クリックメニューをどこで出してよいか判らないので、とりあえず、チェックマークが有る所だけ表示しないようにしています。適当に置き場所を変えてください。
No.1
- 回答日時:
下図のようなものでしょうか?
-----------------------------------------------------------------------------------------
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Select Case Target.Address(False, False)
Case "A1"
If Target.Value = ChrW(9744) & "昭和" Then
Range("A1").Value = ChrW(9745) & "昭和"
Range("A2").Value = ChrW(9744) & "平成"
Else
Range("A1").Value = ChrW(9744) & "昭和"
Range("A2").Value = ChrW(9745) & "平成"
End If
Cancel = True
Case "A2"
If Target.Value = ChrW(9744) & "平成" Then
Range("A1").Value = ChrW(9744) & "昭和"
Range("A2").Value = ChrW(9745) & "平成"
Else
Range("A1").Value = ChrW(9745) & "昭和"
Range("A2").Value = ChrW(9744) & "平成"
End If
Cancel = True
End Select
End Sub
-----------------------------------------------------------------------------------------
・セルは適当に直して下さい。
・フォントによっては文字化けします。
・何も入力しないで「A1」または「A2」セルを右クリックすると下図のようにセットされます。その後、右クリックごとに入れ替わります。

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) Excel・ユーザーフォームの情報を受け渡したい 4 2022/06/08 10:11
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) PDFファイルに日付を名前にして保存したい。 エクセル2019でワークシートに請求書のフォームを作り 2 2023/05/27 11:13
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Excel(エクセル) コントロールにリンクするセルが選択されない 3 2022/06/12 14:37
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- Visual Basic(VBA) エクセル VBA 条件によるセル点滅 お詳しい方 ご教授をお願いします。 Excelファイルにて 現 1 2022/11/03 15:53
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba テキストボックスとリフト...
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
セルをクリック⇒そのセルに入力...
-
エクセル オートフィルタで絞...
-
枠に収まらない文字を非表示に...
-
エクセルの書式設定の表示形式...
-
Excelでのコメント表示位置
-
エクセルのセルの枠を超えて文...
-
数式を残したまま、別のセルに...
-
Excel 例A(1+9) のように番地の...
-
(Excel)数字記入セルの数値の後...
-
EXCEL VBA セルに既に入...
-
エクセルの一つのセルに複数の...
-
エクセル セルの中に縦線が入っ...
-
対象セル内(複数)が埋まった...
-
【エクセル】IF関数 Aまたは...
-
Excelで数式内の文字色を一部だ...
-
【Excel】 セルの色での判断は...
-
excelの特定のセルの隣のセル指...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
スプレッドシートで複数のプル...
-
excelで日付関数の文字列変換の...
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
枠に収まらない文字を非表示に...
-
セルをクリック⇒そのセルに入力...
-
エクセルの一つのセルに複数の...
-
数式を残したまま、別のセルに...
-
(Excel)数字記入セルの数値の後...
-
Excel 例A(1+9) のように番地の...
-
対象セル内(複数)が埋まった...
-
エクセルの書式設定の表示形式...
-
EXCEL VBA セルに既に入...
-
excelの特定のセルの隣のセル指...
-
エクセルのセルの枠を超えて文...
-
Excelでのコメント表示位置
-
エクセル オートフィルタで絞...
-
Excelで数式内の文字色を一部だ...
おすすめ情報
すみません。私の説明不足で。
教えて頂いた内容で実行するとA1とA2のチェックマークがどちらかに付くという
ことになりました。そうではなくて、お互いに影響しあわないようにして且つ例えばA列とC列に
アットランダムに配置しているいくつかの□に対して(セル結合あり)クリックするとレ点の付いた
□になるというふうにするにはどうすればよろしいでしょうか?
もう一つ補足でひとつのセルの中には□のみです。
イメージはA列に□、B列に文字が表示されている感じです。
ですので教えてもらった、昭和とか平成とかは外させてもらいました。