• ベストアンサー

Excel VBAでのMultipageの選択

TAGOSAKU7の回答

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

どもども 再々度 田吾作7です。 >効率よくチェックしたり、設定するには・・・hogehoge とありましたが、チェックロジックは全体の処理を知らないと、答えようが・・・ 設定は、回答No1のお礼に書いてあったソース部分だけでいうと For i = 1 to 100 Userform1("CheckBox" & i).Value = (cells(i, 1).value = 1) Next i ってな感じでいいと思います。 Value に設定してある(cells(i, 1).value = 1)の部分がTrue/Falseを返すので、その値をそのままセットしてやると、If文を使用しないで済むと思います。 (σ( ̄ー ̄ ボク If文少ないの好きです) さっきも言ったようにチェックロジックは、全体の処理の流れがわからないと、下手なことを言うことが出来ません。ですので、一応の参考として、チェックロジックのソースを書いておきますが、ご自分の好きなように変更を加えて、今作成中のプログラムに適した形にしてください。 ※必要なコントロール 1.コマンドボタン1 2.リストボックス 3.マルチページ 4.マルチページの中にチェックボックスたくさん(各ページにたくさんチェックボックスがあった方が、実験になると思います) Private Sub CommandButton1_Click() With UserForm1 Call CheckBoxValue_ListBoxOut(.MultiPage1.Pages(0), .ListBox1) End With End Sub '【機能】リストボックスにマルチページ内の指定ページのチェックボックスの状態を出力 '【パラメータ】 '1.ページオブジェクト '2.リストボックスオブジェクト Sub CheckBoxValue_ListBoxOut(inPage As Page, OutListBox As Control) Dim wkCtrlCnt As Long '指定のページに存在するコントロールの数のカウント Dim wkCheckBox As Control 'チェックボックスコントロールの一時セットワーク Dim i As Long 'ループカウンタ '出力先リストボックスをクリア OutListBox.Clear 'ページ内のコントロールの数を得る wkCtrlCnt = inPage.Controls.Count 'コントロールの数だけループする For i = 1 To wkCtrlCnt 'i番目のコントロールのタイプがチェックボックスだった時 If TypeName(inPage.Controls(i - 1)) = "CheckBox" Then 'ワークに一時セットする(別にセットしないでもかまわないけど、この方が見栄えがよい) Set wkCheckBox = inPage.Controls(i - 1) 'リストボックスへ出力 OutListBox.AddItem wkCheckBox.Name & " のValueは " & wkCheckBox.Value End If Next i '開放 Set wkCheckBox = Nothing End Sub あくまでも、参考です・・・ でわでわ

mygsk
質問者

お礼

田吾作7さん、まいどありがとうございます。 For i = 1 to 100 Userform1("CheckBox" & i).Value = (cells(i, 1).value = 1) Next i でとりあえず試してみます。 さっきも言ったようにチェックロジックは、全体の処理の流れがわからないと、 下手なことを言うことが出来ません。 プログラムで行いたいことは、任意のWorksheet(例えばWorksheets(1))の Cell(1,1)からCell(100,1)に入っている値が1(もしくは""以外)ならば、 それに対応するCheckboxをtrueに設定することです。Cell(1,1)がcheckbox1 にCell(2,1)がcheckbox2,,,,Cell(100,1)がcheckbox100に対応しています。 CheckboxはMultipage1上に配置してあります。 初心者の私には、Cellの値を一つ一つチェックして、Checboxの値を設定して 行くことくらいなら、コードをたくさん書けば可能なのですが、もっと効率の 良いやり方が有るはずだと思い質問させていただきました。

関連するQ&A

  • エクセルVBA UserFormで選択リスト

    VBAは多少はかじりましたが、UserFormを使うのは初めてです。これまではDialogSheetでやってました。 しかし今回は、DialogSheetでは大分類小分類に分けたリストはできそうもないのでUserFormならマルチページ機能があるのでなんとかなるのではと思いました。 やりたいことは約千種類あるデータを、まず大分類のカテゴリーに10区分し、マルチページとします。 大分類の各ページをさらにマルチページで小区分し、各5区分とします。都合10*5で50ページとなります。 小区分の各ページにそれぞれリストボックスを配置し、エクセルシートのデータリストからデータを表示し、エクセル使用者が選択できるようにします。 こんなことはマルチページで可能でしょうか?それともタブストリップですか? 参考となるコードなどもご教示いただけると幸いです。 よろしくお願いします。

  • Excel VBA のマルチページ

    使用環境:Excel2007 VBAのユーザーフォームにMultiPageを配置し各ページにScrollbarを 設定(Vertical)したいと思っています。 各ページに配置まではできましたが、実行しても動かず困っています。 写真やコマンドボタンを多く配置するので、マルチページで対応できたら と考えています。 ヒントとなるコードまたはURLが解れば教えて頂きたいです。 よろしくお願いします。

  • エクセル2003 ユーザーフォーム、マルチページのページ選択の記述

    いつもこちらで勉強させていただいております。 エクセルVBAでユーザーフォームを作成しました。 フォームにはマルチページが有り、ページ数は3枚あります。 で、質問なのですが、フォームを読み込んだときに ページを必ず1ページを表示するようにしたいのですが コードの書き方が判りません。 フォーム作成でページ1を選択しておけば、1ページ目が 表に来るのですが、コードで処理しておけないかなと 思いましてご質問させていただきました。 フォームオブジェクト名:UesrForm1 ページオブジェクト名:Page1 となっております

  • Access VBAでタブコントロールで選択するタブをしていするには。

    Access VBAでタブコントロールで選択するタブをしていするには。 Access のフォーム上に,「ページ1」「ページ2」「ページ3」タブを配置しました。その横にボタンを3個配置して,ボタンクリックでそれぞれ対応するタブを選択(クリックしたのと同じ状態に)させたいのですが,どなたか方法を知りませんか? よろしくお願いいたします。

  • エクセルVBAでマルチページの切り替え方法の件で

    エクセルVBAを使用して フォームを作成しているのですが マルチページを利用してpage1上にコマンドボタンを 配置しそのボタンをクリックすることでpage2に切り替わる 仕組みを作りたいと思っているのですが なかなかうまくいきません Private Sub CommandButton102_Click() userform1.page2.Show End Sub ↑のように考えてはみたのですが エクセルに間違ってるといわれてしまいました ご存知の方がいらっしゃいましたらよろしくお願いします

  • EXCEL VBA のユーザーフォームで絞り込み

    ここで質問が出来るほどの実力はないのですが・・・。 EXCELのユーザーフォームにコンボボックスを2つ配置しておいて、ComboBox1では都道府県名を選択できるようにしておき、県名を選択したらComboBox2にその県の市町村名が絞り込まれて選択できるようにしたいと考えています。 エクセルにどのような並びでデータをセットしてどのようなコードを書けば実現できるのかをご教授して頂けないでしょうか? まるまる「おんぶにだっこ」的な質問内容ですがよろしくお願いします。

  • エクセルVBAユーザーフォーム・ボタンの復元

    うっかりして、エクセル Visual Basic Editor ・ユーザーフォームの、ツールボックス のコントロールから、[マルチページ]のボタンを削除してしまいました。 何気なく[マルチページ]ボタンを右クリックし、”削除 マルチページ” をクリック してしまったのです。 どの様な方法で[マルチページ]ボタンを復元することができるか、お教え願えれば ありがたいのですが。  どうか、よろしくお願い致します。

  • VBAでマルチページの表示

    エクセル2002使用です。 ユーザーフォーム(オブジェクト名:UserForm1)に、マルチページ(オブジェクト名:page1)を配置してフォームを作成しました。 Sheet1にコマンドボタンを貼り付け、コマンドボタンをクリックして、標準モジュールを呼び出し、マルチページを標準モジュールから呼び出せるようにしたいのですがうまくいきません。 ’Sheet1 Private Sub CommandButton1_Click() Call フォーム表示 End Sub ’標準モジュール Sub フォーム表示() UserForm1.Show ’?ここのコードをいろいろ試したのですがわかりません。 End Sub この他 UserForm1.ShowPages "page1" とか 変数を入れてみたりしたのですが、うまくいきません。 すいませんが、よろしくお願いします。

  • Excel VBA

    Excelのコンボボックスについての質問です。 sheet(1)のA2~A20までコンボボックスに入る選択肢が入っています。 フォーム1のコンボボックス1にその選択肢を入れたいのですが、なるべく短いコードを教えていただきたいのですが…。 ちなみに私の知っているコードは コンボボックス1.Additem Range("シート1!A2") コンボボックス1.Additem Range("シート1!A3")      ・      ・      ・ という感じです。 どうかよろしくお願いいたします。

  • Excel VBAでのコードの書き分け方

    Excel VBAについてご質問します。 プロジェクトの項目を見ると、 Sheet1 ThisWorkbook 標準モジュール などさまざまあると思います。 これらに対して、どこにコードを書いていくべきなのかがわかりません。 例えば、Sheet1にボタンを配置して、それがクリックされたときの動作についてはSheet1に書けばいいのだと思います。 ですが、いろんなシートのコード、フォームのコードなどから呼び出される関数はThisWorkbookか標準モジュールのどちらに書けばいいのか悩んでいます。 それ以外のケースも含めて、一般的にこういう風に使い分けをするというのがありましたら、ぜひ教えてください。 よろしくお願いいたします。