No.2ベストアンサー
- 回答日時:
強引な方法ですが、こんな感じでできます。
Dim objControl As Control
On Error Resume Next
For Each objControl In Me.Controls
objControl.Enabled = False
Next
フォーム上のコントロールは、Controlsで取得できます。
On Error Resume Nextをかけているのは、コントロールにEnabledプロパティがないものがあるとエラーが発生するためです。
フォーム全体を殺したい場合は、
Me.Enabled = False
って方法もありますが、用途が違いますね。
まさに的確な方法をいただきましてありがとうございます。
私がしたかったことが一発で解決です。
フォーム上に50個以上のオブジェクトがあって
ある時にだけそのうちの3つのオブジェクト以外は触られたくなかったのです。
この方法で全てをFalseに設定した後に3つだけTrueにするほうがはるかに時間と手間が省けます。
ありがとうございました。
No.1
- 回答日時:
そのような方法は今までで聞いた事ありません。
(実はそのような方法があったら申し訳ないのですが...)
しかし、そのようなケースに遭遇したことはあります。
その時、私はこのように対処しました。
例えば、テキストボックスやラベルが複数あり、
ある状況によって、使えたり使えなかったりするパターンが
3通りあるとします。
それらをそれぞれ対象のコントロールのTagプロパティに
"1","2","4"と設定しておき、
下記に書いたような関数を呼びます。
Private Sub Command1_Click()
Call EnabledChange(1)
End Sub
Private Sub EnabledChange(ByVal lTag As Long)
Dim w As Control
For Each w In Me 'Form上の全てのコントロールを走査する
With w
If .tag = "" Or .tag = "0" Then
'何もしない
Else
'使用可不可の設定
.Enabled = ((CLng(.tag) And lTag) > 0)
End If
End With
Next w
End Sub
これによって、デザイン時に設定したTagプロパティの値で
自動的にEnabledプロパティは一気に変更できます。
また、Tagプロパティを使わずに、
Fremeコントロールの上にコンテナさせて、
このFrameコントロールに乗っているから変更するという方法もあります。
Private Sub Command1_Click()
Call EnabledChange(Frame1)
End Sub
Private Sub EnabledChange(ByVal objFrame As frame)
Dim w As Control
For Each w In Me 'Form上の全てのコントロールを走査する
With w
Select Case .Container.Name
Case Me.Name
'フォームに乗っているものに関しては何もしない
Case objFrame.Name
'選択したFrameに乗っているものに関しては使用可にする
.Enabled = True
Case Else
'選択したFrame以外のフレームに乗っているものに関しては
'使用不可にする
.Enabled = False
End Select
End With
Next w
End Sub
まるっきり全てのコントロールを使用不可にするのであれば
以下の方法でよいと思います。
Private Sub Command1_Click()
Call EnabledChange(False)
End Sub
Private Sub EnabledChange(ByVal bFlg As Boolean)
Dim w As Control
For Each w In Me 'Form上の全てのコントロールを走査する
With w
'使用可不可の設定をする。
.Enabled = bFlg
End With
Next w
End Sub
とりあえず、一気にとはいきませんが、
一つ一つ書かなくても良い分、いくらか楽だとは思いますが。
ご参考までに...。
ご丁寧にありがとうございます。とりあえづためしにやってみましたが
あまりうまくいきませんでした。でも、VBの勉強になりました。 ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
あなたは何にトキメキますか?
「きゅんとした〜♪」 と思う瞬間ってありますよね。 それは恋愛だったり、推し活だったり、映画のワンシーンだったり……。
-
あなたの習慣について教えてください!!
あなたが習慣だと思って実践しているものを共有してくださいませんか? 筋肉トレーニングでも朝シャワーでも、あなたが習慣だなと思えば何でも構いません
-
VB.NET2003 テキストボックスに半角英数字以外入力させない
Visual Basic(VBA)
-
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
DataGridViewでyyyy/MM/dd
Visual Basic(VBA)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カメラスクロールするのを動画...
-
ユーザーフォームで動的(Me.Con...
-
(VBA)スピンボタンの大量...
-
winndws セキュリティ
-
Excel VBA ファイル名をドラ...
-
ExcelVBAのコントロールの種類...
-
VBAのフォームでTextBoxがいっ...
-
ACCESS2010のVBAでフォーム内ク...
-
'ckbl' コントロールは作成され...
-
VB6.0からVB2010へのプログラム...
-
Webカスコンってなんですか?
-
ExcelVBAでListViewが使用できない
-
VBA ユーザーフォームの Keypre...
-
エクセル コントロールツール...
-
ActiveX DLL と ActiveXコント...
-
VBAのエラーについて、”実行時...
-
変数をコントロール型で使用す...
-
フォーム上の現在アクティブな...
-
コンボボックスの文字によるif...
-
ユーザーフォームを表示中にシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カメラスクロールするのを動画...
-
エクセル・VBA CheckBoxのオブ...
-
ExcelVBAでListViewが使用できない
-
エクセルVBAでオプションボタン...
-
vb.netで画面のコントロールId...
-
C#で角が丸いテキストボックス
-
VBA ユーザーフォームの Keypre...
-
ユーザーフォームで動的(Me.Con...
-
フォーム上の現在アクティブな...
-
Excel VBA で Richtextboxを使...
-
ACCESS2010のVBAでフォーム内ク...
-
Groupboxの配下のコントロール...
-
コントロールを移動できない
-
コンボボックスの文字によるif...
-
(VBA)スピンボタンの大量...
-
Labelコントロールの(左右)余...
-
イメージコントロールに 読み込...
-
間違えて配置してしまったコン...
-
OCXって何ですか?
-
アクセス特有の書き方?
おすすめ情報