ver:VB6.0
初心者のみほりんと申します。よろしくお願いします。
早速ですが
For Each Ctrs In Me.Controls
Select Case Ctrs.Name
Case "A","B"
'任意の処理
End Select
Next Ctrs
上記のCase "A","B" 部分を動的に設定したいのですが
下記のようにしてもうまくいきません。
Dim Ctrs As Control
Dim wrk, wrk1, wrk2
wrk1 = "A"
wrk2 = "B"
wrk = wrk1 & ","
wrk = wrk & wrk2
For Each Ctrs In Me.Controls
Select Case Ctrs.Name
Case wrk
'任意の処理
End Select
Next Ctrs
ご教授よろしくお願いします。
とりあえず汲み取れた部分だけで解釈してみました:
> Dim Ctrs As Control
Dim wrk1, wrk2
> wrk1 = "A"
> wrk2 = "B"
> For Each Ctrs In Me.Controls
> Select Case Ctrs.Name
Case wrk1, wrk2
> '任意の処理
> End Select
> Next Ctrs
こういうことでしょうか?
さすがに1つの変数で複数のCase条件を表現するのは無理なような…?
ここは素直に、
・wrk1、wrk2を、配列に置き換える
・Select Caseではなく、For〜Nextで配列の要素でループして、
各要素ごとに If文で条件分岐する
Dim Ctrs As Control
Dim wrk() As String
Dim index As Integer
Redim wrk(0)
wrk(0) = "A"
Redim Preserve Wrk(1)
wrk(1) = "B"
For Each Ctrs In Me.Controls
For index = 0 to UBound(wrk)
If Ctrs.Name = wrk(index) Then
'(処理)
End If
Next
Next Ctrs
こんな感じが無難ではないかと思いますが…
一応、配列は動的配列で書いておきました。適宜広げるなり
消す(Erase)なり してください。
ガッ,そがっちさんご返事ありがとうございました。
ガッさん私の説明不足で大変失礼いたしました。
1の変数に条件の目的となる名前(ここではコントロール名)
を設定して処理できるのかなと思っていました。
動的配列にてFor Nextループでやってみます。
ありがとうございました。
ツイート | ![]() |