アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excelユーザーフォームでマルチページを使用しているのですが
テキストボックスに文字(パスワード的なもの)を入力したら
マルチページ内の特定ページのコントロールをenabled=trueにしたいのです(通常はenebledがtrue・falseの混合ページです)
先日よりFor Each~Next構文を使い始めたのですが勉強不足『オブジェクト・コレクション』の概念がいまいち理解できません。よろしくお願いします。
ネット上で調べてコピペしたのですがこのままだと他のページ、ページ外のコントロールまで影響するので良い方法をアドバイスしていただけますか?やはりコントロール個別にコードを書くしかないのでしょうか?


Private Sub TextPASS_Change()
If TextPASS.Value = "aaaa" Then
For Each Control In Controls
省略(enabled=true)
Next
Else
For Each Control In Controls
省略(enabled=false)
Next End If
End Sub

A 回答 (2件)

こんにちは。



たとえば、マルチページの1番目のページ上のコントロールをループするには、

For Each control In UserForm1.MultiPage1.Pages(0).Controls

とします。
インデックスは0から始まるので、1ページ目はPages(0)と記述します。
    • good
    • 0
この回答へのお礼

ありがとうございます。

動作しました。コレクションとオブジェクトの部分を変えてみたのですが『オブジェクトが違います』『コレクションが不正です』『変数を設定してください』
などなどいろんなエラーが出て余計にパニックになっていました

ページはインデックスで指定するんですね。ページのオブジェクト名でずっと考えていたので

勉強になりました

お礼日時:2009/08/20 20:25

今一ピンとこないんですが、こういうことですか?



Private Sub TextPASS_Change()
Dim b As Boolean
b=(TextPASS.Value = "aaaa")
For Each Control In Me.Controls ' <-”Controls”を”Me.Contrls”に変更
省略(enabled=b)
Next
End Sub

#「Option Explict」は指定しておきましょう。

この回答への補足

すいません、私自身もどのように説明すればいいのかわからず解っている情報のみ投稿させてもらいました。

簡単に言うとデータベースをマルチページ(page10まで存在します)にて管理しています

例Page1:入力、Page2:DB参照、Page3:統計マクロなど…
そこで特定のページの機能をパスワードにて使用可能となるようなコントロールをしようと考えています

上記のコードのままですと全ページループして全コントロールがenabled=Falseとなってしまうのです。
1ページ内だけでループさせるような、オブジェクト・コレクション記述があるのでしょうか?

よろしくお願いします

補足日時:2009/08/20 20:15
    • good
    • 0

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