• ベストアンサー

EXCEL VBAでの日付の表示について

EXCEL2003のVBAを始めたばかりなので、初歩的なことですが、分かる方ぜひ教えてください。 フォーム上に、『取得年月日』という項目をつくり、表示を"H○○.○○.○○"としたいのですが、どのように作成をしたらよいのでしょうか? ちなみに、その日付を使って更新をしたり、計算をしたりもします。 よろしくお願いします。

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

  • ベストアンサー
  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.5

#2です。 Private Function 日付(txtname As Long) As String は標準モジュールですよね。 Publicでないと日付関数がCallできないと思います。 引数ですが txtname as Date もしくは txtname as String でtxtnameの日付チェックするかにすべきです。

hara88
質問者

お礼

ありがとうございました。 txtname as Date とやってみたら、できました。 助かりました。 これで次に進むことができます。

hara88
質問者

補足

『標準モジュール』などの設定は一切していません。 『ユーザーフォーム』を選択して、テキストボックスやコンボボックス、コマンドボタンを挿入しているだけです。 そして、『取得年月日』テキストボックスをダブルクリックしてそこへコードを入れようとしました。

その他の回答 (6)

  • taocat
  • ベストアンサー率61% (191/310)
回答No.7

こんにちは。 入力を、2006/4/12 としているのであれば  Private Function 日付(txtname As Long) As String の引数txtnameの型宣言 As Long を除去してください。  Private Function 日付(txtname) As String 以上です。

hara88
質問者

お礼

ありがとうございました。 As Longではいけないのですね? 試してみたところ、できました。 また、o_chi_chiさんのやり方でも大丈夫でした。 助かりました。

noname#22222
noname#22222
回答No.6

日付がlong型で戻り値が文字列!? ? 日付(38819) 2006/04/12 Public Function 日付(ByVal lngHiduke As Long) As String   日付 = Str(CDate(lngHiduke)) End Function このような関数を欲しているのでしょうか? ただし、CDate関数があるので ? CDate(38819) 2006/04/12 とわざわざ日付関数を作成する必要はないと思いますが...

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

質問の表現で、下記があいまいと思う。 >『取得年月日』という項目をつくり・・ 質問が、入力時の質問か、表示〔出力)時の質問か? (1)表示時の質問 元の日付データはエクセルのセルからとってきて、表示するのですか (2)入力時の質問 フォームで入力するのか。とすれば、使うコントロールはテキストボックスになると思うが、テキストで受け取れるので、入力次第ではないですか。同入力者に規制を守ってもらうかによる。   入力文字列ーーエクセルの日付シリアル値(語句の意味判りますか?)-->書式を年号記号つきにする。(この際には多彩な、エクセルVBAの書式が選べてその中にH・・・もある) それをテキストボックスのTextに戻す。 >その日付を使って更新をしたり、計算をしたりもします・・ どこかのセルに、エクセルの日付シリアル値をぜひ持っておくべきです。そうすると便利です。変換なしに、日数計算や日付の関数が使えるから。

hara88
質問者

お礼

ありがとうございました。 無事に解決することができました。 シリアル値のこと、参考にしたいと思います。

hara88
質問者

補足

(1)について。 元の日付のデータは、EXCELからとって表示させるのではなく、入力用フォームに入力をします。 (2)について。 もちろん使うコントロールはテキストボックスです。その時の入力規則は、『○○○○/○○/○○』です。 シリアル値は、日付を数字で持たせることですよね? シリアル値を用いて計算してそれをまた日付に戻してあげると便利・・・ということですね?

  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.3

#1です。 すみません、VBAの話でしたね。

hara88
質問者

補足

はい。紛らわしくてすみません。 アドバイスがありましたら、よろしくお願いします。

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

VBAで表示形式を設定するのならFORMAT関数です。 詳細はヘルプで確認してください。 取得年月日を日付型変数に格納して表示のみ関数で 変換すればいいのでは。 --- dte取得年月日 = "2006/4/12" Cells(1,1).Value = Format$(dte取得年月日,"gee.mm.dd")

hara88
質問者

補足

この表示形式は他にも用いるので、表示を『日付』という名前で設定をしてあげました。 Private Function 日付(txtname As Long) As String 日付 = Format(txtname, "gee.mm.dd") End Function 次に、取得年月日の日付表示を変換するように下記のようにしてみたのですが、うまくいきません。 Private Sub 取得年月日_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) 取得年月日.Value = 日付(取得年月日.Value) End Sub

  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.1

まずそのセルに日付を入力します。 今日だったら 4/12 って感じで。 そのセルで右クリックし [セルの書式設定] を選択(これはキーボードから CTRL+1 でも代用できます)。 [表示形式]タブにある[分類]から[日付]を選択し、右側の[種類]にある "H9.3.4" (恐らく一番上にあります)を選択し、[OK]を押してください。

