• ベストアンサー

Excelチェックボックスのリンクするセル一括

Excelでチェックボックスのリンクするセルを一括設定したいです。 sheet1に複数のチェックボックスを作成し、それぞれのリンクするセルをsheet2に入れたいのですが、チェックボックスが数10個あるので、1つづつやっていると手間がかかります。 例 sheet1のB2のリンクするセルをsheet2のB2 sheet1のB3のリンクするセルをsheet2のB3 sheet1のB4はsheet2のB4 … 一括でやる方法(多分VBA)はわかりますか。

noname#255842
noname#255842

質問者が選んだベストアンサー

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (454/691)
回答No.2

もし添付画像のように、チェックボックスの名前が Check Box 1 Check Box 2 Check Box 3 ... といった1からの連番で、 Check Box 1 のリンクするセルがsheet2のB2 Check Box 2 のリンクするセルがsheet2のB3 Check Box 3 のリンクするセルがsheet2のB4 ... という設定になるのであれば、 以下のコードでイケルと思います。 Sub sample() Dim sh As Shape For Each sh In ActiveSheet.Shapes sh.Select Selection.LinkedCell = "Sheet2!$D$" & (Val(Right(sh.Name, 2)) + 1) Next sh End Sub もしチェックボックスの名前からリンクするセルを求めることが困難であれば、 Sub abc()  MsgBox Range("B2").Top  MsgBox Range("B2").Height End Sub といったコードで、B2セルの開始位置と高さを提示してもらえば 別なコードを提示できると思います。

noname#255842
質問者

お礼

できました。ありがとうございます。

その他の回答 (2)

  • HohoPapa
  • ベストアンサー率65% (454/691)
回答No.3

https://okwave.jp/qa/q9964807.html で紹介したコードを応用した、 後記コードはいかがでしょうか? Sub sample()  Dim sh As Shape  Dim LineNum As Long    For Each sh In ActiveSheet.Shapes   If Left(sh.Name, 9) = "Check Box" Then    '何行目にあるかを調べる    LineNum = SearchR(sh.Top + (sh.Height / 2))    'リンクセルを設定    sh.Select    Selection.LinkedCell = "Sheet2!$D$" & Format(LineNum, "0")   End If  Next sh End Sub '縦位置から該当行番号を取得する関数 Function SearchR(MyTop As Double) As Long  Const MaxRows = 100 '最大行数  Dim r As Long  For r = 1 To MaxRows   If ((Cells(r, 1).Top < MyTop) And _     (Cells(r, 1).Top + Cells(r, 1).Height > MyTop)) Then    SearchR = r    Exit Function   End If  Next r End Function

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

下にドラッグアンドコピー

noname#255842
質問者

お礼

それができればいいのですがね。。。 関数ならそれでやってました。 回答ありがとうございます。

