[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『オブジェクト変数がわかりまへん』(おいぼれ弥太郎)
Dim i As Integer Dim idx As Integer Const tetbox_id As String = "Forms.TextBox.1" Const lbel_id As String = "Forms.Label.1" Private lbel() As MSForms.Label Private tetbox() As MSForms.TEXTBOX
__________________________________________________
Private Sub CommandButton1_Click() idx = 0 i = 5 Do idx = idx + 1 ReDim Preserve lbel(1 To idx) ReDim Preserve tetbox(1 To idx) Set tetbox(idx) = Controls(tetbox_id, , True)
With tetbox(idx) .Text = "" End With
Set lbel(idx) = Controls(lbel_id, , True) With lbel(idx) If idx = i - 2 Then GoTo coot End If .Visible = False End With coot: Loop While idx < i
End Sub
__________________________________________________
まあ、おおむねこんな案配のコードなんですけど Set で機嫌を損ねまんねん。どないかなりまへんか?
MSForms.Label、MSForms.TEXTBOX はまだなんとかなるとして、 Controlsが何なのか説明がないとレスはつかないと思いますが。 (kazu)
数多くあるMultiPageの1頁の一部を入力処理終了後、TextBox,CeckBox,OptionButtonおよびLabelを初期化して次の入力を待つ場合、その頁単位でコードを記述せなあきまへんのやろか。? オブジェクト変数とかを利用して各頁共通のコードを作成すればもっとスリムなコードになると思いまんねんけど無理なんでっしゃろかなぁ、やっぱし...
kazeさんの質問にあるけど、Controls(id,,true) って何を参考にしたの? はっきりいって気になります。 これがうまい具合にオブジェクトを返してくれると、 上のコードでうまくいきそうな気もしますが、正直なところ、 ReDim のところが何のための処理かよくわかりません(汗)。
UserForm1 に MultiPage を5枚つくって、 1枚目に TextBox1 Label1 CommandButton1 2枚目に TextBox2 Label2 3枚目に TextBox3 Label3 4枚目に TextBox4 Label4 5枚目に TextBox5 Label5 という構成で考えてみました。 Excel2002でやってますので、他のバージョンで動かなかったらゴメンナサイ(汗)。
ユーザーフォームのコード
Private Sub CommandButton1_Click() iniObj End Sub
Private Sub UserForm_Initialize() Dim i As Integer For i = 1 To 5 Set P(i).txt = UserForm1("TextBox" & i) Set P(i).lbl = UserForm1("Label" & i) Next i End Sub
標準モジュールのコード
Type mPage txt As Control 'ここは As MSForms.TextBox も可 lbl As Control 'ここは As MSForms.Label も可 End Type Public P(1 To 5) As mPage
Sub iniObj() Dim i As Integer For i = 1 To 5 P(i).txt = "Initial-D" P(i).lbl.Visible = False Next i End Sub
正直、As MSForms がいいのか、As Control がいいのか、As Object がいいのか よくわか`ていません。 みんな動くので(汗)。
(ramrun)
こちら事務局です。 このエクセル質問ボードは従来の掲示板とは根本的に違います。 一つのテーマを1つの項目に書き込む方式です。 毎回新規で新しい項目を作らないようにしてください。 基本的に[続き]とか[その2]は許可していません。 [初めての方へ]を一度見てください。 (kazu)
もうひとつのQ&Aってどこのこと? 旧掲示板には3千番台無いし。
標準モジュールのiniObjを実行するわけではおまへん。 ユーザーフォームを実行しなはれ。
と、いま思いつくのはこんな程度。 違ったらゴメンサナイ。
超初心者といえど、難しいことをしたがっているのはアナタです。 そこはご理解ください。
(ramrun)
もうひとつはここに統合された前の記事(つまりもの文書上の方)をさしている と思います。 (kazu)
はいはい、出来ました、お見事! ramunさん、貴殿の御懸念通り一生懸命iniobjを実行して頭抱えてましたわ、ええ。慚愧の念に耐えないちゅうのはこういうことを言いまんねんなぁ、ほんまに。 それはともかく、お陰様でMultiPageのコードもずいぶん簡略化できそうで、明日から書き換えにやりがいを感じますわ。 あぁ、それから、これからも超初心者の愚問をぶつけていく所存でおりますので、その節はこれに懲りずに宜しくご教授下さるようお願い致します。
(kazu) 様
ろくに説明も読まずに投稿して大変ご迷惑をおかけしました。
以後気をつけますのでご容赦下さい。
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.