
No.4
- 回答日時:
結果からいうと無理です。
別々のCheckBoxは個々単体ですので、VBの基本として、
Object.プロパティやObject.メソッド など、一つのコントロールに対しての命令や属性の変更をかけることしかできません。
もし他の方法を望むのであれば、次のロジックはどうでしょうか?
(これまた参考です。)
手順1.EXCEL起動時にUserFormをロードしておく
手順2.シート1のCells(1,1)からCells(100,1)の値をUserFormのチェックボックスに反映させる。
手順3.Cells(1,1)からCells(100,1)の値の変更イベント時に、対応するチェックボックスだけ、値を変更する(サンプルモジュールがありますのでそちらを見てください。
手順4.必要なときにUserFormをShowする。
手順5.必要ないときはUserFormをアンロードしないで、Visible=Falseにする。
あとは手順3~5の処理をEXCELが終了するまで繰り返します。
以下のコードをシート1のモジュールに記述してください。
(このサンプルは1~5行目までの変更を認識し、対応するチェックボックスの値を変更します。)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wkRange As Range
Set wkRange = Target(1, 1)
'1列目(A)以外は未処理
If Not (wkRange.Column = 1) Then GoTo PGMEND
'5行目以上は未処理
If (wkRange.Row > 5) Then GoTo PGMEND
UserForm1("CheckBox" & wkRange.Row).Value = (wkRange.Value = 1)
PGMEND:
End Sub
毎回たくさんチェックするのがいやなのであれば、こういった方法もありますよ。
でわでわ
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
あくまでも、参考です・・・
でわでわ
田吾作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の値を設定して
行くことくらいなら、コードをたくさん書けば可能なのですが、もっと効率の
良いやり方が有るはずだと思い質問させていただきました。
No.2
- 回答日時:
再び田吾作7です。
締め切ってない所を見ると、見てないのか、あるいは「ページのインデックス値 」がわからなかったのかな?
一応参考までに、、、
1番目のタブを指定
MultiPage1.Value=0
2番目のタブを指定
MultiPage1.Value=1
3番目のタブを指定
MultiPage1.Value=2
ってな感じです。
詳しく言うと、各ページはページというオブジェクトで、マルチページとはそのページオブジェクトをコレクション化した(束ねた)ものです。
MultiPage1.Pages(1) とするとページの中を操作しますが、今回したい作業は「どのページをアクティブにするか」ということなので、「このコレクションに対して、どれをアクティブにするか」という命令になります。よってMultiPage1の中のページオブジェクトを操作するのではなく、MultiPage1自身を操作することになります。
それにしても、Valueでページを変更するってのはチョット違和感がありますよね。Microsoftさんの思惑が時々わからなくなるのは僕だけでしょうか?
( ̄ロ ̄lll) あっ 愚痴ってしまった。。。
でわでわ
遅くなりましたが、回答ありがとうございました。
No1の回答で十分なところを、さらに詳しく解説していただき
恐縮しております。問題は無事に解決しました。
それにしても、Valueでページを変更するってのはチョット違和感がありますよね。Microsoftさんの思惑が時々わからなくなるのは僕だけでしょうか?
私も以下の様なコードを書いてしまい、エラーが起きました。
Userform1.MultiPage1.Page1.ActivateとかSelect
Userform1.MultiPage1.Pages(1).Activate
まさか、MultiPage本体のValueで設定するとは思いもつきませんでした。
ついでに、もう一つ教えていただきたいのですが、Multipage1上に配置した
Checkbox(例えば100個、Checkbox1-100)のvalueがTrueかFalseかを
効率よくチェックしたり、設定するにはどの様なコードが最適でしょうか?
例えば、
For i = 1 to 100
If cells(i, 1).value = 1 then
Checkbox(i).value=True
Else
Checkbox(i).value=false
End if
Next i
と言った感じです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Chrome(クローム) PCの Google Chrome が頻繁に「ページが応答していません」となり作業が進みません。 1 2023/05/25 20:43
- Visual Basic(VBA) Outlook VBAについて 1 2023/07/10 12:41
- Excel(エクセル) Excelから複数のWordファイルを操作する方法について教えて頂きたい。 やりたいことは、複数のW 2 2022/07/26 20:11
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- Word(ワード) Google ドキュメントで改ページを挿入する方法 1 2022/05/25 19:22
- Visual Basic(VBA) VBAでPDFのアクティブページ番号取得 1 2023/05/25 12:41
- スーパー・コンビニ 「コンビニで エクセルをプリントアウト」することができますか? 8 2022/06/16 15:54
- SEO 検索エンジンにインデックスされない 3 2023/02/20 08:59
- Word(ワード) Wordで図形などの全てのオブジェクトの位置を一括で固定する方法はありますか? 1 2022/04/19 14:29
- iPad iPadのメモアプリ 文字が突然大きくなってしまった 3 2022/12/23 23:06
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルVBAでマルチページの切り替え方法の件で
Excel(エクセル)
-
VBAでマルチページのページ指定方法
Visual Basic(VBA)
-
エクセルVBA/マルチページ/ページ切り替え時
Access(アクセス)
-
-
4
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
5
エクセルVBA マルチページのSetFocus
PowerPoint(パワーポイント)
-
6
UserForm.showでマルチページ1を見出し
Visual Basic(VBA)
-
7
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
8
UserForm1.Showでエラーになります。
工学
-
9
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
10
VBAでMultiPageの色の設定方法は?
Visual Basic(VBA)
-
11
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
12
エクセルVBAでオプションボタンを無効にする方法
Excel(エクセル)
-
13
VBA テキストボックスの計算
Visual Basic(VBA)
-
14
VBA フォームのテキストボックスにセルの値を表示させたいが改行していたら改行もあわせて表示させたい
Excel(エクセル)
-
15
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
16
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
17
変数をコントロール型で使用する方法
Visual Basic(VBA)
-
18
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
19
リストボックスの特定行の背景色
Visual Basic(VBA)
-
20
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コントロールの書式設定で、“コ...
-
スピンボタンを右クリックして...
-
WM_SIZEを発生させる方法
-
C#でのドライブリスト・ファイ...
-
ダイアログボックスのボタンコ...
-
DateTimePickerでに年月までし...
-
Win32のリストコントロールで縦...
-
VC++でツリーコントロールの文...
-
コモンダイアログコントロール...
-
エクセルのコントロールツール...
-
C#でパネルに子パネルを上から...
-
VCのコントロール最大配置数は?
-
EXCELVBA リストボックスで選択...
-
フォームでPDFを表示させた...
-
タブコントロール上のリストコ...
-
TabControlとToolBarの背景色変更
-
グラフの交点の求め方(Excel)
-
「アイテムは収集されました」...
-
エクセルで作った新しいウイン...
-
Minecraft 統合版(PC)の描画距...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コントロールの書式設定で、“コ...
-
エクセルのコントロールツール...
-
スピンボタンを右クリックして...
-
DateTimePickerでに年月までし...
-
ActiveXコントロールを.NETにイ...
-
フォームでPDFを表示させた...
-
コモンダイアログコントロール...
-
連続で印刷すると画像が更新さ...
-
VScrollBarの点滅を何とかしたい。
-
エクセル - リストボックスのマ...
-
CEdit の内容が変わった時にメ...
-
空のリストビューで1行おきに...
-
リストコントロール(MFC or API...
-
TabControlとToolBarの背景色変更
-
タブコントロール上のリストコ...
-
アイテムを点滅させる
-
EXCELVBA リストボックスで選択...
-
regsvr32でActiveX登録を行ったocx
-
Accessのタブコントロールを2...
-
VB6.0のデザイン時 コントロー...
おすすめ情報