
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
今日の日付を変数で持ちたいなら以下のようになります
Sub Macro1()
Dim tDate As Date
tDate = Date
Range("A1").Value = tDate
End Sub
#02さんの補足で
>実は変数に利用するのは
>先月の月の数字なんです
>今日8月ですが
>1月の場合は変数に12を使いたいのです
これは意味が分かりません。もしかしたら「日付を変数で持つ」のではなく「月」を変数で持つということですか?
そうであれば整数型の変数になりますね
Sub Macro2()
Dim tDate As Date
Dim tMonth As Integer
tDate = Date '日付型変数に格納する
tMonth = Month(tDate) '日付型変数から「月」を取り出す
MsgBox tMonth & "月"
End Sub
No.4
- 回答日時:
<感想>
まず、質問文を見てやったことは、TODAYをExcelのヘルプで検索すること。
すると、日付/時刻関数として存在することが判りました。
つまり、これで、関数名の Today はチト拙いことが判ります。
ですから、VBエディタをオープンして、[挿入]-[標準モジュール]した後の[挿入]-[プロシージャ]の関数名を工夫。
Function を選び、[GetToday] としました。
Option Explicit
Public Function GetToday() As Date
End Function
その後、 As Date を付加して GetToday() 関数が、時刻/日付型を戻すようにしました。
Public Function GetToday() As Date
Dim Hiduke As Date
Hiduke = Date
GetToday = Hiduke
End Function
もちろん、変数に取り込まなくても構わないです。
Public Function GetToday() As Date
GetToday = Date
End Function
いずれにしろ、これで A1 の式に =GetToday() と書けば、本日の日付が表示されます。
なお、A1 の式に =Today() と書いても同じ結果を得られます。
そういう関数が用意されているので当然のことです。
<補足>
なお、特定のレンジに日付をコードでセットする場合のは、このような書き方も考えられます。
SetToday Me.Range(a1), 0 ' 本日
SetToday Me.Range(a1), -1 ' 先日
SetToday Me.Range(a1), 1 ' 明日
<シートのモジュール>
Private Sub CommandButton1_Click()
SetToday Me.Range(a1), 1
End Sub
<標準モジュール>
Public Sub SetToday(ByVal T As Range, ByVal M As Integer)
T = Date + M
End Sub
VB だけで関数を用いている限りでは、既定の関数との関数名の競合という不具合はないかも知れません。
が、式に組み込むことも考えられます。
そういう意味では、GetToday()、SetToday() とオリジナルな関数名を付与されることを勧めておきます。
No.3
- 回答日時:
質問のコードを実行したら
i = Day(Today())
の行でエラー指摘があり、「Functionまたは変数が必要です」と出るじゃないですか。
そこまで、絞って言ってくれているのに、質問が
「>今日の日付を変数に利用する場合は
と一般的であるのはおかしい。
変数が未定義か関数が見つからないといっているのに。
エクセル関数のTODAY()とVBAのNOW()の違いは、不統一だが、有名な点。
「Accessの場合、今日の日付を取得する関数はTODAYではなくDateなのです。」 ということもある。
ーー
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr; …
Range("a1").Value = WorksheetFunction.today()
については、todayはワークシート関数として提供されていないので、エラーが出ます。
ーー
すぐVBA todayでWEB照会してみたらどうです。
ーー
Dim i As String
と文字列にしているが、Day関数は整数を戻すとなっていますよ。
今回はエラーにはならないですが。またエクセルの強力な数値化機能で、数がセットされているが。
ーー
Sub Today()
関数やステートメントその他にありそうな名前をストレートにモジュール名、変数名などに
使わないほうが良いのではないですか。
この回答へのお礼
お礼日時:2007/08/17 12:07
>「Functionまたは変数が必要です」と出るじゃないですか。
そこまで、絞って言ってくれているのに
Functionって何を指しているのか用語がよくわかっていない
>すぐVBA todayでWEB照会してみたらどうです
そういう探し方をすることすら知らない、というか発想できない

No.1
- 回答日時:
>i = Day(Today())
ここが間違い。Day()の中にはToday()なんていうVBAで定義されていないでたらめな関数じゃなくてNowが入ります。それに質問者さんの書き方だと無駄が多いです。Sud Today()とEnd Subの間が質問者さんの書き方だと3行ですけど1行で済みます。一応、訂正済みのものを載せておきます。
Sub Today()
Range("A1").Value = Day(Now)
End Sub
それと、ココで聞く前に自分でも探す努力をしてください。「エクセル VBA」などで検索すればVBAの解説サイトがいくらでも出てきます。こんな初歩的な部分ならサイトの内容でほぼ確実に理解できますよ。もしくはVBAの解説本を買ってください。中古で探せば500円程度でも買えますよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「24日の0時」って・・・
-
「時間」、「期日」、「日付」...
-
回覧板の日付について質問です...
-
エクセル 日付順に並べてかえた...
-
差し込み印刷に当日の日付が入...
-
動的SQL
-
スクリーンショットで撮影する...
-
エクセルで日付け表示で、明治...
-
日付の表記(付け)
-
ACCESS フォームで入力した日付...
-
アクセスで「本日日付」と「入...
-
メールの最後に日付をいれますか?
-
フォームの値をクエリーに反映...
-
Access VBA SQL文で教えてください
-
会社や役所などに提出する書類...
-
ACCESSで日付ごとに自動連番(...
-
履歴書の日付間違いで落ちますか。
-
日付の大小の表現
-
選択クエリで実行結果を非表示...
-
8月8日0時〜とはどういうことで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「24日の0時」って・・・
-
日付の大小の表現
-
「時間」、「期日」、「日付」...
-
差し込み印刷に当日の日付が入...
-
マクロボタンを押すと、ファイ...
-
エクセル 日付順に並べてかえた...
-
回覧板の日付について質問です...
-
会社や役所などに提出する書類...
-
エクセルで日付け表示で、明治...
-
エクセル マクロ 名前を付けて...
-
EXCELで日付を****年上期、****...
-
Excelについて
-
履歴書の日付間違いで落ちますか。
-
エクセルで日付別にシートを分...
-
ACCESSで日付ごとに自動連番(...
-
2つの日付の中間の日付 エク...
-
差込印刷 縦書きで和暦(漢数...
-
回転印の使い方
-
フォームの値をクエリーに反映...
-
「3~4日」「3、4日」どう発...
おすすめ情報