動的設定するには?

解決


みほりん  2007-03-19 23:39:54  No: 98317

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

ご教授よろしくお願いします。


ガッ  2007-03-19 23:50:05  No: 98318

とりあえず汲み取れた部分だけで解釈してみました:

>     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

こういうことでしょうか?


そがっち  2007-03-20 00:46:03  No: 98319

さすがに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)なり してください。


みほりん  2007-03-20 04:54:40  No: 98320

ガッ,そがっちさんご返事ありがとうございました。
ガッさん私の説明不足で大変失礼いたしました。
1の変数に条件の目的となる名前(ここではコントロール名)
を設定して処理できるのかなと思っていました。
動的配列にてFor  Nextループでやってみます。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加