フォーム上に配置している全てのオブジェクトのプロパティを
一気に変更したいのですが、何か良い方法はありませんか?
設計段階では全て選択して一気に変更できますよね・・・
しかしながら、run状態で一気に変更する方法が見つかりません。

例として様々な名前ついたオブジェクトをコードで「Enabled=false」に変更したいのですが、この場合はやはり、ひとつのオブジェクトごとにコードを記述しなくてはならないのでしょうか。

A 回答 (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
って方法もありますが、用途が違いますね。
    • good
    • 0
この回答へのお礼

まさに的確な方法をいただきましてありがとうございます。
私がしたかったことが一発で解決です。
フォーム上に50個以上のオブジェクトがあって
ある時にだけそのうちの3つのオブジェクト以外は触られたくなかったのです。
この方法で全てをFalseに設定した後に3つだけTrueにするほうがはるかに時間と手間が省けます。
ありがとうございました。

お礼日時:2001/06/23 11:06

そのような方法は今までで聞いた事ありません。


(実はそのような方法があったら申し訳ないのですが...)
しかし、そのようなケースに遭遇したことはあります。
その時、私はこのように対処しました。

例えば、テキストボックスやラベルが複数あり、
ある状況によって、使えたり使えなかったりするパターンが
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

とりあえず、一気にとはいきませんが、
一つ一つ書かなくても良い分、いくらか楽だとは思いますが。
ご参考までに...。
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます。とりあえづためしにやってみましたが
あまりうまくいきませんでした。でも、VBの勉強になりました。 ありがとうございました。

お礼日時:2001/06/23 11:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QWord2007のコンテンツコントロールについて

Word2007で表紙「サイドライン」というものを挿入しました。

その後、コンテンツコントロールを削除できないように「開発」タブを表示させ、リボンの中からプロパティをクリックしようとしましたが、グレーアウトしていてクリックできません。

デザインモードにするとプロパティをクリックできるようになるのですが、クリックすると英語がズラズラ出てきて、コンテンツコントロールのプロパティウィンドウは出てきません。

どのようにすれば、コンテンツコントロールのプロパティ画面が出るのでしょうか。

Aベストアンサー

> デザインモードにするとプロパティをクリックできるようになるのですが、
> クリックすると英語がズラズラ出てきて
これは、コンテンツを何も選択していない場合は、ドキュメントのプロパティ一覧が表示されているのと違いますか。

デザインモードかどうかに関わらず、各コンテンツコントロールを選択すると、プロパティがアクティブになって選択できるようになりませんか。
 

QExcelVBA EnableプロパティがFalseの時に文字の色を変えたくない

ユーザーフォーム上のテキストボックスの内容を変えたくないときにEnableプロパティをFalseにすると、文字の色が灰色に変わってしまいますよね。
色を変えたくないので防ぐ方法はないでしょうか。
また、文字を変更させない方法で、ほかによい方法はないでしょうか。

Aベストアンサー

TextBox1.Locked = True

Qワード2010「フォームコントロール」文字制限

ワード2003などの文書を保存すると、「コンテンツコントロール」が使えなく
ワード2010では「フォームコントロール」を使わないといけないということがわかり
ためしに、ワード2003のファイルをワード2010で「フォームコントロール」の設定をしましたが
以下の問題が発生しました。

テキストフィールドのフォームコントロールを挿入し、文字列、最長10文字、全角で設定を
したのですが、10文字以上の文字も数字も入力ができるのです。

また、コンボボックスのフォームコントロールを挿入し
「ビジネス英語」「簿記」「パソコン」とドロップダウンリストを作ったのですが
ドロップダウンして「英語」以外のものを選択ができません。

どうしてでしょうか?

テキストはFOM出版 MOSエキスパート2010のLesson72をやっています。
テキストにそってやっているのですが、上記が疑問です。

ぜひ、ご回答をいただきたいと思っております。
よろしくお願いします。

Aベストアンサー

>2003などで文書を保存すると、ワード2010では「フォームコントロール」を使わないといけないということがわかり・・・
というよりは、互換モードになりますので2010のコントロールコマンドは使えない状態(グレーアウトします)となり、「以前のバージョンのツール」というコマンドのみの使用となります

テキストフォームフィールドの設定は添付画像を載せますが、一応念のため設定方法を・・・。
テキストボックスフォームフィールドをダブルクリックするとプロパティが出ます
「種類」→「文字列」に設定
「最長文字数」→「10」に設定
「文字列の形式」→「全角文字」
ここまで設定で来たら「OK」を押す

「開発」タブより、「文書の制限」をクリック
1 書式の制限
  「利用可能な書式を制限する」にチェックを入れる
2 編集の制限
  「ユーザーに許可する編集の種類を指定する」の▼をクリックして「フォームの入力」を選択
「はい、保護を開始します」をクリックするとパスワードを入力する画面が出ますが、何も入力しないで「OK」をクリック

テキストボックスフォームフィールドをクリックして文字を入力
<例>あいうえおかきくけこさしすせそ(わざと15文字入力します)
文字はいくらでも入力できますが「Enter」を押したときに10字以上は消えて10字までの文字がフィールド内に入力されます

あと、ドロップダウンフォームフィールドですが・・・ (; ̄ー ̄A アセアセ・・・
これも同じく、1・2の順で文書を保護する事で、ドロップダウンのフィールドをクリックするとリストが出ますので、FOM出版のテキストをもう一度よく読んでみて下さい

>2003などで文書を保存すると、ワード2010では「フォームコントロール」を使わないといけないということがわかり・・・
というよりは、互換モードになりますので2010のコントロールコマンドは使えない状態(グレーアウトします)となり、「以前のバージョンのツール」というコマンドのみの使用となります

テキストフォームフィールドの設定は添付画像を載せますが、一応念のため設定方法を・・・。
テキストボックスフォームフィールドをダブルクリックするとプロパティが出ます
「種類」→「文字列」に設定
「最...続きを読む

QMaskEdBox.Enable= False だと、BackColor が効きません

MaskEdBox の Enable を False にして、BackColor を設定すると、
BackColor が、有効になりませんでした。
解決方法を教えて下さい。

Aベストアンサー

VBのバージョンは何でしょうか?

VB6のSP3で単純に組んだプログラムでは再現しませんでした。
他の原因も考えられますのでフォームの様子や周辺のソースなど補足してください。

Q設定などの表示が英語になった

スリープ状態から起こすとき、毎回パスワードを要求されるようになりました。面倒なのでなんとかしようとしたら、設定が英語表示に変わってしまいました。日本語表示に戻るにはどうしたら良いのでしょうか?
画面には今も日本語が出るし、こうして日本語入力もできます。しかし、コントロールパネルなどの表示が英語になっています。

Aベストアンサー

「スタート」右クリック「ファイル名を指定して実行」「 netplwiz」入力「OK」
「ユーザー」「このコンピューターのユーザー」からユーザー名を選択し、「ユーザーがこのコンピュータを使うにはユーザ名とパスワードの入力が必要」のチェックを外し「OK」
パスワードを入力、確認のため再度入力、「OK」再起動→パスワード入力を省略し自動サインインになります。(アカウントとパスワードは記録しておきます)

英語表示
1)再起動してみる。
2)「スタート」ボタン右クリック「コントロールパネル(Control Panel)」「時計、言語、および地域(Clock, Language, and Region)」言語の設定。(「スタート」メニューの「設定(Settings)」→「時刻と言語(Time & language)」でも言語を設定)

