• ベストアンサー

今日が6月か、9月か、12月か、3月なら

Masazo-の回答

  • Masazo-
  • ベストアンサー率48% (12/25)
回答No.2

Case文であれば短くはないですけど、予定月の変更や、別の文字を表示するといった変更などが楽そうですね。 <% Select Case Month(date())  Case 3,6,9,12   Response.Write("予定月です。")  Case Else   Response.Write("違います。") End Select %> あと、IF文に「Month(date())」が4つある事で4回の「Month(date())」を実行している気がします。IF文を使うのであれば変数に入れた値に対して判定するほうがいいですね。

関連するQ&A

  • 生年月日から学年を計算しようと以下のようにVBを用いて作りました。が、

    生年月日から学年を計算しようと以下のようにVBを用いて作りました。が、9月までは正しく学年が表示されたのですが、10月になったとたん、一つ前の学年が表示されるようになりました。 Function Jokyo(ByVal Umare As Variant) As String Dim idx As Integer Dim moji As String If IsNull(Umare) Then Jokyo = "" Exit Function End If '4月~12月での学齢計算 If Month(Date) >= "4" Then idx = DateDiff("yyyy", Umare, DateSerial(Year(Date), 4, 1)) If Format(Umare, "mmdd") < "0401" Then idx = idx + 1 End If ElseIf Month(Date) < "4" Then idx = DateDiff("yyyy", Umare, DateSerial(Year(Date) - 1, 4, 1)) If Format(Umare, "mmdd") < "0401" Then idx = idx + 1 End If Else idx = 19 End If '-------------------------------------------------- Select Case idx Case 0 To 4 moji = "未入学" Case 5 moji = "幼稚園年少" Case 6 moji = "幼稚園年長" Case 7 To 12 moji = "小学" & idx - 6 & "年生" Case 13 To 15 moji = "中学" & idx - 12 & "年生" Case 16 To 18 moji = "高校" & idx - 15 & "年生" Case Else moji = "既卒生" End Select Jokyo = moji End Function

  • 日付を入力すると何故か今日の日付に

    いつもお世話になります。 WINDOWS7 EXCELL2010 です。 参照図で言うと、 B2 に例えば 1/4 と入力すると 今日の日付になります。 何故なんでしょうか。 影響しているのかどうかわかりませんが参考に下記のようなコードを使用しています。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row >= 2 And Target.Address = Cells(Rows.Count, "C").End(xlUp).Address Then Target.Offset(0, -1).Value = Date End If Dim c As Integer If Target.Column <> 2 Then Exit Sub If Target.Value = "" Then c = 0 Else On Error GoTo line Select Case Month(Target.Value) Case 1: c = 46 Case 2: c = 4 Case 3: c = 39 Case 4: c = 6 Case 5: c = 7 Case 6: c = 8 Case 7: c = 43 Case 8: c = 3 Case 9: c = 44 Case 10: c = 24 Case 11: c = 40 Case 12: c = 17 End Select End If Target.Offset(0, -1).Interior.ColorIndex = c Target.Offset(0, -1).Font.ColorIndex = IIf(c = 1, 2, 0) Exit Sub line: Target.Offset(0, -1).Interior.ColorIndex = 0 Target.Offset(0, -1).Font.ColorIndex = 0 End Sub

  • Access ○or△文の書き方

    2003です。 月のコントロールを作りました。 Me.月 = Year(Now) としています。 そこから、10月か11月か12月と、その他を分けたいです。 If Me.月 = 10 Or 11 Or 12 Then 1番 else 2番 end if としてみました。 実行してみたら、今4月なので、 2番を通ってくれると思いきや、 何故か1番を通っていました。 If Me.月 = 10 Then としてみたら、ちゃんと2番を通りました。 Case 10 to 12   1番 Case else   2番 とした場合も、2番を通ってくれました。 現在、この方法で、応急処置しています。 orを入れると1番を通ってしまうように見えるのですが、 何故なのでしょうか。

  • D2に入力、B2に今日の日付のVBAを追加したいが

    いつもお世話になります。 WINDOWS7 EXCELL2010 です。 ご指導を仰ぎたいのは、 D2に顧客名(参照図では 田中) と入力したら B2に 今日の日付(2013/06/14)としたい。 追加する前のVBAは下記です。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row >= 2 And Target.Address = Cells(Rows.Count, "C").End(xlUp).Address Then Target.Offset(0, -1).Value = Date End If Dim c As Integer If Target.Column <> 2 Then Exit Sub If Target.Value = "" Then c = 0 Else On Error GoTo line Select Case Month(Target.Value) Case 1: c = 46 Case 2: c = 4 Case 3: c = 39 Case 4: c = 6 Case 5: c = 7 Case 6: c = 8 Case 7: c = 43 Case 8: c = 3 Case 9: c = 44 Case 10: c = 24 Case 11: c = 40 Case 12: c = 17 End Select End If Target.Offset(0, -1).Interior.ColorIndex = c Target.Offset(0, -1).Font.ColorIndex = IIf(c = 1, 2, 0) Exit Sub line: Target.Offset(0, -1).Interior.ColorIndex = 0 Target.Offset(0, -1).Font.ColorIndex = 0 End Sub 上のマクロに下記のマクロを追加すると参照図のようなエラーが表示されます。 下記のマクロの何かが間違っていると考えています。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("D2:D100")) Is Nothing Then Exit Sub If ActiveCell = "" Then ActiveCell = Date Cancel = True End If End Sub ご指導いただけるとうれしいです。

  • VBA マクロについて

    自作のカレンダーに自動で日付を判定、入力してくれる ロジックを作っていたのですが、 2、4、6、9、11月以外は31日分表示されるはずが。。。 表示されませんでした。 恐らくロジックがおかしくて i=31 が通っていないものと 思われますが、ちょっとよく分かりません。 初心者で低レベルな質問ですけど、どなたかお願いします。 Sub AutoCarender() '自動でカレンダーの日付を入力するプログラム Dim month, i As Integer '表示させたい月 month = 3 If (month = 2) Then i = 28 ElseIf (month = 4 Or 6 Or 9 Or 11) Then i = 30 Else i = 31 End If Dim tate, yoko As Integer Dim week As Integer week = (Weekday(2009 / month / 1, 2)) yoko = Choose(week, 1, 3, 5, 7, 9, 11, 13) tate = 3 For j = 1 To i '"シートの名前"を指定 Worksheets("Sheet1").Cells(tate, yoko).Value = j yoko = yoko + 2 If (yoko > 13) Then yoko = 1 tate = tate + 2 End If Next End Sub

  • うまくできない??NO3

    If Index = 1 Or 6 Or 11 Or 16 Or 21 Then If P1(1).BackColor = vbRed Then P1(1).BackColor = vbBlue Else P1(1).BackColor = vbRed End If If P1(6).BackColor = vbRed Then P1(6).BackColor = vbBlue Else P1(6).BackColor = vbRed End If If P1(11).BackColor = vbRed Then P1(11).BackColor = vbBlue Else P1(11).BackColor = vbRed End If If P1(16).BackColor = vbRed Then P1(16).BackColor = vbBlue Else P1(16).BackColor = vbRed End If If P1(21).BackColor = vbRed Then P1(21).BackColor = vbBlue Else P1(21).BackColor = vbRed End If '-------------------------------------------------------------------- ElseIf Index = 2 Or 7 Or 12 Or 17 Or 22 Then ~~~省略 ElseIf Index = 5 Or 10 Or 15 Or 20 Or 25 Then If P1(5).BackColor = vbRed Then P1(5).BackColor = vbBlue Else P1(5).BackColor = vbRed End If If P1(10).BackColor = vbRed Then P1(10).BackColor = vbBlue Else P1(10).BackColor = vbRed End If If P1(15).BackColor = vbRed Then P1(15).BackColor = vbBlue Else P1(15).BackColor = vbRed End If If P1(20).BackColor = vbRed Then P1(20).BackColor = vbBlue Else P1(20).BackColor = vbRed End If If P1(25).BackColor = vbRed Then P1(25).BackColor = vbBlue Else P1(25).BackColor = vbRed End If End If '--------------------------------------------------------------------- End Sub ※みにくくてすいません リンクを張るのは禁止らしいので・・・できないですね・・・ 関連URL:http://oshiete1.goo.ne.jp/kotaeru.php3?qid=418248 関連URL:http://oshiete1.goo.ne.jp/kotaeru.php3?qid=418250

  • うまくできない??NO2

    Private Sub P1_Click(Index As Integer) If Index = 1 Or 2 Or 3 Or 4 Or 5 Then If P1(1).BackColor = vbRed Then P1(1).BackColor = vbBlue Else P1(1).BackColor = vbRed End If If P1(2).BackColor = vbRed Then P1(2).BackColor = vbBlue Else P1(2).BackColor = vbRed End If If P1(3).BackColor = vbRed Then P1(3).BackColor = vbBlue Else P1(3).BackColor = vbRed End If If P1(4).BackColor = vbRed Then P1(4).BackColor = vbBlue Else P1(4).BackColor = vbRed End If If P1(5).BackColor = vbRed Then P1(5).BackColor = vbBlue Else P1(5).BackColor = vbRed End If '------------------------------------------------------------------- ElseIf Index = 6 Or 7 Or 8 Or 9 Or 10 Then ~~~~~ 省略 ElseIf Index = 21 Or 22 Or 23 Or 24 Or 25 Then If P1(21).BackColor = vbRed Then P1(21).BackColor = vbBlue Else P1(21).BackColor = vbRed End If If P1(22).BackColor = vbRed Then P1(22).BackColor = vbBlue Else P1(22).BackColor = vbRed End If If P1(23).BackColor = vbRed Then P1(23).BackColor = vbBlue Else P1(23).BackColor = vbRed End If If P1(24).BackColor = vbRed Then P1(24).BackColor = vbBlue Else P1(24).BackColor = vbRed End If If P1(25).BackColor = vbRed Then P1(25).BackColor = vbBlue Else P1(25).BackColor = vbRed End If End If '------------------------------------------------------------------ 続く・・・ 関連URL:http://oshiete1.goo.ne.jp/kotaeru.php3?qid=418248

  • VBAについて

    以下のプログラムは、1年間の価格合計を求めるプログラムです。 これを実行するとうまくいくこともありますが、エラーが起きることもあります。 どうやら下記コードが原因のようなのですが、間違いがわかりません。 Target.Offset(0, 1).Value = run * (13 - month) どこが間違っているのでしょうか。 また最終的に、A行かB行のどちらかが更新されたときにこのプログラムを 実行させたいのですが、方法がわかりません。 無知な質問ではありますが、どなたか教えてください。 --------------------------------------------------------- Private Sub Worksheet_Change(ByVal Target As Range) Dim month As Integer Dim run As Integer If Intersect(Target, Range("A25:A35")) Is Nothing Then Exit Sub Else If Target.Offset(0, -2).Value <> "" Then month = Target.Offset(0, -2).Value month = month - 3 If month = -2 Then month = 10 ElseIf month = -1 Then month = 11 ElseIf month = 0 Then month = 12 End If run = Target.Offset(0, 0).Value Target.Offset(0, 1).Value = run * (13 - month) End If End If End Sub

  • Request.Querystringについて

    ASPについて教えてください。 基本的な質問です。プログラム初心者です。 プログラムを前の方へ辿っていっても、 以下のスクリプトでRequest.QueryStringする"YM"や"MOVE"が定義されているところが見当たりません。 環境変数?にもそのようなものは、無さそうなのですが。 この"YM"や"MOVE"はどのようなものと考えれば良いでしょうか? スクリプトなので上から順番に処理されていくと理解していたのですが、 そもそも間違いでしょうか? <% sYM = Request.QueryString("YM") If sYM = "" Then iYear = Year(Now()) iMonth = Month(Now()) Else iYear = Left(sYM,4) iMonth = Right(sYM,2) End If sMove = Request.QueryString("MOVE") If sMove <> "" Then If sMove = "Next" Then ix = 1 Else ix = -1 End If iTmp = DateSerial(iYear, iMonth + ix, 1) iYear = Year(iTmp) iMonth = Month(iTmp) End If iLastDay = Day(DateSerial(iYear, iMonth + 1, 1 - 1)) iDay = 1 - Weekday(DateSerial(iYear, iMonth, 1)) + 1 Response.Write "" Response.Write "" Response.Write "" sPrg = "calendar.asp?YM=" & iYear & Right("00" & iMonth, 2) Response.Write "" Response.Write "" Response.Write "" For x = 0 To 6 If x = 0 Then sCol = "#EECCCC" Else sCol = "#EEEEEE" End If Response.Write "" Next For y = 0 To 5 Response.Write"" For x = 0 To 6 If x = 0 Then sCol = "#FFCCCC" Else sCol = "WHITE" End If If Date() = DateSerial(iYear, iMonth, iDay) Then sCol = "#FFE6CC" fToday = True Else fToday = False End If If iDay > 0 Then Response.Write "" Else Response.Write "" End If iDay = iDay + 1 If iDay > iLastDay Then Exit For End If Next Response.Write "" If iDay > iLastDay Then Exit For End If Next Response.Write "

  • 2つの年月日の間の日数を求めるプログラム(PASCAL)

     大学の講義で、「2つの年月日を入力し、その年月日の間の日数を求めるプログラムを作成しなさい」という宿題が出たので、下のようにプログラムを作成したところ、…63(最後の行):parse error before '.'というエラーが出たのですが、なぜそのようなエラーが出るのかがわかりません。どう改善すべきか、アドバイスをお願いします。 program ex13(input,output); var year1,year2:1..9999; month1,month2:1..12; y1,y2:1..9999; m1,m2:1..12; d1,d2:1..31; n1,n2:1..9999999; begin writeln('question 13'); writeln('Please key the old date.'); write('Y: '); read(y1); write(' M: '); read(m1); write(' D: '); readln(d1); writeln('Please key the new date.'); write('Y: '); read(y2); write(' M: '); read(m2); write(' D: '); readln(d2); for year1:= 1 to y1 do begin if ((year1 mod 4 = 0) and not (year1 mod 100 = 0)) or (year1 mod 400 = 0) then n1:=n1+366 else n1:=n1+365 end; for month1:= 1 to m1 do begin case month1 of 3,5,7,8,10,12,1: n1:=n1+31; 4,6,9,11: n1:=n1+30; 2: if ((y1 mod 4 = 0) and not (y1 mod 100 = 0)) or (y1 mod 400 = 0) then n1:=n1+29 else n1:=n1+28 end; n1:=n1+d1; for year2:= 1 to y2 do begin if ((year2 mod 4 = 0) and not (year2 mod 100 = 0)) or (year2 mod 400 = 0) then n2:=n2+366 else n2:=n2+365 end; for month2:= 1 to m2 do begin case month2 of 3,5,7,8,10,12,1: n2:=n2+31; 4,6,9,11: n2:=n2+30; 2: if ((y2 mod 4 = 0) and not (y2 mod 100 = 0)) or (y2 mod 400 = 0) then n2:=n2+29 else n2:=n2+28 end; n2:=n2+d2; writeln('Ans.',n2-n1); end.