• ベストアンサー

エクセルVBAで日付を・・・

 VBAの初心者なんですけど、ワークシート関数のtoday()と同じ働きを持つVBAってありませんか?  ただ、例えば、 Range("A1").value="=today()" 以外のものでお願いします。

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

  • ベストアンサー
  • poohron
  • ベストアンサー率59% (574/971)
回答No.1

Range("A1").Value = Date では?

19760101
質問者

お礼

ありがとうございます。それだけでよかったんですね。ちょっと難しく考えてました。

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

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 >ワークシート関数のtoday()と同じ働きを持つVBAってありませんか?  Date 関数が似ていますが、値を返すだけです。 そして、VBAでは、ワークシートに、日付/時間データを送り込む時は、ついでに、書式も送ります。 Sub TestSendDate()  Range("A1").NumberFormatLocal = "yy/mm/dd"  Range("A1").Value = Date End Sub 送り込まれるデータは、日付型のデータです。 Range("A1").Value = "=TODAY()" Range("A1").Value = Range("A1").Value とすれば、Date を送ったのと同じ結果になります。 また、 Range("A1").Formula = "=TODAY()"  '.Valueプロパティか、Formulaプロパティか? 数式として、その文字列が全うしているなら、.Valueプロパティでも同じです。ワークシート上のキャスティングで、数式に変換されます。ただ、若干、ワークシートのキャスティングのために、コードが遅くなるはずです。 通常は問題ないのですが、FormualLocalのほうが、そのPCのコントロールパネルの地域設定に従うはずです。具体的には、日付設定などがあります。

19760101
質問者

お礼

ありがとうございました。私は初心者なので、大変勉強になります。実際やってみたらできました!!。

全文を見る
すると、全ての回答が全文表示されます。
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

回答は出ていますが、セルに式を埋め込む場合はvalueプロパティではなくFormulaプロパティになります  Range("a1").Formula="=today()"

19760101
質問者

お礼

ありがとうございます。大変たすかりました!

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

