【Excel】チェックボックス情報取得【VBA】

このQ&Aのポイント
  • ExcelでのVBAを使用して、チェックボックスの情報を取得する方法について説明します。
  • A1セルに1つのチェックボックスの状態に応じて適切なデータを入力する方法と、複数のチェックボックスの場合にはそれぞれの状態を示すデータを入力する方法を紹介します。
  • 詳しい手順は、参考にしたサイトのVBAコードを利用して説明します。
回答を見る
  • ベストアンサー

【Excel】チェックボックス情報取得【VBA】

お疲れ様です。 チェックボックスの現状を取得したいです。 ネットで調べていて色々見つけたのですが、 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_checkbox.html このサイトの方のVBAが参考になるかと思ったのですが、 頭が回らず、良く分からない状態です。 チェックボックスは A B C D E F と6つ作成しており、 その隣に Atext Btext Ctext Dtext Etext Ftext というテキストボックスを作成しています。 ひとつのみチェックがついていた場合と 複数チェックがついていた場合の出力を変更したいと思っています。 例 Aのみにチェックがついていた場合 A1のセルに「a1」と入力 Bのみにチェックがついていた場合 A1のセルに「a2」と入力 A、Bにチェックがついていた場合 Atext~Ftextまでのどこまでデータが入っているかを確かめる A1のセルに「a1100」(Dまで入っていた場合) A1のセルに「a11000」(Eまで入っていた場合) データ出力は、必ず頭に「a」を入力します。 一つだけチェックが入っている場合は、上から順番にAならa1、Bならa2,Cならa3と入力 複数チェックが入っている場合は、テキストボックスに入っているデータの個数を確認し、 「a」と、選択されたデータを「1」テキストボックスに入っているけど選択されていないデータを「0」 とA1セルに表記します。 チェックボックスとテキストボックスの名称は、上から A  AText B  BText C  CText D  DText E  EText F  FText という名称になっています。 ぐちゃぐちゃした文章で大変申し訳ありませんが、回答よろしくお願いいたします。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

では、適当に…… ・チェックが1つもない時は「A0」と表示します。 ・テキストが空でもチェックが入っていればデータありとして扱います。  例:ABCにチェック、テキストはBだけあり→「A111」と表示 Private Sub CommandButton1_Click()   Dim sAF, i, sData, sOne, nCount, nCMax, nTMax, nUMax, nData, vChk, sTxt      sAF = Split("A,B,C,D,E,F", ",") 'A~Fを配列に入れる   nCMax = 0 'チェック有りの最後   nTMax = 0 'テキスト有りの最後   nCount = 0 'チェックの総数   sData = "" 'セルA1に貼り付ける文字列(頭のAなし)   For i = 0 To UBound(sAF)     vChk = Me.Controls(sAF(i)).Value     sTxt = Me.Controls(sAF(i) & "Text").Value          sOne = "0"     'チェック有り     If vChk = True Then       sOne = "1"       nCount = nCount + 1       nCMax = i + 1     End If     'テキスト有りの最後確認用     If sTxt <> "" Then nTMax = i + 1     sData = sData & sOne   Next i   If nCount <= 1 Then     'チェックが1個以下の場合     sData = Format(nCMax, "0")   Else     'チェックが2個以上の場合     'チェックとテキストの、より後に有る方を使用     nUMax = nCMax     If nTMax > nCMax Then nUMax = nTMax     sData = Left(sData, nUMax)   End If   Range("A1") = "A" & sData End Sub

satoron666
質問者

お礼

回答ありがとうございました! やっと目的のものが作れそうな気がします。

その他の回答 (1)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

補足願います。 チェックがされているが、対応するテキストボックスが空の時は? 例えば、チェックボックスABCにチェックが入っていて、テキストボックスBにしか文字列が入っていない場合。 チェックもテキストも入っていない場合は? それとも、そういう入力は出来無いようになっている?

satoron666
質問者

補足

回答ありがとうございます。 ATextに何も入力が無い場合は、 Exit Sub で終了する設定にしていますが、 それ以外のプログラムは入れていません。 必要だとは思いますが、 どんどんプログラム長くなってしまいそうなのと、 今の知識レベルだとそこまで難しいかと思いまして・・・ できれば、mt2008様がおっしゃるような プログラムも入れたいと思います。 知恵をお借りできればと思います。 よろしくお願いいたします。

