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

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

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

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

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

  • ベストアンサー
  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.2

こんばんは。 一例です。 適当に応用してください。 Sub test1()   Dim Ws1 As Worksheet   Dim Ws2 As Worksheet   Dim i As Integer   Dim myKey      myKey = Array("特定値1", "特定値2", "特定値3", "特定値4", _           "特定値5", "特定値6", "特定値7")      Set Ws1 = Worksheets("Sheet1")   Set Ws2 = Worksheets("Sheet2")      For i = 1 To 7     If Ws2.Cells(1, i).Value = myKey(i - 1) Then       Ws1.OLEObjects("chb" & i).Object.Value = True     Else       Ws1.OLEObjects("chb" & i).Object.Value = False     End If   Next i      Set Ws1 = Nothing   Set Ws2 = Nothing End Sub

deka001
質問者

お礼

>ka_na_de様 ありがとうございます。 さっそく試してみたところ、正常にオブジェクトは選択されているような動作をしているのですが、チェックがオン状態になりません。 おそらくif文の条件指定と思いますので、いろいろと試行錯誤してみます。

その他の回答 (2)

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.3

こんにちは。 サンプルプログラムでは、   myKey = Array("特定値1", "特定値2", "特定値3", "特定値4", _           "特定値5", "特定値6", "特定値7") で、それぞれの文字列で比較しています。 もし、特定値が数値であれば、   myKey = Array(1,2,3,4,5,6,7) のように数値で指定してください。 また、特定値が複数の値であったり、ある範囲の値の場合は 改良が必要です。

deka001
質問者

お礼

>ka_na_de様 ご支援ありがとうございました。 無事に期待通りの動作を実現することが出来ました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

まずは「マクロの記録」でチェックボックスをチェック状態にするコードを生成させる。 そのうえで、シート2!A1をIF文で判定して値を設定するコードを書く。

deka001
質問者

お礼

>bin-chan様 間違えて質問捕捉に記載していました。 何回か「マクロの記録」をやってみたのですが、まったく記録されずです。 質問記載が不十分だったかも知れませんが、チェックボックスはどうやらコントロールオブジェクトを使用されているようです。

deka001
質問者

補足

>bin-chan様 何回か「マクロの記録」をやってみたのですが、まったく記録されずです。 質問記載が不十分だったかも知れませんが、チェックボックスはどうやらコントロールオブジェクトを使用されているようです。