関連するQ&A

  • エクセルVBA ワークシート関数の使用について

    エクセル2003VBA ワークシート関数の使用についての質問です よろしくお願いします。 4桁の数字を、千の位・百の位・十の位・一の位に分解する関数ですが 例えば A1に4桁の数字があり、B1に千の位を表示する場合ですが ワークシート関数の場合 B1=MOD(INT($A$1/1000),10) となりますが VBAにてそのまま使用し Range("B1").value=Application.WorksheetFunction.MOD(INT(Range("A1")/1000),10)とするとエラーになります。 エラーになる原因は、いろいろ調べたら分かったのですが この様に、一発でB1に計算結果を入れたいのですが、どうしたらよろしいでしょうか 現在は、 Range("C1").Formula = "=MOD(INT(A1/1000),10)" Range("B1").value=Range("C1").value 一旦、C1に置き換えてから行っています。 よろしくお願いします

  • エクセル VBA 今日の日付を変数にする

    いつまでたってもVBA初心者のものですが 前回は、セルに入力されている日付を変数に利用する場合のことを 聞かしていただいたのですが 今回は、今日の日付を変数に利用する場合はどうすればいいのでしょう? Sub Today() Dim i As String i = Day(Today()) Range("A1").Value = i End Sub こんな感じなんですけど上手くいきません 何から何まで頼りっきりですが、よろしくお願いします

  • エクセルVBAの掛け算

    お世話になります。 VBA初心者です。 セルA1にはB1×C1の答え Range("A1").Value = Range("B1") * Range("C1") これを、B1が空白ならA1も空白に、そうでないならA1にB1×C1の答えを入れたいのですが 分かりません。 Range("A1").Value = "IF(B1="""","""",B1 * C1)"これだと A1に『 =IF(****** 』と関数が入ってしまいます。 どなたか 分かる方教えて下さい。 宜しくお願いします。

  • Excel VBA 定数にオブジェクトを指定したい

    Excel VBA 定数にオブジェクトを指定したい いつもお世話になりますm(__)m Excel VBAで、定数としてオブジェクトの指定はできないのでしょうか? 例えば、WorkSheets("Sheet1")を定数「Srt1」として設定したいのですが、  Public Const Srt1 As Object = Worksheets("Sheet1") としても「定数のデータ型が不正です」とエラーがでます。 例えば、セルに値をセットする時に Worksheets("Sheet1").Range("A1").Value="あああ" Worksheets("Sheet1").Range("A2").Value="いいい" Worksheets("Sheet1").Range("A3").Value="ううう" と書きますが、これを Srt1.Range("A1").Value="あああ" Srt1.Range("A2").Value="いいい" Srt1.Range("A3").Value="ううう" と書ければプログラムも見やすく、書きやすくなると思いました。 プログラムの最初に Dim Srt1 As Object Set Srt1 = Worksheets("Sheet1") とすれば使えるのですが、複数のシート名をまずは定数として登録したいと思っていますが、オブジェクト(ワークシート名)は定数として登録することは出来ないのでしょうか? お詳しいかた、是非ともご教授お願い致しますm(__)m

  • エクセルのフォームのVBAについて

    VBAがまったくわからないのに参考書を見て高度な事に挑戦しています フォームは作れてフォームをクリックやら入力やらして作ったOKボタンを押すと シート2のA1B1C1‥の列に入力文字だけが羅列されます。 しかし次にやろうとするとA2B2C2‥と下に行かず又A1B1C1‥の列の文字が変更になり続きません。何がいけないのでしょうか? Sub 入力() Dim LastRow As Long With Worksheets("sheet2") LastRow = Worksheets("sheet2").Range("A" & Rows.Count).End(xlUp).Row .Range("A" & LastRow).Value = Worksheets("sheet1").Range("A5").Value .Range("B" & LastRow).Value = Worksheets("sheet1").Range("A7").Value .Range("C" & LastRow).Value = Worksheets("sheet1").Range("A8").Value .Range("D" & LastRow).Value = Worksheets("sheet1").Range("A10").Value End With End Sub と参考書とおりいれたのですが‥。教えて下さい。

  • Excel 2010 VBAで教えてください。

    Excel 2010 VBAで教えてください。 Doubleの配列 Dim A(100) as double に ワークシート "Sheet1" セル A1:A100 の値を一発(For loop等を利用しない) で読み込むにはどうすればよいのでしょうか。 同じく、 Doubleの配列 A(100)を ワークシート "Sheet2" セル B1:B100 に一発で書き出すのはどうすればよいのでしょうか。  Variantにて Dim A as Variant では  A = Sheets("Sheet1").Range("A1:A100") で 読み込めました。 また Sheets("Sheet2").Range("B1:B100")で書き込みできましたが、double等でどうすれば良いのか知りたいです。

  • エクセル上のVBA

    当方、VBAまるっきり初心者です(触りはじめて3日くらい)。 エクセルはある程度理解しているつもりですが… バージョンはエクセル2000です。 他シートのセルのひとつに入力すれば、 別シートのセルがそれを参照したうえで 値として表示出来るようにならないでしょうか。  今のところ、以下のような状況です。 step01 sheet1のセルA1に任意の数値(整数限定です)を入力。 step02 sheet2のセルA1に、sheet1のセルA1の数値を用いて     MOD関数で余りを出す。 step03 sheet2のセルB2に以下のVBAによって     step02の余りを値として表示。      Private Sub Worksheet_Change(ByVal Target As Range)        Range("b2").Value = Range("a1")      End Sub  これだとsheet1の数字を変えても、 sheetの切替後sheet2のセルB2に 表示される値が変わってくれません。  最初の入力(step01の入力)をおこなえば sheet2のセルB2まで値が変わってくれるような方法を 教えていただけないでしょうか。  拙い説明で申し訳ありませんが、よろしくお願いします。

  • EXCEL VBAお願いいたします

    sheet1のA1に123456が入っています、sheet1のA2に左から2番目を代入するときは Range("A2").Value = Left(Range("A1"),Value,2)でA2に2と入り出来ました。 これをsheet1のA1からsheet2のA1に代入したいのですがどうにも出来ないのです、 worksheets("sheet2").Range("A1").Value =この先が分からないので達人の方宜しくお願いいたします。

  • EXCEL 名前の定義 VBA参照の方法

    EXCELの名前の定義を、VBAから参照する方法を教えていただきたいのですが  名前を定義する    シートA  名前:TEST 範囲:シートA    シートB  名前:TEST 範囲:シートB    シートC  名前:Pass 範囲:ブック  それぞれをVBAから参照する場合    Range("TEST").Value: シートA内のVBA    Range("Pass").Value  では、参照できず。    Worksheets("シートA").Range("TEST").Value    Worksheets("シートC").Range("Pass").Value  にて、参照できました。 明示的なシート名入力が必要なのでしょうか? よろしくお願いいたします。

  • エクセルVBAに関する二三質問

    いつもお世話になっております。 VBAに関する二三の質問ですが、分かる範囲でお願いします。 1.他モジュールでも使える変数ってありますか? Publicじゃできませんでした。 2.A列のセルが全部「完了」なら、B1に「全部完了」 IF Range("A1").Value = "完了" Or _ Range("A1").Value = "完了" Or _ ・・・・・・ Range("A65536").Value = "完了" Then Range("B1").Value = "全部完了" End if IF Range("A1:B65536").Value = "完了" Then Range("B1").Value = "全部完了" End if じゃできませんでした。 何か方法ありませんか? 3.左上のプロジェクト画面で、 sheet1(職員名簿) sheet2(住所録) とありますよね、sheet1と職員名簿、どっちも通用するのですが、 どっちが本当の名前ですか? sheetを増やしたら、sheet332とどんでもないようなかけ離れたシート名になりますし、 シート現在名を変更したら、他のシートに影響を与えしまうのではと心配です。 お願いします。

専門家に質問してみよう