QVB6.0のEnabledをfalseにしてもクリックイベントが走ってしまう・・・

はじめまして。
今VBでオセロゲームを作成しているのですが、コンピュータが考えているときにボタンのEnabledをfalseにしてクリックイベントを走らせないようにしています。
デバックなどをするとうまくいくのですが実際プログラムを実行するとどうしてもEnableをTrueにした後にクリックイベントが走ってしまいます。クリックイベントがたまっているようにも見えるのですが何か解決法はあるのでしょうか。よろしくお願いします。

Aベストアンサー

クリックイベントがあがる前にメッセージを横取りして破棄すれば
よいでしょう。(SetWindowLong)

Q英語版WindowsXPもしくはVistaを日本語化

現在、オーストラリアに滞在しておりまして、最近の円高を利用し
現地の英語版のPCを購入し、OSだけ日本語化しようと考えています。
そこで質問なのですが、例えばスタートメニューやコントロールパネルなどすべて英語から日本語へ変更することは可能なのでしょうか。それともやはり日本語版のOSを購入しないと、すべて日本語にすることは難しいのでしょうか。またその逆で日本語版を英語版にする方法もぜひ教えてください。ご回答宜しくお願いします。

Aベストアンサー

Vistaと、XPでは若干違います。

特にXPのプロの多言語対応版のOSを購入したのなら、かなり日本語化できます。といっても、スタートメニューが起動時は英語、切り替えると日本語になったり英語に戻ったりだったと思います。コントロールパネルは英語のままで、アイコンそのものを自分で変更すると、日本語表示にまで変えることができますが、自分が名前を日本語で入力しなおしたもの、あるいは、日本語のアイコンを移植したものだけです。

日本語版、これを英語に切り替えるのも同様です。起動時は日本語になってしまうのですが、起動するまでは英語の表示にすることは、インストールする際の指定の仕方である程度は可能です。XPなら、プロの多言語対応版ならという条件ですので、他はそこまで対応できないと思います。

VISTAになると、アルティメットの日本語版を購入すると、ある程度は英語の表示に切り替えできました。しかし、ホームプレミアムやベーシックでは英語のスタートメニューには私はできませんでした。

