Excel VBA質問箱 IV

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

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


13231 / 13645 ツリー ←次へ | 前へ→

【6430】Select Case文でのワイルドカード使用法 星飛雄馬 03/6/29(日) 23:37 質問
【6432】Re:Select Case文でのワイルドカード使用法 Kein 03/6/30(月) 0:42 回答
【6433】Re:Select Case文でのワイルドカード使用法 星飛雄馬 03/6/30(月) 0:52 お礼
【6434】Re:Select Case文でのワイルドカード使用法 Jカーター 03/6/30(月) 8:20 回答
【6436】こんな感じでしょうか。 Be Quit 03/6/30(月) 8:58 回答
【6437】Re:Select Case文でのワイルドカード使用法 Jカーター 03/6/30(月) 9:10 回答
【6456】Re:感動しました 星飛雄馬 03/6/30(月) 19:22 お礼

【6430】Select Case文でのワイルドカード使用法
質問  星飛雄馬  - 03/6/29(日) 23:37 -

引用なし
パスワード
   文字パターンで条件分岐をしたいのですが、
If文ではできるのですが、Select Case文での記述法
が分かりません。

例えば、aで始まる文字列で条件分岐したい場合、
If文では、

If sss Like "a*" Then ....

と書けばよいのですが、Select Case文では

Select Case sss

 Case "a*"
   
  MsgBox (" sssはaで始まります。")
  
 ....

End Select

と書いても、機能してくれません。Caseの所を
Case Like "a*" としてもだめでした。

正しい書き方を、教えてください。

【6432】Re:Select Case文でのワイルドカード使用法
回答  Kein  - 03/6/30(月) 0:42 -

引用なし
パスワード
   >aで始まる文字列で
判定したい文字の位置が決まっているなら、Left,Right,Mid関数で切り出してから
Select Case 構文に入れば良いと思います。

Select Case Left(sss, 1)
  Case "a"

  Case "b"

End Select

という具合に。

【6433】Re:Select Case文でのワイルドカード使用法
お礼  星飛雄馬  - 03/6/30(月) 0:52 -

引用なし
パスワード
   Left,Right,Mid関数を使うことで
何とか乗り切れそうです。

どうもありがとうございました。

【6434】Re:Select Case文でのワイルドカード使用法
回答  Jカーター  - 03/6/30(月) 8:20 -

引用なし
パスワード
   おじゃまします。
解決後ですがこんな方法も・・・

Select Case True
Case sss Like "a*"

おじゃましました。

【6436】こんな感じでしょうか。
回答  Be Quit  - 03/6/30(月) 8:58 -

引用なし
パスワード
   こんにちは。
こんな感じでしょうか。
Sub Test()
Dim sss As String
Dim Ans As Boolean

sss = "abcd"
Ans = sss Like "a*"

Select Case Ans
    Case True
      MsgBox (" sssはaで始まります。")
    Case Else
      MsgBox (" sssはaで始まりません。")
End Select

End Sub

失礼します。

【6437】Re:Select Case文でのワイルドカード使用法
回答  Jカーター  - 03/6/30(月) 9:10 -

引用なし
パスワード
   再びおじゃまします。
たとえば条件が複数あった場合は
--------------------------------------
Sub test()
  Dim i As Long
  Dim sss As String
  
  For i = 1 To 10
    sss = Cells(i, 1).Value
    Select Case True
    Case sss Like "a*"
      MsgBox "aの処理"
    Case sss Like "b*"
      MsgBox "bの処理"
    Case sss Like "c*"
      MsgBox "cの処理"
    End Select
  Next i
End Sub
------------------------------------------
とすることが可能と思います。

違ったらすいません。

【6456】Re:感動しました
お礼  星飛雄馬  - 03/6/30(月) 19:22 -

引用なし
パスワード
   Jカーターさんの教えてくれた方法でバッチリ動き、感動しました。

Select Case True なんていう華麗なるテクニックがあるのですね。
どこで調べられたのでしょうか。

ちなみに、私が確認したコードは以下の通りです。

--------
Public Sub test()

  Dim i As Long
  Dim sss As String
 
  For i = 1 To 10
    sss = Cells(i, 1).Value
    Select Case True
    Case sss Like "[ABC]*"
      Cells(i, 2) = "ABCで始まる"
    Case sss Like "X*"
      Cells(i, 2) = "Xで始まる"
    Case sss Like "S*"
      Cells(i, 2) = "Sで始まる"
    Case Else
      Cells(i, 2) = "その他"
    End Select
  Next i

End Sub
----------------
どうもありがとうございました。

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