• ベストアンサー

Select Caseで条件が複数の場合

ifではなくSelect Case で表現するにはどうすればいいでしょうか? Sub Macro1() ひらがな = "い" カタカナ = "イ" Select Case ひらがな Case "あ" Select Case カタカナ Case "ア" MsgBox "ひらがな = ""あ""カタカナ = ""ア""です" End Select End Select Select Case ひらがな Case "い" Select Case カタカナ Case "イ" MsgBox "ひらがな = ""い""カタカナ = ""イ""です" End Select End Select End Sub この場合あ~おまでの条件を設定したい場合どのように書けばいいのでしょうか? またひらがな = "あ"、カタカナ = "イ"の場合はスルーしたいです。 なにか効率のいい方法はありますでしょうか? IFの方が書き方としては正しいのでしょうか? よろしくお願い致します。

noname#150498
noname#150498

質問者が選んだベストアンサー

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>なにか効率のいい方法はありますでしょうか? サンプルとしての提示では、プログラムで何をしたいのかが全く理解出来ません。 >なにか効率のいい方法はありますでしょうか? >IFの方が書き方としては正しいのでしょうか? 処理の選択や分岐条件などをきちんと纏めて、無駄なコードを書かない事です。 そして、なによりも見やすい(読みやすい)プログラムを書くのが一番です。 処理が1文字なら「文字コード」で判別する事も可能です。 文字列なら別の方法もあるでしょう。 提示されたサンプルで条件を満たしても本当にやりたい事を満たせない場合もあります。

noname#150498
質問者

お礼

ご回答ありがとうございます。

その他の回答 (2)

回答No.3

Sub Macro1() ひらがな = "い" カタカナ = "イ" If ひらがな = "あ" And カタカナ = "ア" Then MsgBox("ひらがな = ""あ""カタカナ = ""ア""です") ElseIf ひらがな = "い" And カタカナ = "イ" Then MsgBox("ひらがな = ""い""カタカナ = ""イ""です") End If End Sub

noname#150498
質問者

お礼

ご回答ありがとうございます。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

自分ならカタカナをひらがな変換して比較して異なる場合は除外しますが... Sub Macro1() ひらがな = "い" カタカナ = "イ" If ひらがな <> StrConv(カタカナ,VbHIRAGANA) Then Exit Sub Select Case ひらがな Case "あ" MsgBox "ひらがな = ""あ""カタカナ = ""ア""です" Case "い" MsgBox "ひらがな = ""い""カタカナ = ""イ""です" End Select End Sub

noname#150498
質問者

お礼

やはりIFですかね。ご回答ありがとうございます。