関連するQ&A

  • チェックボックスのリンクするセル一括設定

    似たような質問を送ったのですが、 B2のチェックボックスのリンクがsheet2のB2 B3のチェックボックスのリンクがsheet2のB3 ... というのはできたのですが、 D2のチェックボックスのリンクがsheet2のD2 ... というVBAを作ると、B列のリンクが消えてしまいます。 どのようなVBAを書けばよいでしょうか。

  • エクセルのチェックボックスとかについて

    エクセルのチェックボックスとかについて エクセルのセル上にある複数のチェックボックスやラジオボタンを一括で消去する方法はありますか? 1つづつケ消していく方法しか分からずに困ってます。

  • エクセルでマクロを使わずに複数のチェックボックスに一括チェックするコマンドボタンを作れますか?

    エクセルで商品管理のシートを作成しています。 10店舗ほど支店があるので、取扱店舗をチェックボックスで 選択できるようにしていますが、全店取扱の商品がかなり有るので 一括で10個のチェックボックスにチェック出来る様にしたいのです。 最初はコマンドボタンのLINKEDCELLにチェックボックスで参照している セルが連動するように数式を入れていたのですが、このやり方だと ボタンを使わずにチェックボックスを使うと参照セルの数式が 「TRUE/FALSE」に上書きされてしまい、以後ボタンと連動しなくなってしまいます。 出来ればコマンドボタンのLINKEDCELLプロパティを複数セルに指定したいのですが、可能でしょうか? ※「A1:G1」等と設定してみたのですが、連動するのは「A1」のみでした… VBAを使用すれば良いのでしょうが、まったく知識が無いので時間的に厳しい状況です。 どなたかお分かりの方がいらっしゃればご助言お願いいたします。

  • エクセル2003のチェックボックス一括解除について

    シート上にある、フォームで作成したチェックボックスに付けられたチェックを、 コントロールツールボックスで作成した、「ボタン」をクリックして、 一括に、チェックを外したいと思うのですが、 「ボタン」にVBAを記述して、このようなことは可能でしょうか? ご教授いただけます方、どうぞよろしくお願い申し上げます。

  • エクセルシート上の[チェックボックス]を一括消去する方法を教えて下さい。

    表示]→[ツールバー]→[フォーム]の、[チェックボックス]で作成した、エクセルシート上の[チェックボックス]を一括消去する方法を教えて下さい。右クリック選択して1個ずつ切り取り消去していますが、列削除や編集→クリア→すべて でも消去できず、たくさんあるときは手間がかかります。

  • エクセルチェックボックス

    エクセルのコントロールボックスでチェックボックスを使用したいんですがうまく使えません ユーザーフォームは使用せず、セルに直接貼り付けを考えてます このチェックボックスは複数使用したいと思っています 具体的な例としてチェックを入れたらセルにリンクして数字を動かしたい チェックしたら1 はずしたら2を入れる IF関数との連結を考えています 当方の使用環境はWindows Vista , エクセル2007を使用しています よろしくお願いします

  • Excelのチェックボックスの有無で複数セルの表示を○に変えたい

    Excelのチェックボックスのチェックを付けて、複数個所の表示を変えたいと考えています。 チェックボックスにチェックをつけたら、複数のセルに○が表示されるようにしたいのですが、設定の仕方が分かりません。 どなたか教えてください。 (現在一つのセルにだけ○を表示させる事は出来ています) 【現在】 (1)チェックボックス「1」を配置 (2)以下の設定。 コントロールの書式設定→コントロールタブ選択。→リンクするセルでa1を指定→ok ⇒チェックボックス操作で、a1にtrue・falseが表示されている。 (4)b1に数式を入力する。=IF(A1=TRUE,"○","ー") (5)チェックが入った場合はb1に○が表示されている。 【やりたい事】 (1)チェックボックス「1」にチェックが入った場合、b1,d1,f1,h1,j1,l1,等の複数セルに○を表示させたい (2)チェックボックス「2」、を同様に作成し、チェックを入れた場合、 b1,d1,のセルに○を表示させたい。 (チェックボックス「1」にチェックが入ってない場合でも「2」にチェックが入れば、○を表示させたい)

  • エクセルVBAで、シート上で結合されたセルに一つだけチェックボックスを

    エクセルVBAで、シート上で結合されたセルに一つだけチェックボックスを作成したいです。 以前こちらの別の方の質問で、選択されているセルにチェックボックスを作成するプログラムが紹介されており、同じようにやってみたところ、セルが結合されていない場合は問題ないのですが、 セルが複数結合されている場合、結合されているセル分チェックボックスが出来てしまいます。 (例えば、エクセルのシート上で、A3セルからA6セルまでが結合されていた場合、合計4つチェックボックスが結合セル内に出来てしまいます) 結合セル内には一つしかチェックボックスを作りたくありません。 どうしたらよいでのしょうか? 以前紹介されていた、チェックボックスを作るプログラムは下記のようなものでした。 よろしくお願いいたします。 Sub sample() Dim cb As CheckBox For Each cb In ActiveSheet.CheckBoxes cb.LinkedCell = cb.TopLeftCell.Address Next cb End Sub

  • エクセルVBAでのチェックボックス操作

    エクセルを利用した、VBAで困っています。 所定のsheetに埋め込まれたチェックボックスに対して、 別sheet内のセルの値を参照し、結果をオン、オフという 操作を行いたいのですが、チェックボックスに対するVBAでの指定方法 が分かりません。 イメージとしては (1)Sheet1内にチェックボックスがある。  該当チェックボックスは7個のチェックボックスで構成されており  それぞれにchb1~chb7といったオブジェクト名がある。 (2)sheet2のA1セルに特定の値が入っていればチェックボックス(chb1)  がオン値がなければオフのまま (3)sheet2のB1セルに特定の値が入っていればチェックボックス(chb2)  がオン値がなければオフのまま という感じです。 先方より指定された様式なのでsheet1の内容や書式を変更することが出来ないので、なんとか埋め込まれたオブジェクトを操作したいのですが・・・ 良い方法があれば教えてください。

  • エクセルVBA チェックボックスのリンク先を条件により変更

    こんなことは可能でしょうか? sheet1,sheet2,sheet3,は同じフォームで、それぞれチェックボックスがあり、リンク先をそれぞれのシートのA1に設定しているとします。 sheetdataではそれぞれのシートの情報をVBAを使用して表示させています。(例えばsheet1からsheetdataに行くと、sheet1の情報がsheetdataに表示され、sheet2からだとsheet2の情報がsheetdataに更新されます) ここで、sheetdataにも同じチェックボックスがあるとします。 このチェックボックスに条件をつけて、sheetdataにsheet1の情報が表示されているときはsheet1のA1にリンクし、sheet2が表示されているときはsheet2のA1にリンクすると言ったことはできるのでしょうか? 要するに、sheetdata上でチェックボックスのON/OFFを変更した際、その元となるシートも変更できるようにしたいのです。 VBAでif関数などを使って、リンク先のシートを変更できればいいのですが・・・。コントロールの書式設定ではIf関数を使ってリンクするセルを指定することはできませんよね? どうかよろしくおねがいします。

専門家に質問してみよう