今書き込みしているパソコン、米国購入で、初期はVISTAのベーシック英語版で、デュアルブートで日本語版のホームプレミアムにしてあります。英語のベーシック版も、日本語のソフトもアプリもほとんど使えるのですが、文字化けが激しい、起動してから、表示がときどき日本語に戻る程度の不安定な状態ですが、十分に日本語で使えます。

逆に日本語版のホームプレミアムに英語版のアプリを入れると、文字化けが激しく、フランス語やどこの言語か不明の状態になるので、割り切って、日本語のソフトは日本語版の方にインストール、英語版は英語のほうにインストールしています。特にオフィス、これは、パーソナルだと、インストールした言語の方をメインにされてしまうみたいで、英語のベーシック版にインストールすると英語起動で初期が英語になってしましました。使いにくいので、英語版はアンインストールし、日本語版のホームプレミアムの方だけライセンス認証して使うようにしています。

アルティメットではパーソナル版を使っていないのでどうなるか試していませんが、オフィスは、日本語版には日本語、英語版には英語をインストールしないと、動作も異常が起こりそうです。

ちなみに、私は試さないのですが、アップグレード版の日本語版ビスタホームプレミアムなどを購入し、英語のベーシック版からアップグレードしても、ちゃんと日本語版としてインストールできるそうです。その場合には、英語のベーシック版は使えなくなりますので、両方使い分けたかったら、通常版を購入することになります。

Vistaと、XPでは若干違います。

特にXPのプロの多言語対応版のOSを購入したのなら、かなり日本語化できます。といっても、スタートメニューが起動時は英語、切り替えると日本語になったり英語に戻ったりだったと思います。コントロールパネルは英語のままで、アイコンそのものを自分で変更すると、日本語表示にまで変えることができますが、自分が名前を日本語で入力しなおしたもの、あるいは、日本語のアイコンを移植したものだけです。

日本語版、これを英語に切り替えるのも同様です。起動時は日本語にな...続きを読む

Qオブジェクトのプロパティを一気に変更する方法

テキストオブジェクトが一つあります。
文字のフォントやサイズ、表示色やバックグラウンドカラーなどをまとめて変更するステートメントがあったと思うのですが、忘れてしまいました。
textbox.text="1111"
textbox.visible=true
等のステートメントを
*******(忘れたステートメント)
.tex="1111"
.visible=true
******
と何かでくくって設定していたと思うのですが思い出せません。

Aベストアンサー

( ・・)?ン もしかして WITH?

With textbox
  .text="1111"
  .visible=true
End With

はずしてるかもしれない。

Q言語を英語表記にしたいのですが・・・

ビスタを購入した外国の友人より相談をうけました。

メニュー画面などを英語表記にしたいのですが、
コントロールパネルの言語のオプションで英語を
選んでも上手くいきません。

メニューなど全般を英語にすることはできないのでしょうか?

Aベストアンサー

EnterpriseとUltimateエディションのみ、MUIに対応しています。

http://trendy.nikkeibp.co.jp/article/col/20070409/121526/
http://www.atmarkit.co.jp/fwin2k/win2ktips/1090langpk/langpk.html

QVB.NETのDropDownListをReadOnlyにする方法またはEnable=Falseで字を黒くする方法

VB.NETで作成したWebページのDropDownListを変更させたくないのですが、Enable=Falseにすると文字の色が灰色になってしまって大変見にくいので、TextコントロールのReadOnlyのように、変更不可にする方法はあるのでしょうか?
おしえてください~

Aベストアンサー

> ”入力できないようにする”というのは、Enable=Falseと同じで、”現在選択されているものを他のに変更できなくする”という意味で書きました。

なるほどなるほど。

> Enable=Falseだと色が灰色になってしまいますので、どうやって
> ・Enable=Falseで黒くするのか?
> ・ReadOnlyに換わるものがあるのか?
> ということが聞きたかったのです。

となると CSS とかでも無理っぽいので、
あらかじめ ReadOnly なテキストボックスを非表示にしておき、DropDownList にロックを掛けたいタイミングで
・DropDownList を非表示にする。
・DropDownList で選択されている値を TextBox にセットする。
・TextBox を表示する
とすれば可能です。

これらの動作をクライアント側で行いたいのであれば JavaScript で記述すればいいです。
下記が参考になるかもしれません。
http://chaichan.web.infoseek.co.jp/qanda/qa6878.htm?06-08-06-13-39

> ”入力できないようにする”というのは、Enable=Falseと同じで、”現在選択されているものを他のに変更できなくする”という意味で書きました。

なるほどなるほど。

> Enable=Falseだと色が灰色になってしまいますので、どうやって
> ・Enable=Falseで黒くするのか?
> ・ReadOnlyに換わるものがあるのか?
> ということが聞きたかったのです。

となると CSS とかでも無理っぽいので、
あらかじめ ReadOnly なテキストボックスを非表示にしておき、DropDownList にロックを掛けたいタイミングで
・Dro...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報