詳しい方、ご教授ください。
大量にチェックボックスを作成する必要がある為、一つ一つセルを連動せずに、ネットを参考にして以下のマクロで作成しました。①
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で各列の+"と"o"の合計数を数え3行目と4行目に入力したい"
Visual Basic(VBA)
-
現在のブックを閉じないで、マクロ抜きの(現在のブックの)コピーを作成したい
Visual Basic(VBA)
-
Vba SelStart、SelLen教えてください教えてください
Visual Basic(VBA)
-
-
4
Excel-VBAのmsgBox()の不思議
Visual Basic(VBA)
-
5
VBA 複数条件の分岐処理の上手な方法
Visual Basic(VBA)
-
6
VBAに詳しい方教えてください。
Visual Basic(VBA)
-
7
VBA SaveChanges 上書きされない
Visual Basic(VBA)
-
8
エクセルVBAについて
Visual Basic(VBA)
-
9
時間によってファイル名が変わるエクセルをほかのエクセルでデータを参照する方法
Excel(エクセル)
-
10
VBAの計算で@が出てしまう件
Visual Basic(VBA)
-
11
VBAで大量のファイルをシート名ごとに転記やらいろいろしたい!
Visual Basic(VBA)
-
12
VBA レジストリの値の読み方について教えてください
Visual Basic(VBA)
-
13
Vba 実数および実数タイプの変数について教えてください
Visual Basic(VBA)
-
14
Sub 要具ライフ() ActiveSheet.Cells.Find(what:=TOPゴム")."
Visual Basic(VBA)
-
15
Excel VBA 定義されたプロージャ名、関数名の取得
Visual Basic(VBA)
-
16
WORD VBA プログラム修正をお願いします。
Visual Basic(VBA)
-
17
エクセルについて
Visual Basic(VBA)
-
18
【ExcelVBA】インデックスが有効範囲にありません。の理由が分かりません
Visual Basic(VBA)
-
19
VBAの質問になります Userform内で
Visual Basic(VBA)
-
20
エクセルの合計を自動で表示させたいです
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
エクセルのマクロについて教え...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
Excel・Word リサーチ機能を無...
-
エクセル VBA実行中のApplicati...
-
ファイルが見つからない時、ス...
-
ユーザーフォームを起動しなが...
-
エクセル マクロの同時実行に...
-
ExcelのVBAを使ってタイトル行...
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
-
Excel VBAからAccessマクロを実...
-
ExcelVBAでPDFを閉じるソース
-
VBAマクロ非表示が遅いので早く...
-
非表示の列をすべて削除するマクロ
-
一つのTeratermのマクロで複数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
-
EXCELのVBAでRange("A1:C4")を...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
マクロ実行時、ユーザーフォー...
-
Excelのマクロについて教えてく...
-
ソース内の行末に\\
おすすめ情報
画像添付します
画像です
ご回答ありがとうございます。とても勉強になります。
VBAの基礎を全く知らない素人が無理やりやろうとしているので、詳しい方からしたらヘンテコな点がたくさんあるのがよくわかりました。
素直にリンクセルの機能を使う仕組みで作成しようと思います、がリンク先が絶対参照になってしまうのをどうマクロで登録するのかわかりませんでした。もしよければ教えていただけるとありがたいです。宜しくお願いします。