Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13542 / 13644 ツリー ←次へ | 前へ→

【4888】日付の入力 kenji 03/4/12(土) 21:12 質問
【4889】Re:日付の入力 zero 03/4/12(土) 23:34 回答
【4893】Re:日付の入力 kenji 03/4/13(日) 7:16 お礼
【4895】Re:日付の入力 りん 03/4/13(日) 7:46 回答
【4905】ファンタスチック!! こう 03/4/13(日) 17:05 発言
【4913】Re:日付の入力 kenji 03/4/13(日) 19:37 お礼
【4919】Re:日付の入力 zero 03/4/14(月) 1:01 発言
【4922】かっこわる...。 りん 03/4/14(月) 6:52 発言

【4888】日付の入力
質問  kenji  - 03/4/12(土) 21:12 -

引用なし
パスワード
   こんばんわ

会社で使う帳簿をエクセル97で作ろうと思っているのですが、どうしても日付の入力
がうまくできません。

日付用のセルに"15/4/10"と入力すれば"H15.4.10"と表示されます。でも、入力
を効率よくしようとすれば、"15.4.10"と入力したいのです("."はテンキーでも
打ちやすい場所にありますので)。ま、ここまでは問題ありません。
さらにこの入力を"4.10"にすると、小数の"4.1"になってしまいます(当たり前ですね
...)。セルの書式をあらかじめ日付形式にしておくと、今度は"M33.1.4"になります。
ちなみに"4/10"と入力すると、"H15.4.10"あるいは"4月10日"と正しく日付になって
くれます。

そこで日付のセル入力時に"."を"/"へと置き換えるマクロを作る事が出来ればよい
と思うのですが、なにしろVBE歴3日目なので....お知恵を拝借お願いします。

【4889】Re:日付の入力
回答  zero  - 03/4/12(土) 23:34 -

引用なし
パスワード
   ▼kenji さん:
こんばんは。
日付は、"/"で入力するのが、普通だと思います。(エクセルでの認識で"."を日付認識するというのは、私の知る限り見たこと無いです。)
"."がテンキーの近くにあるという話ですが、"/"もテンキーの近くにありませんか?通常の割り算に使用するため、あると思います。
わざわざマクロを使わずエクセルの仕様と割り切って入力させたほうが、簡単だと思いますよ。

>こんばんわ
>
> 会社で使う帳簿をエクセル97で作ろうと思っているのですが、どうしても日付の入力
>がうまくできません。
>
> 日付用のセルに"15/4/10"と入力すれば"H15.4.10"と表示されます。でも、入力
>を効率よくしようとすれば、"15.4.10"と入力したいのです("."はテンキーでも
>打ちやすい場所にありますので)。ま、ここまでは問題ありません。
> さらにこの入力を"4.10"にすると、小数の"4.1"になってしまいます(当たり前ですね
>...)。セルの書式をあらかじめ日付形式にしておくと、今度は"M33.1.4"になります。
>ちなみに"4/10"と入力すると、"H15.4.10"あるいは"4月10日"と正しく日付になって
>くれます。
>
> そこで日付のセル入力時に"."を"/"へと置き換えるマクロを作る事が出来ればよい
>と思うのですが、なにしろVBE歴3日目なので....お知恵を拝借お願いします。

【4893】Re:日付の入力
お礼  kenji  - 03/4/13(日) 7:16 -

引用なし
パスワード
   zeroさん、お返事ありがとうございます。
>わざわざマクロを使わずエクセルの仕様と割り切って入力させたほうが、簡単だと思いますよ。
そうですか...割り切って使う事も必要かもしれませんね。何しろ初心者のためマクロを使えば何でも簡単にできてしまうというイメージがあったものですから。

【4895】Re:日付の入力
回答  りん E-MAIL  - 03/4/13(日) 7:46 -

引用なし
パスワード
   kenji さん、おはようございます。

>そうですか...割り切って使う事も必要かもしれませんね。何しろ初心者のためマクロを
使えば何でも簡単にできてしまうというイメージがあったものですから。

 (こういう)機能を載せることの弊害を考えたら、/での入力に慣れてもらうほうがいいのか、使う側の意見も聞いたほうがいいですよ。
ちなみに弊害
 ・実行時のエラーへの対応(OS、Varsionの違い当によるもの、記述ミス)
 ・マクロブックの警告がうっとおしい
 ・セキュリティ高だと実行されない
 ・保存するときにちょっとサイズが大きい
 ・アンチウィルスで常時監視してる場合は、保存・読込が遅い
などなど。

で、本文。

シートのChangeイベントを利用します(Moduleではなく該当するSheetに記述します)。
A列のセルに、「.」の入った文字列が入力されたとき、. が / におきかわります。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  With Target
   'A列が日付
   If .Column = 1 Then
     If .Count = 1 Then
      If InStr(.Value, ".") > 0 Then
        .Value = Application.WorksheetFunction. _
         Substitute(Format(.Value, "0.00"), ".", "/")
      End If
     End If
   End If
  End With
End Sub

10月1日は10.01、1月1日は1.01です。

マクロも期待するほどすごい効果があるものでもないですが、使い込むほど幅が広がる(と思う)ので、過去ログに色々面白いサンプルがあるので試してみられては?

【4905】ファンタスチック!!
発言  こう E-MAIL  - 03/4/13(日) 17:05 -

引用なし
パスワード
   みなさん,こんにちわ。
#私も挑戦してみましたが挫折してました。(T_T)

コード頂きました>りんさん。

> (こういう)機能を載せることの弊害を考えたら、/での入力に慣れてもらうほうがいいのか、使う側の意見も聞いたほうがいいですよ。
システムを導入(変更)する場合で入力方式が変わる場合,
「社内の規則でこうなっているから」とか「いままでがこの形式だったから」
などのようなユーザさん弱気発言があったりしますね。

#あれ,なんだこのレスは??

【4913】Re:日付の入力
お礼  kenji  - 03/4/13(日) 19:37 -

引用なし
パスワード
   りん さん、こんにちわ。
貴重なマクロ及びアドバイスありがとうございます。さっそく使ってみたところ見事に日付に変換されました。感激しました。
ただ、2点ほど気づいた所が有ります。まず"10.1"と入力した場合も"10月10日"になってしまいます。また一度入力されたセルを訂正しようとして再入力すると、"10.10"との入力に対してセル表示"1月10日",数式バー"1900/1/10"となります。でもこれは宿題だと思って自分で研究してみることにします。
本当に有難うございました。

【4919】Re:日付の入力
発言  zero  - 03/4/14(月) 1:01 -

引用なし
パスワード
   皆さんの発言を拝見しまして、自分の発言が軽率だったと反省しておりました。
自分の経験上、日付は別の言語でもチェック等において色々と考慮すべき点があり大変だったので、エクセルの仕様に合わせて作った方が色々問題が少ないと考えていました。また、自分の経験上の意見ですがエクセルという機能的に優れたベースがあるというのは開発効率が高いと思うので、その機能を最大限生かすのも手だと思いますよ。

投稿される方のこういうことをしたいという意見を尊重すべきだなと反省です。
アルゴリズムを考えるのは、自分の糧になりますしね。

【4922】かっこわる...。
発言  りん E-MAIL  - 03/4/14(月) 6:52 -

引用なし
パスワード
   おはようございます。

> ・実行時のエラーへの対応(OS、Varsionの違い当によるもの、記述ミス)
 Versionでした。

13542 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free