Excel VBA質問箱 IV

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

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


4432 / 13646 ツリー ←次へ | 前へ→

【56699】日付を簡単に入力 toshi 08/7/1(火) 1:14 質問[未読]
【56700】Re:日付を簡単に入力 かみちゃん 08/7/1(火) 1:28 発言[未読]
【56701】Re:日付を簡単に入力 toshi 08/7/1(火) 1:50 発言[未読]
【56711】Re:日付を簡単に入力 kanabun 08/7/1(火) 14:20 発言[未読]

【56699】日付を簡単に入力
質問  toshi  - 08/7/1(火) 1:14 -

引用なし
パスワード
   よろしくお願いします。
日付を簡単に入力したいのですが
例;"080530"→2008/05/30
   ↑入力  ↑表示
ネット上で探してみたのですが、なかなか同様のケースが見つかりませんでした

Private Sub Worksheet_Change(ByVal Target As Range)
 If Intersect(Target, Range("C2:C602")) Is Nothing Then Exit Sub
 Application.EnableEvents = False
 On Error Resume Next
 Target.Value = Format(Target.Value, "yyyy/mm/dd")
 On Error GoTo 0
 Application.EnableEvents = True
上記の範囲("C2:C602")で、出来ますでしょうか
エクセルはExcel2002です。

【56700】Re:日付を簡単に入力
発言  かみちゃん  - 08/7/1(火) 1:28 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>日付を簡単に入力したいのですが
>例;"080530"→2008/05/30
>   ↑入力  ↑表示

以下のような感じでいかがでしょうか?

Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("C2:C602")) Is Nothing Then Exit Sub
 Application.EnableEvents = False
 Target.Value = Format(Target.Value, "2000\/00\/00")
 On Error GoTo 0
 Application.EnableEvents = True
End Sub

【56701】Re:日付を簡単に入力
発言  toshi  - 08/7/1(火) 1:50 -

引用なし
パスワード
   ▼かみちゃん さん:
ありがとうございます。
>
>以下のような感じでいかがでしょうか?
>
>Private Sub Worksheet_Change(ByVal Target As Range)
> If Not Intersect(Target, Range("C2:C602")) Is Nothing Then Exit Sub
> Application.EnableEvents = False
> Target.Value = Format(Target.Value, "2000\/00\/00")
> On Error GoTo 0
> Application.EnableEvents = True
>End Sub
勘違いしていました"C2:C602"の範囲の場合は Exit Subは不要ですか?
また、表示形式を"08/06/30"にする場合は"2000\/00\/00"の2000を00としてみましたが変な"1930/8/6"と表示になってしまいます。定義をどのように変えれば
出来ますでしょうか? よろしくお願いします。

【56711】Re:日付を簡単に入力
発言  kanabun  - 08/7/1(火) 14:20 -

引用なし
パスワード
   ▼toshi さん:
こんにちは。かみちゃん さんではなくて、ごめんなさい。

>勘違いしていました"C2:C602"の範囲の場合は Exit Subは不要ですか?
そうです。
>> If Not Intersect(Target, Range("C2:C602")) Is Nothing Then Exit Sub
は、
変化したセル範囲と[C2:C602]範囲とでダブっている範囲が nothingでなかっ
たら、つまり、共有されるセル範囲が「あったら」Exit Sub しなさい、
ということですから、正反対ですね。
 If Intersect(Target, Range("C2:C602")) Is Nothing Then Exit Sub
でいいでしょう。

>また、表示形式を"08/06/30"にする場合は"2000\/00\/00"の2000を00としてみましたが変な"1930/8/6"と表示になってしまいます。定義をどのように変えれば
>出来ますでしょうか? 

"080630" と入力した数値を "00/00/00" というFormatに変更すると
"08/06/30" という値に変換されます。
Excelはアメリカ産のソフトなので、これを mm/dd/yy 形式で日付に変換
したのでしょう。

> Target.Value = Format(Target.Value, "2000\/00\/00")
の行を、
  With Target
    .Value = Format$(.Value, "2000\/00\/00")
    .NumberFormatLocal = "yy/mm/dd"
  End With
としたらどうでしょう?

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