関連するQ&A

  • Select Caseでorは使えないのでしょうか?

    Sub TEST() 文字 = "あ" Select Case 文字 Case "あ" Or "い" MsgBox "「あ」もしくは「い」です。" End Select End Sub これだとエラーになるのですが ケースが「あ」もしくは「い」の場合は同じ処理をしたい場合はどうすればいいのでしょうか? Sub TEST() 文字 = "あ" Select Case 文字 Case "あ" MsgBox "「あ」もしくは「い」です。" Case "い" MsgBox "「あ」もしくは「い」です。" End Select End Sub このコードをまとめるはどうすればいいのでしょうか? よろしくお願い致します。

  • Select Caseステートメント 「Is」

    VBAについて質問です。 http://excelvba.pc-users.net/fol6/6_2.html の Sub test() Dim intPoint As Integer intPoint = InputBox("点数を入力してください") Select Case intPoint Case Is >= 80 MsgBox "優です。" Case Is >= 70 MsgBox "良です。" Case Is >= 60 MsgBox "可です。" Case Else MsgBox "再テストです。" End Select End Sub は、 なぜ Sub test2() Dim intPoint As Integer intPoint = 75 Select Case intPoint Case intPoint >= 80 MsgBox "優です。" Case intPoint >= 70 MsgBox "良です。" Case intPoint >= 60 MsgBox "可です。" Case Else MsgBox "再テストです。" End Select End Sub では、だめなのでしょうか? test2を実行すると、 Case Elseの MsgBox "再テストです。" になってしまいます。 本当は、"良です。"が正しいのに。 testをF8でステップインしながら実行した時に、 「Case Is >= 80」 の来た時に、isにカーソルをあてても、InputBoxで入力した数値が表示されません。 なぜ、この場合、Case intPoint >= 80 ではダメなのか理由をご教授ください。ご回答よろしくお願いします。

  • Select Caseでlikeを使うには?

    Sub test() Dim s As String s = "aa*@yahoo.co.jp" Select Case s Case like "*yahoo*" MsgBox "yahoo" End Select End Sub をすると、コンパイルエラーになるのですが 「yahoo」と言う文字を含むのなら とするにはどうすればいいでしょう?

  • エクセルVBAの Select Case構文

    Range("A1")に数式が入っています。 Select Caseで エラーだった場合 計算結果が正数だった場合 計算結果が負数だった場合 計算結果が"特定の文字"だったばあい その他 で分岐したいのですが、どのように記述すればよいのでしょうか? 以下、わたしの失敗例です。AAAでもプラスと出てしまいます。エラー値の判別がわかりません。 Sub TEST() Select Case Cells(1, 1) Case Is > 1: MsgBox "プラス" Case Is < 0: MsgBox "マイナス!" Case "AAA": MsgBox "AAA" Case Else: MsgBox "やり直し" End Select End Sub

  • select case 大文字小文字を区別しないよ

    select case 大文字小文字を区別しないようにするには? Sub test01() Dim str As String str = "A" Select Case str Case "a" MsgBox "aです" Case "A" MsgBox "aです" End Select End Sub これだと、半角全角がヒットしないのはなんとなくしょうがないかな、と思うのですが 大文字小文字がちがくてもヒットさせるにはどうすればいいですか? Sub test01() Dim str As String str = "A" Select Case str Case "a", "A" MsgBox "aです" End Select End Sub とするしかないでしょうか? 大文字小文字区別なく評価する方法があれば教えてください。よろしくお願いします。

  • エクセルVBA Select Case いついて

    現在時間を判断してあいさつを出すVBAを書こうとしましたがうまくいきません。 どこが悪いのかご教示くださいませ。 Sub メッセージ() Dim MG As String Select Case Time Case Time < "16:00:00" MG = "こんにちは。" Case Time < "12:00:00" MG = "おはようございます。" Case Time >= "16:00:00" MG = "こんばんは。" End Select MsgBox MG End Sub

  • VB2008EEのSelect Case

    VB2008EEのSelect Case devilconanさんとのやりとりを締めてしまいましたが、 下記でdevilconanさんは動いているようですが、再度試してもこちらでは動きません。 しかし、別のPCのVB2008EEで試すことが出来たのですが、こちらでは動きました。 Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged Select Case sender.text Case "RadioButton1" aaa = "1" bbb = "" Case "RadioButton2" aaa = "" bbb = "2" End Select End Sub Elseを追加して、ラジオボタン1と2を交互にチェックすると、それぞれ「sssss」とMsgBoxが出ます。 別のPCだと下の記述で、「case1」「case2」が表示されました。 Select Case sender.text Case "RadioButton1" aaa = "1" bbb = "" MsgBox("case1") Case "RadioButton2" aaa = "" bbb = "2" MsgBox("case2") Case Else MsgBox("sssss") End Select 動いたPCも動かないPCもXPです。 同じファイルを開いているのですが、この違いは何でしょうか?  

  • Select Caseのisについて

    Isは変数名ではないですよね? Sub isを使った場合() Dim i As Long i = 2 Select Case i Case Is < 3 Debug.Print "3以下です" Case Else Debug.Print "3以上です" End Select End Sub 例えばこのようなサンプルの時、 Case Is < 3 の時は Case 2 < 3 Case i < 3 と同じ意味ですよね? という事は、is=i=2だと思ったのですが、 Sub 変数を使った場合() Dim i As Long i = 2 Select Case i Case i < 3 Debug.Print "3以下です" Case Else Debug.Print "3以上です" End Select End Sub だと、なぜか3以上ですになってしまいます。 ISの仕組みがよくわからないのですが、 Case Is < 3はCase 2 < 3 なってるわけではないのでしょうか?

  • select case文について

    リストから選択とリストに無い値の入力のリストへの追加をしたく、あちこちの情報をつぎはぎで下記のようにVBAで動かそうとしましたが、うまく動いてくれません。 前(Case A)は動くのですが、あと(Case 2)が機能しません。 それと、3つ以上をSelectCaseで組む場合の方法も合わせてお願いします。 Private Sub Worksheet_Change(ByVal Target As Range) Dim c As Range Dim LastR As Long Select Case Target.Address(0, 0) Application.EnableEvents = False Case "D1" With Worksheets("Sheet2") LastR = .Range("A36636").End(xlUp).Row Set c = .Range("A1:A" & LastR).Find( _ Target.Value, , xlValues, xlWhole, xlByColumns, xlPrevious, True) If c Is Nothing Then If vbNo = MsgBox("リストに追加しますか?", _ vbYesNo, "追加の確認") Then Application.EnableEvents = True Exit Sub End If .Range("A" & LastR + 1).Value = Target.Value .Range("A1:A" & LastR + 1).Name = "リストA" End If With Target.Validation .Delete .Add Type:=xlValidateList, Formula1:="=リストA" .ShowError = False End With Case "E1" With Worksheets("Sheet2") Set c = .Range("B1:B" & LastR).Find( _ Target.Value, , xlValues, xlWhole, xlByColumns, xlPrevious, True) If c Is Nothing Then If vbNo = MsgBox("リストに追加しますか?", _ vbYesNo, "追加の確認") Then Application.EnableEvents = True Exit Sub End If .Range("B" & LastR + 1).Value = Target.Value .Range("B1:B" & LastR + 1).Name = "リストB" End If End Select End With With Target.Validation .Delete .Add Type:=xlValidateList, Formula1:="=リストB" .ShowError = False End With Application.EnableEvents = True End Sub

  • Select case で条件演算子は使用可能?

     知っている方にはつまらない質問でしょうが…VB6.0でSelect case に条件演算子を使う事ってできないんでしょうか?  つまり、 if i < 0 then j = 0 else if i = 0 then j = 1 else if i > 0 then j = 2 end if  こんな感じの条件をSelect Caseで使えませんか?と言うことなんですが…

専門家に質問してみよう