• ベストアンサー

VBScript 月を二桁で取得したい

よろしくお願いします。 <% tuki = month(Date) %> で月を取得すると、1~9月は一桁でかえってきます。 例えば今は2月なので tuki = 2 です。 これを"02"のように、必ず月を二桁で取りたいのですが・・・。 <% if (1 <= tuki <= 9) then tuki = "0" & CStr(tuki) endif %> のように編集するしかないのでしょうか? 自動的に2桁で取れる方法があれば助かるのですが・・・。

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

  • ベストアンサー
  • hequil
  • ベストアンサー率65% (242/372)
回答No.2

余計なおせっかいかもしれませんが・・・(^^;; > どういう機能がサポートされているとか > どういうことができるとかよくわからなかったので > とてもたすかりました。 それでしたら、参考URLから > 32 ビット版 VBScript のドキュメントのダウンロード をダウンロードされてみてはどうでしょう。 WindowsHelp形式のVBScriptリファレンスなので、 手元に置いておくとかなり重宝するかと思います。 参考まで

参考URL:
http://www.microsoft.com/japan/developer/scripting/vbScript/download/vbsdown.htm#DOC
snowair
質問者

お礼

重ね重ねありがとうございます。 さっそくダウンロードしました。 がんばります!

その他の回答 (1)

  • hequil
  • ベストアンサー率65% (242/372)
回答No.1

残念ながら出来ません。 自作で関数を作って、それを利用するようにすると良いかと思います。 私の場合、数字を○桁にするというのはちょくちょく必要になってくるので、 Function FormatN( num, intLength )  FormatN = Right(String(intLength, "0") & CStr(num), intLength) End Function といった関数を作成し、 tuki = FormatN(Month(Now), 2) のように月を2桁で取得しています。 参考まで

snowair
質問者

お礼

なるほど、なるほど、ありがとうございます! まだVB歴が浅いので、どういう機能がサポートされているとか どういうことができるとかよくわからなかったので とてもたすかりました。 参考にさせてください。

関連するQ&A

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

    今日が6月か、9月か、12月か、3月なら「予定月です」と表示する最も短いスクリプトを教えていただけないでしょうか。caseとかを使えばいいものでしょうか。 素人がやると下記のようになってしまいます。 <% If Month(date()) = 6 or Month(date()) = 9 or Month(date()) = 12 or Month(date()) = 3 then %> 予定月です。 <% Else %> 違います。 <% End if %> #プログミングの初心者のため、初歩的なところを確認したいと思っての質問です。

  • 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

  • 月日のシートタブを使って,順番に並び替える方法?

    こんにちは,よろしくお願いします。 VBAに関する質問です。 ワークシートのタブに「12月 1日」とか「 2月28日」とか「 6月14日」などの名前が付けられています。これらのワークシートを,4月1日から翌年の3月31日までの順に並べ替えるプログラムを作りたいのですが,どのようにしたらよいか教えてください。 全てのワークシートの名前を取得し,”月”が何文字目に入っているかを検索し,Left関数で月数を切取り,それによって年度を加え,これをCDateで日付関数に変換したりなどして見ました。 For Each Wsht In Worksheets If InStr(Wsht.Name, "月") = 3 Then Tuki = CInt(Trim(Left(Wsht.Name, 2))) If Tuki > 0 And Tuki < 4 Then Hiduke = "2012年" & Wsht.Name ElseIf Tuki > 3 And Tuki < 10 Then Hiduke = "2011年" & Wsht.Name End If ElseIf InStr(Wsht.Name, "月") = 4 Then Hiduke = "2011年" & Wsht.Name End If Next 日付関数への変換は抜いていますが,この後,Date型の配列と文字列型の配列を用意し, Date型の配列にはCDateで変換した値を代入し,文字列型の方には,元々のシートタブの値を代入し,Date型の方で,最小値ををfor~nextで探し出すなどして,文字列型の方を添え字の順になるように並び替えて・・・・もう手一杯です。 さらにこれをWorksheets(" 6月14日").move before:=**** などというメソッドを使って並び替えなくてはいけないとなると,もう私の力ではオーバーフローです。 すみません。どなたかお助けください。

  • VBAでサブフォームに自動的にデータを入力したい。

    VBAでサブフォームに自動的にデータを入力したい。 メインフォームに[工期自][工期至]フィールドがあります。 サブフォームに[請求予定日]フィールドがあります。 メインとサブは[管理No.]フィールドで繋がっています。 メインフォームの"請求"テキストをクリックすると、サブフォームが開きます。 そこで[工期至]フォーカス喪失時に、自動で[請求予定日]が入るようにしようと思います。 工期の期間中、毎月月末が請求予定日になります。 [工期自]の入力が無い場合は[工期至]の月の月末のみ請求になります。 下記のようなプロシージャを書いてみましたが、結果、データが全く入りません。 ADO(←まだ全く分かりません)というのを使わないとできないでしょうか? すいませんごちゃごちゃしてますが宜しくお願いします! Private Sub 工期至_Exit(Cancel As Integer) Dim SEIKYU As Date Dim TUKI As Integer Dim SYURYO As Integer DoCmd.OpenForm "サブ", acFormDS, , "管理No.='" & Me!管理No. & "'", acFormEdit If IsNull(Forms!サブ!請求書発行) Then If IsNull(Me.工期自.Value) Then SEIKYU = Me.工期至 TUKI = Month([工期至]) Else SEIKYU = Me.工期自 TUKI = Month([工期自]) End If SYURYO = Month([工期至]) + 1 Do Until TUKI = SYURYO Forms!サブ!管理No. = "[forms]![メイン]![管理No.]" Forms!サブ!請求書発行 = DateSerial(Year(SEIKYU), Month(SEIKYU) + 1, 0) SEIKYU = DateAdd("m", 1, SEIKYU) TUKI = Month(SEIKYU) Loop DoCmd.CLOSE acForm, "サブ" End If End Sub

  • VBA 日付型を8桁数値へ変換

    VBAの中で、Date型の日付をバッチファイルに渡す時に、8桁数値へ変換したいのですが、0埋めのやり方が分からずに困っております。 Date型 yyyy/mm/dd 8桁数値 yyyymmdd Private Sub cmdBSubmit_Click() Dim rc As Integer Dim sDate As Date Dim eDate As Date '開始日・終了日処理 sDate = DateAdd("d", -5, txtsDate) eDate = DateAdd("d", 5, txteDate) Debug.Print "----------------------" Debug.Print "開始日-5:" & sDate Debug.Print "終了日+5:" & eDate 'パブリック変数へ、日付格納 sDateP = Year(sDate) & Month(sDate) & Day(sDate) eDateP = Year(eDate) & Month(eDate) & Day(eDate) Debug.Print "----------------------" Debug.Print "開始日:" & sDateP Debug.Print "終了日:" & eDateP rc = MsgBox("開始日 : " & sDate & vbCrLf & _ "終了日 : " & eDate & vbCrLf & _ "抽出を開始します宜しいですか?", vbYesNo + vbQuestion, "確認") If rc = vbYes Then '集計バッチを実行 'MsgBox "実行" Call 抽出 Else '中止 MsgBox "中止" End If End Sub 'パブリック変数へ、日付格納 sDateP = Year(sDate) & Month(sDate) & Day(sDate) eDateP = Year(eDate) & Month(eDate) & Day(eDate) この書き方だと、月・日が一桁の場合、例えば「2013/01/01」だと、”201311”になってしまいます。 これを、"20130101"にしたいのですが、どう書けば宜しいでしょか? 最初から、8桁日付で入力すればよいのでしょうか、入力した日付の前後5日を自動的に増やす必要がある為に上記の仕様にしてます。

  • vb6の桁数指定

    こんばんわ。 vb6使用で、色々探してみたのですが、わかりませんでした。 12313133→そのまま 9797879797977896→9797977896 121212→そのまま 等を10桁に変換する関数です。 If IsNumeric(val) Then val = Format(val, "##########") endif これで10桁にできないのですが、正しい方法を教えてほしいです。 同様に 111.938 を 11.9(3は四捨五入) にする方法も、##.0ではないでしょうか? よろしくお願い致します。

  • VBAの年月を取得したいのですが

    以下のように作成したのですが、 年:XXXX 4桁 できました。 月:XX 2桁ができません、1桁になります。   5月なら05として取得したいのですが、修正方法がわかりません A1には、2009/5/1と入力しています。 VBAに詳しい方で簡単に、どうぞお願いします。 Sub sample() Dim myDate As Date myDate = Range("A1").Value Range("B7").Value = Year(myDate) Range("C7").Value = Month(myDate) Range("D7").Value = Day(myDate) End Sub

  • AccessVBA で月を2桁で入力させたい。

    質問します。 Access2000で日付をフォームから入力させます。 日付は月と日に別れています。その月フォームで「8」と入力するのではなく「08」と入力させたいのです。 (月はテキストボックスです。) そこで以下のようなVBAを書きました。 Private Sub 月_Exit Dim MM As Variant MM = Len(Me!月) If MM = Not 2 Then Msgbox "2桁で入力してください。" Docmd.GotoControl ("月") End if そうしたら、「8」といれても、「08」と入れても メッセージが表示されてしまいます。 さらにGotoControlが効いておらず、次の日付テキスト ボックスにフォーカスが移動してしまうのです。トホホ・・ こんな初歩的な質問でお恥ずかしいのですが・・・ 回答お待ちしております。

  • VBScriptでfindを使うには??

    ExcelのA列に日付がずらずらと入っているのですがその中から「今日」に該当する部分を探したいと思っています。 findを使うことが出来ないでいます。 Const xlValues = -4163 Set objExcelApp = CreateObject("Excel.Application") objExcelApp.Visible = True objExcelApp.Workbooks.Open("C:\Book1.xls") strLastDay = Cstr(Date - 1) With objExcelApp.WorkSheets("Sheet1").Rangge("A8:A65535") Set objClm = .Find(Trim(strLastDay),,xlValues) If Not objClm Is Nothing Then intCol = objClm.Column intRow = objClm.Row このあとどうしたらいいかわかりません・・・お願いします。

  • Bookを指定して開くマクロについて

    私は、今行の移動マクロを作成しています。 (1)対象のエクセルには1月から12月までのシートが存在する (2)移動はシート間の移動 (3)移動ボタンを押すとユーザフォームを表示 (4)ユーザフォームで移動月(シート)と移動する行を記入 (5)移動先シートの最終行にコピー このマクロを別のBookにコピー可能なようにしたいのですが、その方法が分かりません。 今考えている方法としては、 (1)ユーザフォームに「別の月」というボタンを作る (2)別の月をクリックするとファイル選択画面を出す (3)移動したいBookを選択する (4)開いたBookの名前を取得し、そのBookに移動する (2)~(4)をどうやったら良いのかさっぱり分からない状況です。 ネットで調べても、最初からBook名が分かっている場合しか出てきません。 どうかご教授お願致します。 ☆下記のようなマクロを書いてます。☆ '移動先にオートフィルターがかかっていたら外す If Worksheets(tuki).AutoFilterMode = True Then Worksheets(tuki).AutoFilterMode = False End If '移動先の行番号取得 If Worksheets(tuki).Range("B7").Offset(1).Value = "" Then idousaki = Worksheets(tuki).Range("B7").Offset(1).Row Else idousaki = Worksheets(tuki).Range("B7").End(xlDown).Offset(1).Row End If '移動行の情報取得 Dim r As Integer r = TextBox1.Value 'コピー ActiveSheet.Range("A" & r & ":AB" & r).Copy Destination:=Worksheets(tuki).Range("A" & idousaki & ":AB" & idousaki)

専門家に質問してみよう