詳しい方、ご教授ください。
大量にチェックボックスを作成する必要がある為、一つ一つセルを連動せずに、ネットを参考にして以下のマクロで作成しました。①
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Vba SelStart、SelLen教えてください教えてください
Visual Basic(VBA)
-
VBAで各列の+"と"o"の合計数を数え3行目と4行目に入力したい"
Visual Basic(VBA)
-
現在のブックを閉じないで、マクロ抜きの(現在のブックの)コピーを作成したい
Visual Basic(VBA)
-
-
4
VBA レジストリの値の読み方について教えてください
Visual Basic(VBA)
-
5
Excel-VBAのmsgBox()の不思議
Visual Basic(VBA)
-
6
WORD VBA プログラム修正をお願いします。
Visual Basic(VBA)
-
7
VBAの計算で@が出てしまう件
Visual Basic(VBA)
-
8
Vba 実数および実数タイプの変数について教えてください
Visual Basic(VBA)
-
9
VBAで大量のファイルをシート名ごとに転記やらいろいろしたい!
Visual Basic(VBA)
-
10
Excel VBA 選択範囲の罫線色の変更プロージャの動作速度の改善について
Visual Basic(VBA)
-
11
VBAに詳しい方教えてください。
Visual Basic(VBA)
-
12
VBA 複数条件の分岐処理の上手な方法
Visual Basic(VBA)
-
13
VBA SaveChanges 上書きされない
Visual Basic(VBA)
-
14
時間によってファイル名が変わるエクセルをほかのエクセルでデータを参照する方法
Excel(エクセル)
-
15
エクセルVBAについて
Visual Basic(VBA)
-
16
エクセルについて
Visual Basic(VBA)
-
17
【マクロ】ファイル名の変更について
Excel(エクセル)
-
18
【マクロ】1つのマクロの中に、ブック指定とシート指定が混在しても良いのですか?
Visual Basic(VBA)
-
19
VBA ユーザーフォーム ボタンクリック後にセルにフォーカス
Visual Basic(VBA)
-
20
VBA 複数のエクセルから一つのエクセルに貼り付ける
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
メッセージボックスのOKボタ...
-
Excel マクロ VBA プロシー...
-
ExcelのVBA。public変数の値が...
-
エクセルで特定の列が0表示の場...
-
TERA TERMを隠す方法
-
一つのTeratermのマクロで複数...
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
-
Excel マクロでShearePoint先の...
-
マクロ実行時、ユーザーフォー...
-
エクセルで別のセルにあるふり...
-
wordを起動した際に特定のペー...
-
【EXCEL VBA】オートシェイプを...
-
特定文字のある行の前に空白行...
-
VBA アドインについて お詳しい...
-
Excel VBAからAccessマクロを実...
-
VBAのIF分で時間指定の条件式の...
-
エクセルのマクロでワードの任...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
Excel マクロでShearePoint先の...
-
ExcelVBAでPDFを閉じるソース
-
特定文字のある行の前に空白行...
-
マクロ実行時、ユーザーフォー...
-
wordを起動した際に特定のペー...
-
エクセルで別のセルにあるふり...
-
ソース内の行末に\\
-
マクロで空白セルを詰めて別シ...
-
【EXCEL VBA】オートシェイプを...
-
エクセルのマクロをセルの値に...
おすすめ情報
画像添付します
画像です
ご回答ありがとうございます。とても勉強になります。
VBAの基礎を全く知らない素人が無理やりやろうとしているので、詳しい方からしたらヘンテコな点がたくさんあるのがよくわかりました。
素直にリンクセルの機能を使う仕組みで作成しようと思います、がリンク先が絶対参照になってしまうのをどうマクロで登録するのかわかりませんでした。もしよければ教えていただけるとありがたいです。宜しくお願いします。