関連するQ&A

  • チェックボックスの配置順にテキストボックスに表示

    accessのフォームにチェックボックスを配置し チェックされたものをテキストボックスに表示させています。 ■A ■B □C □D ■E となっていたら、テキストボックスに A B E と表示させています。 チェックボックスの真ん中に新しくチェックボックスを追加すると テキストボックス内には、追加したものが最後に表示されていまいます。 ■A ■B □C ■Z □D ■E とすると、テキストボックスには A B Z E と表示させたいのに A B E Z 表示されてしまいます。 いちから順番どおりに作り直せばいいのですが かなりたくさんチェックボックスがあるうえに 上司から、この先も何度も作り直しを指示されそうです・・・。 できれば簡単に、配置した順にテキストボックスに表示されるようにしたいです。 チェックボックスの配置順に テキストボックスに文字を表示させる方法を教えてください!

  • テキストボックスの内容でチェックボックスの既定値

    下記質問の続きです。 http://okwave.jp/qa/q8186736.html Accessで、 チェックボックスにチェックを入れることで テキストボックスに文字を表示させています。 そのフォームをいったん閉じると、 テキストボックスには 前回チェックボックスで入力した文字が反映されているのですが チェックボックスのチェックがすべて外れてしまっています。 フォームを開いたとき、 テキストボックスの内容によって、 配置したチェックボックスにチェックを入れたいです。 テキストボックスに 「A C」 と入っていたら ■A □B ■C □D □E としたいです。 (開いたあとは、また別の所にチェックを入れたり外したりします) チェックボックスのプロパティ「既定値」のところに IF([テキストボックス] like "*"&"A"&"*",ture,false) などとしてみたのですがうまういきませんでした。 ご教授お願いいたします!

  • チェックボックスとテキストの値

    初心者で勉強中です。できるだけわかりやすくしていただけると助かります。 前提として、 (1)フォーム名:Aform フォーム名:Bformと2つのフォームがあります。 (2)Aformには、Atextというテキストボックスがあります。 (3)Bformには、複数のチェックボックスがあります。  テキストボックスの名前は、CB1、CB2・・・と連番になっています。  aspでデータを書き込みながらチェックボックスを作成しているため、チェックボックスの数はその都度変わります。 ここからが質問なのですが…行いたい事は、 (1)チェックボックスは、1つ以外チェックできないようにし、2つ目のチェックでアラートを出し、チェックをできないようにする。 (2)チェックボックスのvalueをAformのAtextにセット (3)チェックボックスを外した時には、AformのAtextはクリア。 ※aformのAtextは、input type=hidden でもいいと考えています。 現在、調べ調べて、チェックボックスのOnClickで2つ以上でアラートは出て、Atextにも値はセットされるのですが、チェックボックスをクリアした時に、Atext値が残ってしまっています。 どなたか、教えていただけないでしょうか?

  • サブフォームにチェックボックス・・・・

    accessにて・・・ サブフォームに表示させるレコードと連結したチェックボックスは付けられますか? たとえば・・・ (B→チェックボックスです) (サブフォームイメージ) |項目A |項目B |項目C |項目D B |Aデータ|Bデータ|Cデータ|Dデータ B |Aデータ|Bデータ|Cデータ|Dデータ みたいな感じで、レコードセレクタ代りにチェックボックスを付ける感じで・・・ やってみたんですが、すべてにチェックが入ってしまいます・・・やはり無理なのでしょうか?教えてください

  • Excel2000VBA テキストボックス内での改行で・・・

    ユーザーフォームにテキストボックスを作り、 テキストボックス内での改行をできるように設定します。 このテキストボックスに入力されたデータをセルに入力すると セルでは改行したところに「・」が入ってしまいます。 例えばテキストボックスに  こんにちは[改行]  いい天気ですね と入力して、これをsheet1のA1に入力します。すると、  こんにちは・  いい天気ですね と入力されてしまいます。 この「・」を表示しないようにする方法はありますか? よろしくお願いします。

  • セルに入力されたら  チェックボックスにチェック

    タイトルのとおりなのですが、A列にチエックボックスをA・B・C・Dと 作り、たとえばC1にBと入力されたらチェックボックスのBにチェックを 入れたいです。

  • 入力チェック

    過去ログを探してみたのですが、該当する記事がなかったので、 質問させて頂きます。よろしくお願いします。 5種類位の商品をチェックボックスで選択し(複数選択可)、 チェックボックスで選択した商品の数量を、テキストボックス で入力、またはプルダウンで選択できるようにしたいと考えて います。 その際、商品の種類または数量のどちらかが未選択、または未 入力で送信しようとしたときにアラートを出したいのですが、 どういうスクリプトを書けばよいのでしょうか? やりたいことです。 種類 A・B・C・D・E ←チェックボックスで選択(複数選択可) 数量 A・B・C・D・E ←テキスト入力かプルダウンで選択 種類Aを選択して、数量Aを入力していない場合にアラートを出す。 その逆の場合もアラートを出す。同じようにB・C・D・Eもアラー トが出るようにしたい。 方両とも未入力または入力済みの場合は、アラートは出さない。 分りずらい部分がありましたら追記致しますので、 何卒よろしくお願い致します。

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

    エクセルVBAを勉強中で、入力フォーム作成に挑戦中です。(エクセル2010) 質問ですが、 数量表の入力ホームなので、出来るだけキーボードのテンキーでの操作が出来るようにと考えております。 チェックボックスを使用し、テキストボックスの入力制限を掛けていますが、チェックボックス上でキーボード操作(1とかAを押す)を行うとチェックが入るように出来るのでしょうか? よろしくお願いします。

  • エクセルVBAでコマンドボタンをクリックし、連続入力する方法。

    初めまして。仕事の書類を作っている最中に壁に当たったのでご質問させていただきました。 早速ですが本題に入りたいと思います。 ユーザーフォームを使用してテキストボックスを使い3つのテキストボックスに入力を終えた後にコマンドボタンを押してセルB2,C3,D4に表示するとします。(下図のように) A B C D E 1 2 あ い う 3 4 5 6 このとき、また違う文字をテキストボックスに入力し、登録した場合、 B列,C列,D列の最終行+1にどんどん入力していくというコードは調べてわかったのですが、下図のように上下とも既に文字列が入っていて、この間セル(B3:B6,C3:C6,D3,D6)に上から順にコマンドボタンを押す度どんどん入れていくためのVBAはどうなるのでしょうか? A B C D E F 1 2 s d f d 3 4 5 6 7 f f f f 8 9 10 ちなみにこの場合だと8列目もしくは変なところに飛ぶと思うのですが…。 どうぞよろしくお願い致します。

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

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

専門家に質問してみよう