Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10464 / 13644 ツリー ←次へ | 前へ→

【21705】オプションボタンの状態を調べ、リストボックスに表示 mickeypapa 05/1/27(木) 17:43 質問[未読]
【21709】Re:オプションボタンの状態を調べ、リスト... kobasan 05/1/27(木) 19:30 回答[未読]
【21710】Re:オプションボタンの状態を調べ、リスト... mickeypapa 05/1/27(木) 20:18 お礼[未読]

【21705】オプションボタンの状態を調べ、リストボ...
質問  mickeypapa E-MAILWEB  - 05/1/27(木) 17:43 -

引用なし
パスワード
   いつもお世話になっております。今回もアドバイスのほど宜しくお願い致します。
ユーザーフォームにオプションボタン11個とリストボックス1つを配置しています。選択されているオプションボタンを調べて、その選択されている項目をリストボックスに表示させるため、以下の様に書いたのですが、オプションボタンの判定の仕方のが、For〜Nextでいいのか?また、Select Caseではなくもっとすっきりとしたコードにならないものかと考えております。ListBox1の設定には、RowSourceではなく、Listでもかまいません。宜しくお願い致します。

  Dim myRan As String
  Dim i, myRow As Integer

  With frmCBO
    For i = 1 To 11
      If .Controls("Opt" & i) = True Then Exit For
    Next i

      Select Case i
        Case 1
          myRow = Sheets("CBO").Range("M65536").End(xlUp).Row
          myRan = "CBO!M2:M" & myRow
        Case 2
          myRow = Sheets("CBO").Range("N65536").End(xlUp).Row
          myRan = "CBO!N2:N" & myRow
        Case 3
          myRow = Sheets("CBO").Range("O65536").End(xlUp).Row
          myRan = "CBO!O2:O" & myRow
        Case 4
          myRow = Sheets("CBO").Range("P65536").End(xlUp).Row
          myRan = "CBO!P2:P" & myRow
        Case 5
          myRow = Sheets("CBO").Range("Q65536").End(xlUp).Row
          myRan = "CBO!Q2:Q" & myRow
        Case 6
          myRow = Sheets("CBO").Range("R65536").End(xlUp).Row
          myRan = "CBO!R2:R" & myRow
        Case 7
          myRow = Sheets("CBO").Range("S65536").End(xlUp).Row
          myRan = "CBO!S2:S" & myRow
        Case 8
          myRow = Sheets("CBO").Range("T65536").End(xlUp).Row
          myRan = "CBO!T2:T" & myRow
        Case 9
          myRow = Sheets("CBO").Range("U65536").End(xlUp).Row
          myRan = "CBO!U2:U" & myRow
        Case 10
          myRow = Sheets("CBO").Range("V65536").End(xlUp).Row
          myRan = "CBO!V2:V" & myRow
        Case 11
          myRow = Sheets("CBO").Range("W65536").End(xlUp).Row
          myRan = "CBO!W2:W" & myRow
        End Select

      With .ListBox1
        .ColumnCount = 1          '列数の設定
        .RowSource = myRan         'リスト
        .ColumnWidths = "40 pt"
      End With
  End With

【21709】Re:オプションボタンの状態を調べ、リス...
回答  kobasan  - 05/1/27(木) 19:30 -

引用なし
パスワード
   ▼mickeypapa さん今晩は

>もっとすっきりとしたコードにならないものかと考えております。
でどうですか?

Sub test2()
  Dim myRan As String
  Dim i, myRow As Integer
  '
  Dim A As Variant
  A = Array("M2:M", "N2:N", "O2:O", " Q2:Q", "R2:R", "S2:S", "T2:T", "U2:U", "V2:V", "W2:W")
  '
  With frmCBO
    For i = 1 To 11
      If .Controls("Opt" & i) = True Then Exit For
    Next i
    '
    myRow = Sheets("CBO").Cells(65536, 12 + i).End(xlUp).Row
    myRan = "CBO!" & A(i - 1) & myRow
    '
    With .ListBox1
      .ColumnCount = 1          '列数の設定
      .RowSource = myRan         'リスト
      .ColumnWidths = "40 pt"
    End With
  End With
End Sub

【21710】Re:オプションボタンの状態を調べ、リス...
お礼  mickeypapa WEB  - 05/1/27(木) 20:18 -

引用なし
パスワード
   ▼kobasan さん:
大変有り難うございます。お陰様で、すっきりとしたコードになりました。
今後とも宜しくお願い致します。

P.S Array(・・・の中で"P2:P"が抜けていたようです。

10464 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free