関連するQ&A

  • Excel VBAでメッセージを表示したい。

    Excel2000のVBAで作成したユーザーフォームがあります。 その中のボタンをクリックしたとき、LANに接続してある全てのPCに「更新しました。」というメッセージを送りたいのですが、どうすれば良いのでしょうか? 何方かわかる方いらっしゃいましたら教えて頂けないでしょうか。 よろしくお願いします。

  • エクセルVBA テキストボックス 日付表示

    エクセルVBAにて入力用フォームを開いたときに フォーム内にあるテキストボックスに今日の日付が 自動で表示されるようにしたいのですが どの様に書き込めば宜しいでしょうか? また、2008.09.05 平成20年9月5日などの 日付形式の変更はどの様に書き込むのでしょうか?

  • VBAでプルダウンの表示

    VBAの勉強をしております。 ブックを開いたときに、プルダウンのユーザーフォームが表示され、 そしてプルダウンにはブックを開いた日から1年間の年月日が表示される処理を作りたいと思っております。 処理としては (1)ユーザーフォームがブックを開かれると表示される (2)ブックを開いたときにそのときの日付を取得する (3)その日付から1年間をプルダウンに表示する  (例)例えば質問日の7/22にブックを開いたとすると     「201507」「201508」「201509」「201510」・・・のように年と月を表示するようにしたいです。 そこで現在この処理を行うのにブックを開いたときにユーザーフォームを表示するようにはできたのですが、プルダウンで1年間を表示するにはどうしたらいいのでしょうか。 1、シートに「201507」~「201712」ぐらいまでをA列に記載し、 2、ブックを開いた日付を取得し、その日付を「YYYYMM」の形にし、 3、シートのA列を上から順に検索し、同じ数値のが見つかるまで検索する 4、見つかったら、そこの行数を読みとり、そこから12個分下にある数値を読み取り 5、それをプルダウンに表示させる という処理の流れを考えたのですが、実際にどうVBEに書いたらいいかわかりません。

  • ワード2013の日付表示について

    この度、パソコンを更新しましたが、ワード2013の日付の表示についてご質問です。 1.発信日付のオートフォーマットについて  以前のワード2000では、日付を入力し、エンターキーを押すと、自動的に右寄せになっていましたが、ワ-ド2013ではどのようにして設定をするのでしょうか? 2.「平成」では、自動的に年月日がでてきますが、「2014・・・」では自動的に年月日が出てきません。 初歩的な質問ですみませんが、ご教示お願いいたします。

  • エクセルのVBAで日付チェック方法を教授ください

    OS:Win XP、エクセル2002を使用、 VBAの初心者です。 ユーザーフォームにテキストボックスを作成して、日付を入力します。 入力した日付が正しいか否かを、VBAでチェックさせたく思っています。チェックするタイミングは、ユーザーフォームの実行ボタンをクリックした後に行いたいと思っています。 現在はTextBox1をStringで宣言しております。作成中の内容を下記に転記します。 '集計データの作成 '[集計][temp]の削除、調査開始年と終了年から対象データの抽出、調査項目の編集 Dim st As String '開始年月日 Dim Mydata As Date 'st,ed の入力チェック On Error GoTo errMSG st = TextBox1.Text Mydata = st errMSG: MsgBox ("開始年月日の入力が間違っています。再度の入力をしてください。") Unload Me 分析シート作成 Exit Sub ’次の処理 実際はTextBoxは2つありますが、とりあえず1つだけ示しました。 困っているのは、入力日付が正しくてもエラー処理へ入ってしまいます。従って次の処理へ進みません。 初めての質問で質問の内容に問題があるかもしれません。お許しください。

  • エクセルVBAで作成できますか(2)

    質問No.9506691に関連して添付ファイルのようなVBAを作成したい。 1:日付と時刻が同じセルで10分毎に合計を出すことはできますか。  それとも日付と時刻は別々のセルにして算出する方がいいのでしょうか。 2:抽出する項目は先に作成しておいた方がいいのでしょうか。  VBAで表示させることはできますか。 どなたかアドバイスお願いします。

  • エクセルVBAでpublic functionを使っているのですが・・・

    エクセルVBAでpublic functionを使っているのですがmicrosoft excel objectsで作成してもフォームからは使えないしフォームで作成してもmicrosoft excel objectsから使えないので困っています、両方から使えるようにできませんか?お願いします。

  • excel VBA フォームを使って

    初歩的な質問だと思いますが、教えていただけますでしょうか。 excelのVBAを使って、ユーザフォームを作ります。 そこにカレンダーコントロールでいわゆる「カレンダー」を作成し、 その下にテキストボックス(ちょっと大きめ)を作ります。 カレンダーをクリックし、テキストボックスにスケジュールが表示されるというものを作りたいです。 現在ワークシートには、scheduleというものだけを作成し、そこには日付とスケジュールを書き込んでいる状況です。 スケジュールは1行のみとは限りません。複数行のほうが多いです。 お忙しいところ申し訳ありませんが、よろしくお願いします。

  • 日付を表示するエクセル関数について質問があります。

    日付を表示するエクセル関数について質問があります。 例えば、H9.9.1をH9.9と表示するエクセル関数はありますでしょうか? セルの書式設定の日付の項目で2009年3月という選択項目はあるのですが、H○.○という項目が無かったので日にちを表示しない関数をご存知の方は教えて下さい。 宜しくお願いします。

  • エクセルのフォームをVBAで作るには?

    セルの項目が多い場合 一般のフォームでは使えないようですが、 http://www.eurus.dti.ne.jp/~yoneyama/Excel/input_form.htm ここにあるフォームをVBAで作るとしたらどうすればいいのでしょうか? 教えてください。

専門家に質問してみよう