関連するQ&A

  • エクセルVBA チェックボックスについて

    VBA初心者です。 あるシート(セル)に作った入力用チェックボックスにチェック(TRUE)を入れたときに、別シートの特定の位置に楕円を引きたいのですが、どのようなやり方があるでしょうか。 使い方は入力用シートと印刷用シートを分けて、入力用シートのチェックボックスの状態で印刷用シートの特定のセルに選択したことがわかるように楕円をつけたいというものです。 よろしくお願いします。

  • Excelのチェックボックスについて

    Excelのチェックボックスを使用して、チェックをONにした時はセルの値を表示、OFFにした時はセルの値を非表示にしたい場合、具体的にどうすれば良いか教えてください。

  • Excel VBA 条件を満たしたセル上にあるチェックボックス

    Excel2003を使用しています。 Sheet1のN4セルの値と同じ値が入力されているセルをSheet2のA列(A1:A50)から検索し、その行のB列に配置されているチェックボックスにチェックをつけたいのですが、そのチェックをつけたいチェックボックスを指定する方法がわかりません。 検索してヒットしたセルの1つ右隣のセルにチェックボックスが配置されているということで myNum = Sheets("Sheet1").Range("N4").Value Rng = Sheets("Sheet2").Range("A1:A50").Find(myNum) としたとして、Rng.Offset(, 1).Address と、チェックをつけたいチェックボックスの左上のセルアドレスを比較すればいいのかな?と思っているのですが、そのチェックボックスをどのようにしたら指定できるでしょうか? また、別の方法もありましたら、アドバイスをいただけると嬉しいです。 よろしくお願いします。

  • エクセルのチェックボックスのことで

    初歩的なことですが教えてください。エクセル2003でチェックボックスを作成しました。 配置してあるセルの書式設定の保護からロックをはずしシート保護をかけるのですが、操作すると保護されています。のエラーとなってしまいます。  グループ化してオブジェクトにしてロックをはずしてもエラーとなってしまいます。 チェックボックスの場合、シート保護との関係で何かありますか? どなたかよろしくお願いいたします。 ちなみにチェックボックスの範囲が隣のセルにまたがっていることも想定しましたが違いました。  よろしくお願いいたします。

  • エクセル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関数を使ってリンクするセルを指定することはできませんよね? どうかよろしくおねがいします。

  • エクセルVBA チェックボックスで;;

    下記のような表を作っているんです・・・     A   B   C    D    1  日付  名前  評価   2  1日   あ   A   □ 3  2日   い   B   □ 4  2日   う   A   □ 5  4日   え   D   □ というような感じです(まだ右と下は項目いっぱいあります) Dのセルにチェックボックスをつけてチェックが入った物のみを別なシートにコピーしてそのページを印刷させ印刷し終わったら印刷した行の色を変えたいのです。 色々試してみたのですが、チェックボックスのON OFF判断もままならない状況でした;; どなたか宜しくお願いいたします。

  • ExcelのVBAのチェックボックスについて(初心者です)

    こんばんは。 今、VBAのチェックボックスに関して勉強中です。 チェックボックスを配置しているセルを指定することは 可能なのでしょうか? チェックボックスにチェックをつけた際、 その行の背景色を変更するという処理を行いたいのです。 どなたか、アドバイスをお願いします。

  • エクセルVBA チェックBoxとテキストBox

    VBA勉強中の者です。エクセル2010使用 前回も同じような件で質問したのですが、入力フォームを作成中。 数量表の入力ホームなので、出来るだけキーボードのテンキーでの操作が出来るようにと考えております。 チェックボックスのon/off でテキストボックスの入力の可否を出来るようにしています。これが7組あるとします。(チェックボックス1に対してテキストボックス1に数値が入力出来るように) 質問(1) チェックが入っていれば、呼応したテキストボックスへエンターキーで移動。 チェックを入っていなければ、エンターキーで次のチェックボックスへ移動するようにしたいのです。 質問(2) シートへの転記の際は、7組の間に『、』カンマを入れたいのですが、当然チェックのないものは必要ないので、カンマが要らない事になります。初心者の考えでは単純に条件式をその通り数書くことになるのかと思うとゾッとしますが、少しでも条件式を減らす方法があれば、ご教授願います。 分かり難くて、すみません。

  • EXCEL VBA チェックボックスについて

    仕事上システムを作り始めたVBA初心者です。すみませんが、ご享受下さい。 ユーザーフォームにてチェックボックスを作成後、セルへ転載するものを作っております。 その中でチェックボックスが15個ほどあり、onの場合にはその行の25列目に"有"、OFFの場合は"無"と表示させたいのです。 現状はTRUEといった表示はされるところまではいったのですが、その先がどうしてもできません。 見よう見まねで始めた初心者ですので、コードもどこが必要かもあまりわからないのが現状です。お答え頂く上で必要であればアップしますので、よろしくお願い致します。尚、作ろうとしてるのはデータベースで設備項目に有、無をつける予定です。

  • エクセル:チェックボックスで他シートの図形を操作。

    質問させていただきます。 現在、エクセルにて sheet1に帳簿内容入力画面 sheet2に入力画面の項目を反映した印刷用帳簿 というものを作成しています。 その中で、sheet1にチェックボックスを設置し、チェックONでsheet2任意の場所に オートシェイプの楕円を表示(チェックOFFで楕円は消える)させたいのですが、 うまくいきません。 試しにsheet1上にチェックボックス・楕円を設置し、 ------------------------------------------- Sub test01() With ActiveSheet If .CheckBoxes(Application.Caller).Value = xlOn Then .Shapes("楕円1").Visible = True Else .Shapes("楕円1").Visible = False End If End With End Sub ------------------------------------------- とイベント設定をしたところ、sheet1上ではチェックON/OFFで楕円の 表示/非表示ができました。 しかし、実際sheet1にチェックボックス、2に楕円と設置すると「オブジェクトが存在しません」と エラーになってしまいます。 IF関数のような(シート名!セル名)的に楕円の場所を指定しなければいけないのかな?と 思い、色々試してみたのですが実現できませんでした。 勉強不足で恐縮なのですが、詳しい方アドバイスをいただきたいです。

専門家に質問してみよう