
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で質問しましょう!
似たような質問が見つかりました
- Illustrator(イラストレーター) Illustratorでオブジェクトの色が勝手に変わって困っています。 4 2022/09/04 18:47
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- その他(ソフトウェア) Figma 1 2023/06/23 14:22
- Visual Basic(VBA) findメソッドの変数について 6 2023/06/23 08:01
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
- Java 複数TBLのオブジェクトを1つの変数(オブジェクト)でまとめて管理したい 1 2022/12/17 00:12
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Photoshop(フォトショップ) インデザイン 上で、フォトショップの線の色を変えたい 4 2022/06/12 18:49
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
複数のtextboxの処理を一括で行えませんか?
Visual Basic(VBA)
-
オブジェクト(コントロール)の名前を変更したい
Excel(エクセル)
-
-
4
vb.netで画面のコントロールId名を変数で動的に制御し処理する方法
Visual Basic(VBA)
-
5
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
6
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
7
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
8
VBA:小数点以下の数字を取得できる関数は?
Visual Basic(VBA)
-
9
VB.NETでのイベントの途中終了
Visual Basic(VBA)
-
10
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
11
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
12
フォーム上のすべてのTextBoxを空にしたい
Visual Basic(VBA)
-
13
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
14
ユーザーフォームで動的(Me.Controls.Add)に作成したコントロールの削除
Visual Basic(VBA)
-
15
C#でフォームのオブジェクト名を変数名で指定
C言語・C++・C#
-
16
ListView 項目の選択/選択解除について
Visual Basic(VBA)
-
17
Enterキーでマクロを起動さす。
その他(ソフトウェア)
-
18
テキストボックス(VBA)でEnterを押したときに作動するマクロ
Access(アクセス)
-
19
モジュールとクラスの違いってなんなんですか?
Visual Basic(VBA)
-
20
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA ユーザーフォームの Keypre...
-
ExcelVBAでListViewが使用できない
-
'ckbl' コントロールは作成され...
-
全てのオブジェクトのプロパテ...
-
EXCELでactivexコントロールを...
-
vb.netで画面のコントロールId...
-
間違えて配置してしまったコン...
-
C# Form上に配置されたコントロ...
-
PDQCommは今でも入手できますで...
-
エクセルVBAでオプションボタン...
-
Validated イベントについて
-
チェックボックスをオンにした...
-
エクセル コントロールツール...
-
Labelコントロールの(左右)余...
-
AccessのDataGridコントロール...
-
ActiveXコントロールはどこへい...
-
教えてください
-
カメラスクロールするのを動画...
-
C#で角が丸いテキストボックス
-
listviewの設定について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELでactivexコントロールを...
-
エクセル・VBA CheckBoxのオブ...
-
カメラスクロールするのを動画...
-
エクセルVBAでオプションボタン...
-
チェックボックスをオンにした...
-
VBA ユーザーフォームの Keypre...
-
chr関数の呼び出しで「プロ...
-
'ckbl' コントロールは作成され...
-
ExcelVBAでListViewが使用できない
-
全てのオブジェクトのプロパテ...
-
vb.netで画面のコントロールId...
-
間違えて配置してしまったコン...
-
変数をコントロール型で使用す...
-
エクセル コントロールツール...
-
ユーザーフォームで動的(Me.Con...
-
OCXって何ですか?
-
C#で角が丸いテキストボックス
-
Groupboxの配下のコントロール...
-
Labelコントロールの(左右)余...
-
excel vbaでユーザーフォームに...
おすすめ情報