
詳しい方、ご教授ください。
大量にチェックボックスを作成する必要がある為、一つ一つセルを連動せずに、ネットを参考にして以下のマクロで作成しました。①
Sub チェックボックス作成()
With ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(0, 10)
.Value = Not .Value
End With
その後特定の列ごとに一括でチェックボックスのオンオフができるように以下のマクロを作成しました。②
Sub 稼働3()
Dim chk
For Each chk In ActiveSheet.CheckBoxes
If chk.TopLeftCell.Column = 3 Then
chk.Value = False
End If
Next
End Sub
そうすると②のマクロを実行した結果が①の値を返すセルに反映しません。
解決方法がわからずどなたかお知恵を貸してください。
宜しくお願いします。
No.2ベストアンサー
- 回答日時:
No1です。
>リンク先が絶対参照になってしまうのをどうマクロで
>登録するのかわかりませんでした。
個別に登録するので、絶対参照でもかまいません。
不明点が不明なままなので、以下の条件が成立しているものと仮定します。
・チェックボックスは全てフォームコントロールのチェックボックスである。
・シート上にあるチェックボックス全てに、右側10セル目のセルを
リンクセルとして設定しても良い。
・チェックボックスの位置はTopLeftCellを基準としても良い。
※ TopLeftCellとは、チェックボックスを選択した際に表示される選択ボックスの左上に相当するセルを意味します。
チェックボックスの範囲が広いと、実際にチェックボックスがある(ように見える)セルとは位置が異なってしまう可能性がありますが、そのようなことが無いように全てのチェックブックスが設置されていると仮定しても良いという意味です。
上記の仮定が成立しているとして良いなら、以下のマクロを実行することで、
・現在、チェックボックスに設定されているマクロを解除
・各チェックボックスのリンクセルを右へ10セル目に設定
できます。(一度だけ実行すれば良いです)
なお、エクセルのリンクセルの機能なので、セルの表示値はチェックの状態によって TRUE/FALSE の表示になります。
(ご提示の画像のような 0/-1にはなりません)
※ 対象のシートを表示した状態で実行してください。
Sub Sample()
For Each c In ActiveSheet.CheckBoxes
c.OnAction = ""
c.LinkedCell = c.TopLeftCell.Offset(0, 10).Address
c.Value = Not c.Value = 1: c.Value = Not c.Value = 1
Next c
End Sub
何度もありがとうございます!
補足頂いた通りの設定で、記述していただいたものをコピペしてできました!
感謝感謝です。
わかりやすく丁寧に教えて頂き本当にありがとうございました。
No.1
- 回答日時:
こんにちは
ひとまずチェックボックスはTopLeftCellに存在するものと仮定しても良いものと考えました。
(範囲が少し大きいとずれたりするので、必ずしも正確な位置把握にはならない可能性がありますけれど)
ご提示の①のマクロは、ご説明にある通りセルとの連動を行うものではありません。
その時の値を逆転して反映するものです。
説明文にはありませんけれど、各チェックボックスにこのマクロを登録してあるものと想定しました。
(その割には「チェックボックス作成」というネーミングはいただけませんけれど)
また、同じマクロを呼び出せる仕様ということから、チェックボックスはフォームコントロールのチェックボックスであると仮定しました。
(フォームコントロールとActiveXのコントロールでは、扱いが変わります)
以下は、上記の仮定の元ですが・・・
ご提示のマクロ①が実行されるのは、「各チェックボックスがクリックされた時」ですので、マクロから値を変えても①は実行されません。
ですので、ご質問の事象は当然の結果といえます。
そのままの仕組みで処理をしたいのなら、②のマクロでセルの値も併せてセットするようにすれば良いでしょう。
別法として、ActiveXのチェックボックスを利用するなら、値のChangeイベントを取得できますので、マクロで値を変えてもそれに応じて実行することが可能になります。
ただし、イベントの設定が各オブジェクト毎になるので面倒ですが・・
あるいは、素直にリンクセルの機能を使う仕組みにしておけば、②のマクロはそのままでも良くなります。
各チェックボックスにリンクセルを設定するのが面倒なのでしょうから、その作業をマクロで行えば、1度だけ実行しておけばセットを完了できますので、その後チェックボックスを移動しない限り実行する必要はありませんし、①のマクロも必要がなくなります。
ご回答ありがとうございます。とても勉強になります。
VBAの基礎を全く知らない素人が無理やりやろうとしているので、詳しい方からしたらヘンテコな点がたくさんあるのがよくわかりました。
素直にリンクセルの機能を使う仕組みで作成しようと思います、がリンク先が絶対参照になってしまうのをどうマクロで登録するのかわかりませんでした。もしよければ教えていただけるとありがたいです。宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2024/04/10 17:35
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2024/04/03 17:56
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/11 12:55
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/11/08 10:31
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2024/03/26 18:09
このQ&Aを見た人はこんなQ&Aも見ています
-
(VBA)チェックボックスのclickのイベントが、プログラムからの操作でも反応してしまいます。
Visual Basic(VBA)
-
【VBA】シート上の複数のチェックボックスのうちどれか一つでも変更した場合のイベント
Visual Basic(VBA)
-
EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい
Visual Basic(VBA)
-
-
4
選択したセル範囲に入っているチェックボックスを全てOFFにしたい
Excel(エクセル)
-
5
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
6
エクセルでチェックボックスを一列にたくさんつくり、各行にリンク先のセルを設定する場合、どのようにした
Excel(エクセル)
-
7
ユーザ―フォーム上のチェックboxのチェックを外した際のセル反映の取り消し
Excel(エクセル)
-
8
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
9
<EXCEL> セルが非表示になったらチェックボックスも非表示にする方法
Excel(エクセル)
-
10
Excelでチェックボックスを使った列のコピー方法
その他(Microsoft Office)
-
11
VBAでセルを指定した画像のコピー&ペーストを繰り返したい
Excel(エクセル)
-
12
VBA。複数のChangeイベントをまとめる方法
Visual Basic(VBA)
-
13
エクセル マクロ チェックボックス
Excel(エクセル)
-
14
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
15
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
16
エクセルでマクロを使わずに複数のチェックボックスに一括チェックするコマンドボタンを作れますか?
Excel(エクセル)
-
17
A1セルに入力したら、入力時間をA2セルに自動挿入
Excel(エクセル)
-
18
エクセル・VBA CheckBoxのオブジェクト名に変数を使うことは可能でしょうか?
Excel(エクセル)
-
19
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
20
【excelVBA】Findメソッドで検索対象を複数列
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
特定のPCだけ動作しないVBAマク...
-
Excel_マクロ_現在開いているシ...
-
ExcelのVBA。public変数の値が...
-
Excel マクロ VBA プロシー...
-
Excel・Word リサーチ機能を無...
-
エクセルで別のセルにあるふり...
-
エクセルの関数とマクロの区別
-
エクセル VBA実行中のApplicati...
-
オートフィルターとExcelマクロ...
-
エクセルのマクロについて教え...
-
アクセス マクロ クリップボ...
-
TERA TERMを隠す方法
-
EXCEL VBAでマクロの最後でFind...
-
エクセルマクロ 2行とびでAか...
-
エクセルに張り付けた写真のフ...
-
Excelマクロで元データを簡潔な...
-
マクロの一時停止機能について
-
WORD テキストボックスを全ペ...
-
インクルードガードの命名の仕方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
一つのTeratermのマクロで複数...
-
Excel_マクロ_現在開いているシ...
-
メッセージボックスのOKボタ...
-
Excel マクロ VBA プロシー...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
エクセルで別のセルにあるふり...
-
ExcelVBAでPDFを閉じるソース
-
ダブルクリックで貼り付けた画...
-
Excel マクロでShearePoint先の...
-
TERA TERMを隠す方法
-
マクロ実行時、ユーザーフォー...
-
Excelのセル値に基づいて図形の...
-
特定文字のある行の前に空白行...
-
エクセルマクロでワードの一ペ...
-
エクセルで縦に並んだデータを...
-
Excel VBAからAccessマクロを実...
おすすめ情報
画像添付します
画像です
ご回答ありがとうございます。とても勉強になります。
VBAの基礎を全く知らない素人が無理やりやろうとしているので、詳しい方からしたらヘンテコな点がたくさんあるのがよくわかりました。
素直にリンクセルの機能を使う仕組みで作成しようと思います、がリンク先が絶対参照になってしまうのをどうマクロで登録するのかわかりませんでした。もしよければ教えていただけるとありがたいです。宜しくお願いします。