- ベストアンサー
エクセルVBA Select Case いついて
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
設定の順番が間違えてます。これでは"おはようございます"は表示されません。 Case の後はTimeではなくIs 時間は小数に直すか、分数にした方が間違いないです。 最後の条件はElseにすれば残った条件に対応します。 Sub メッセージ() Dim MG As String Select Case Time Case Is < 1 / 2 MG = "おはようございます。" Case Is < 2 / 3 MG = "こんにちは。" Case Else MG = "こんばんは。" End Select MsgBox MG End Sub
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17068)
私もよく勘違いします。 Select Case 何々 Caseの後は、何々なしで、値を書けば良い。 (A)「値」にピッタリのものを目指す時は、値だけを 記述 しかしなぜか (B)(=を除き)比較演算子<などを使うときは IS(IS演算子)が要る。 深い理由はあるのだろうが、無しにして欲しいと思ったものです。 余分ですが、他の言語などでは、時刻を定数として表現する場合に#で囲む必要があったりで、要注意。
お礼
> 比較演算子<などを使うときは > IS(IS演算子)が要る。 不思議ですねえ。 ありがとうございました。
- kaekaekaede
- ベストアンサー率34% (11/32)
Sub メッセージ() Dim MG As String Select Case Time Case Is < "16:00:00" MG = "こんにちは。" Case Is < "12:00:00" MG = "おはようございます。" Case Is >= "16:00:00" MG = "こんばんは。" End Select MsgBox MG End Sub ってのでどうでしょう?
お礼
ありがとうございます。 でも、この順番だと「おはよう」がでないのじゃありません?
- project-a
- ベストアンサー率54% (107/195)
case では判断文は使用できません。 以下のようにします。 ----------------------------------------- Dim MG As String Select Case Hour(Time) Case 0 To 12 MG = "おはようございます。" Case 13 To 16 MG = "こんにちは。" Case Else MG = "こんばんは。" End Select MsgBox MG
お礼
あら! シンプルですね! 出来ました。 ありがとうございます♪
- taka451213
- ベストアンサー率47% (436/922)
こんにちは。 String対Stringって、比較できるんですか? (^^ゞ
補足
え? String対Stringの比較になってます?
関連するQ&A
- 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」と言う文字を含むのなら とするにはどうすればいいでしょう?
- ベストアンサー
- オフィス系ソフト
- 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 とするしかないでしょうか? 大文字小文字区別なく評価する方法があれば教えてください。よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- 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 ではダメなのか理由をご教授ください。ご回答よろしくお願いします。
- ベストアンサー
- Visual Basic
- VBAでFunctionの使い方
エクセルのVBAでFunctionの使い方がいまいちよくわかりません。 Function msg() Dim h As Integer h = Hour(Time) Select Case h Case Is < 12: msg = "おはようございます。" Case Is < 17: msg = "こんにちは。" Case Else: msg = "こんばんは。" End Select End Function Sub 挨拶() MsgBox msg End Sub とやってみたら一応正しく動くようですが、これであっているのでしょうか? 他の例などを見るとFunction msg()の()内にも何か入れなければならないようなのですが、わかりません。
- ベストアンサー
- オフィス系ソフト
- VBAでワイルドカードを使った文字列検索
初めて投稿いたします。 環境は、WinXP Access2000 下記のVBAモジュールで、文字列検索がヒットしません。 数字の比較でヒットするのはナゼでしょうか? ちなみに、変数に導入したのは、全角半角どちらも入れてみました。 この疑問・・・どなたか解決お願いします。 Sub TEST() Dim AAA As String Dim BBB As String Dim YYY As String AAA = "0" BBB = "2" YYY = AAA & BBB Select Case YYY Case "0*" MsgBox "ココを通り過ぎないで!" Case "15" MsgBox "やったね" Case Is > 0 MsgBox "なぜかココでヒットします??" End Select End Sub
- 締切済み
- その他MS Office製品
- Excel Select Case で変数を使うと表示されない。
Sub test1() Dim Fruits As String Dim Iro As String Sheets("Sheet1").Select Fruits = Range("A1").Value Iro = Range("B1").Value Select Case Fruits Case Is = "みかん" Iro = "オレンジ" End Select End Sub とすると、何の反応もありませんが、 Iro = "オレンジ" の箇所を Range("B1") = "オレンジ" とするときちんと表示されます。 なぜ変数ではダメなのでしょうか?
- ベストアンサー
- オフィス系ソフト
- EXCELのVBAでのSelectとActivateの違い
VBAの初心者です。 ExcelのVBAでメッセージを表示してシートを切換えるというのを作りたいのです。 見真似で作成したのが↓です。 Dim rtn As String rtn = MsgBox("シートを切換えますか", vbYesNo, "シートの切替") If rtn = vbYes Then Worksheets("送付先一覧").Activate Range("a1").Select Else Exit Sub End If 動作確認はできましたが、上記の「Activate」を「Select」に変更しても特に動作異常がありません。 そこで、疑問ですが、「Activate」と「Select」ってどうやって使い分けるのでしょうか?
- ベストアンサー
- オフィス系ソフト
- 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 このコードをまとめるはどうすればいいのでしょうか? よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- シートのセレクトのしかたを
シートのセレクトのしかたを 教えてください 下記のようなマクロを途中まで作りましたが うまく動作しません メッセージボックスには Sheet8.Select と表示されますが 実際にシート8をセレクトしたいのです どの様に書けばよいのかお教え下さい Sub Maco11() Dim ex As String Dim ey As String ex = ActiveWorkbook.Sheets.Count ey = "Sheet" & ex & ".Select" MsgBox ey ' ここにどの様に書けば良いのでしょうか End Sub
- ベストアンサー
- Windows Vista
- エクセル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
- ベストアンサー
- オフィス系ソフト
補足
> 時間は小数に直すか、分数にした方が間違いないです。 12時=24時*1/2 16時=24時*2/3 ですね?ここまではわかりました。 でも、すみません。なぜなの? もう1点 > 設定の順番が間違えてます。 Case Is < 2 / 3 を先に持ってくると 1 / 2もこれにはいってしまい、これで変数MGが「こんにちは」に決定してしまうということですね?