• ベストアンサー

VBScriptのCase文内でOrは使えますか?

VBScriptで質問なのですがCase文内で"Or"は使えるのでしょうか? 具体的にいうと今日の日付が1日から5日の間は1を、6日から10日の間は6を返すというように、以下のようなコマンドを行いたいのですが Select Case Day(Now) Case "1" Or "2" Or "3" Or "4" Or "5": S = 1 Case 6 Or 7 Or 8 Or 9 Or 10: S = 6 End Select これでは機能しませんでした。 何かやり方があれば教えてください よろしくお願いします。

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

  • ベストアンサー
回答No.1

Select Case AAA ' AAA を評価します。 Case 1 To 5 ' AAA の値が 1 ~ 5 の場合。 Debug.Print "1 から 5 の間" ' この例では、AAA に 8 を代入しているため、True と評価されるのは次の Case 節だけです。 Case 6, 7, 8 ' AAA の値が 6 ~ 8 の場合。 Debug.Print "6 から 8 の間" Case Is > 8 And AAA < 11 ' AAA の値が 9 または 10 の場合。 Debug.Print "9 または 10" Case Else ' その他の値の場合。 Debug.Print "1 から 10 以外の数値" End Select

KENDI2GOU
質問者

お礼

すばやい回答ありがとうございます。 Case 1 To 5 を使って無事使えるようになりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Select case の条件にOrは使えない???

    いつもお世話になっています。 ASP(VBScript)でプログラミング中です。 多分VBでは出来たと思うのですが、 Select case A case 1 Or 2       処理A End Select のように、Aが1でも2でも通って欲しい処理があるのですが、 上記のように書いた場合 Aが1でも2でも 処理Aを通ってくれません。 こういう記述の仕方って出来ませんでしたっけ? Select case A case 1       処理A   case 2 処理A End Select のように2回同じことを書かなきゃいけないんでしょうか・・・ それとも何か他のところでミスってるだけで、こういう書き方はOKなのでしょうか?困ってます。よろしくお願いします。

  • 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 を OR でつなげたい場合?。

    SELECT CASE を OR でつなげたい場合?。 SELECT CASE を OR でつなげて判定したいと思います。 下記の構文は正しくないと思います。 どなたか分かる方がいればご教授下さい。 Select Case tuki_hantei Case 3 Or 6 Or 9 Or 12 syuuki = 1 Case 1 Or 4 Or 7 Or 10 syuuki = 2 Case 2 Or 5 Or 8 Or 11 syuuki = 3 End Select

  • CASE文での問い合わせ

    下記のSQLでWHEREでnow_tが存在しないとでてSQLを実行できません。 どのようにしたらnow_tをWHEREで判定できるでしょうか。 WHEREが先に実行される為に存在しないというエラーがでるのは わかるんですが、でないようになんとかできないでしょうか? SELECT CASE WHEN s = 1 THEN 1 ELSE 2 END AS now_t FROM test WHERE now_t = 1

  • VBScriptについて教えてください!

    VBScriptで日付が記載されたテキストファイルを読み込み 読み込んだ値と今日の日付を比較する処理をしたいのですが、 今日の日付と異なるのに一行目でいきなり一致との判断をしてしまいます。 どうしてなんでしょうか? すごく初歩てきなことかもしれませんが、御教授願います。 <日付が記載されたテキストの内容> 20090401 20090502 20090603 ・ ・ ・ <スクリプト内容> '本日を取得 strTodayTmp=Year(Date) & Month(Date) & Day(Date) 'ファイルの内容を全部読み終えるまでループ Do Until objInFile.AtEndOfStream = true 'ファイルの内容を1行ずつ読み込む strRecord=objInFile.ReadLine intCompare = StrComp(strRecord, strTodayTmp, vbTextCompare) '読み込んだ内容と一致するか If intCompare = 0 Then 'フラグオン blnGo=1 end if Loop

  • 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 case判定で

    Excel2010 Win7使用 VBA独学中の初心者です。 下記のcase判定でTrueなのに、Trueと判定してもらえません。 解決策を教えて頂けると助かります。 また、もっとスマートな方法があれば、 併せて教えて頂けると助かります。 例) hの中に"早い"という文字列がある場合  Case InStr(h, "早い") > 0 において、InStr=1が入っている場合でも Trueと判定されず、次のcaseに移行してしまいます。 Sub chg2() Dim r As Long Dim c As Long Dim day As Long Dim dc As Long Dim h As String day = Right(Range("S5"), 2) Select Case day Case 28 dc = 30 Case 29 dc = 31 Case 30 dc = 32 Case 31 dc = 33 End Select For r = 53 To Range("A52").End(xlDown).Row Step 2 For c = 3 To dc h = Cells(r, c) Select Case h Case InStr(h, "早い") > 0   h = Replace(h, "早い", "a")   Case InStr(h, "遅い") > 0 h = Replace(h, "遅い", "b")   ・   ・   ・  End Select Next c Next r End Sub

  • Accessのフォームのオープンのコマンド。

    テーブル1 ・名前 ・誕生日 ・年齢 フォーム1 ・名前 ・誕生日 ・年齢 ・コマンドボタン コマンドボタンのコード Private Sub コマンド6_Click() Age_Keisan End Sub 関数Age_Keisanのコード Private Sub Age_Keisan() Dim Age As Integer Dim Birth_Y As Integer Dim Birth_M As Integer Dim Birth_D As Integer Dim Now_Y As Integer Dim Now_M As Integer Dim Now_D As Integer Birth_Y = Left([誕生日], 4) Birth_M = Right(Left([誕生日], 7), 2) Birth_D = Right([誕生日], 2) Now_Y = Left(Date, 4) Now_M = Right(Left(Date, 7), 2) Now_D = Right(Date, 2) Select Case Birth_M Case Is < Now_M Age = Now_Y - Birth_Y Me![年齢] = Age Case Is > Now_M Age = Now_Y - Birth_Y - 1 Me![年齢] = Age Case Is = Now_M Select Case Birth_D Case Is <= Now_D Age = Now_Y - Birth_Y Me![年齢] = Age Case Is > Now_D Age = Now_Y - Birth_Y - 1 Me![年齢] = Age End Select End Select End Sub となっています。 これですと、年齢を入れて、ボタンを押さないと誕生日が過ぎた場合、年齢が増えていきません。 クエリーを使用してフォームをつくればよかったのですが、テーブルから直接フォームを作成しているので 計算もできません。 できればフォームのオープンコマンドに上記のボタンと同じような機能を入れたいのですが、 どのようにすればいいのでしょうか?

  • 項目以外の文字列は連結できますか?

    やりたいことは、日付と時間の項目から 現在時刻を過ぎているかのフラグを返す事ですが、 MySQLで普通の文字列を連結する方法がわかりません。 どのようにすれば実現できるでしょうか? SELECT IF(CONCAT(end_day,end_time) < NOW(), 1,0) end, from test testテーブル |end_day |end_time |2006-03-15 | 10:00 |2006-03-20 | 10:00

    • ベストアンサー
    • MySQL
  • VBScript について 初心者です

    会社内でmsgファイルから添付ファイルを抽出するVBScriptを以下のコードで利用させてもらっています。ただ、同じファイル名の場合は取出すことができません。アンケート.xlsx、アンケート(2).xlsx、などという形でもれなく取出せるようにできないでしょうか?よろしくお願いいたします。 Option Explicit Dim args Dim olApp Dim i Const SaveFolderPath = "C:\Test" '添付ファイルの保存先フォルダ(※要変更) Set args = WScript.Arguments If args.Count < 1 Then MsgBox "msgファイルを当スクリプトファイルにドラッグ&ドロップしてください。", vbExclamation + vbSystemModal WScript.Quit End If With CreateObject("Scripting.FileSystemObject") If .FolderExists(SaveFolderPath) = False Then MsgBox "添付ファイルの保存先フォルダが見つかりませんでした。" & vbCrLf & _ "処理を中止します。", vbCritical + vbSystemModal WScript.Quit End If Set olApp = CreateObject("Outlook.Application") For i = 0 To args.Count - 1 If .FileExists(args(i)) = True Then Select Case LCase(.GetExtensionName(args(i))) Case "msg" 'msgファイルのみ処理 SaveMsgAttachments olApp, args(i), AddPathSeparator(SaveFolderPath) End Select End If Next olApp.Quit End With MsgBox "処理が終了しました。", vbInformation + vbSystemModal Private Sub SaveMsgAttachments(ByVal OutlookApp, ByVal MsgFilePath, ByVal SaveFolderPath) Dim itm 'Outlook.MailItem Dim atc 'Outlook.Attachment Dim fn With OutlookApp.GetNamespace("MAPI") Set itm = .OpenSharedItem(MsgFilePath) Select Case LCase(TypeName(itm)) Case "mailitem" If itm.Attachments.Count < 1 Then MsgBox "添付ファイルがありません。" & vbCrLf & _ "(ファイル名:" & MsgFilePath & ")", vbExclamation + vbSystemModal Exit Sub Else With CreateObject("Scripting.FileSystemObject") For Each atc In itm.Attachments fn = SaveFolderPath & atc.FileName If .FileExists(fn) = True Then .DeleteFile fn, True '同名のファイルがあったら事前に削除 End If atc.SaveAsFile fn Next End With End If End Select End With End Sub Private Function AddPathSeparator(ByVal s) If Right(s, 1) <> ChrW(92) Then s = s & ChrW(92) AddPathSeparator = s End Function