エクセル2000です。
以下はG10セルに手作業で「入力規則」を設定するところをマクロの記録で残したものです。
リストは、2008/11/1,2008/11/5,2008/11/30 と yyyy/m/d 形式で手入力しましたが、なぜか記録では 11/1/2008,11/5/2008,11/30/2008 と m/d/yyyy 形式になっています。
手作業で設定した入力規則は正しく作動し、セルに表示されるドロップダウンリストも手入力どおり yyyy/m/d になっています。
ところが、記録したこのマクロをそのまま作動させると、今度はリストは m/d/yyyy になり、しかも日付ではなくなんと文字列になってしまうのです。
マクロを手直しし、
xlBetween, Formula1:="11/1/2008,11/5/2008,11/30/2008"を
xlBetween, Formula1:="2008/11/1,2008/11/5,2008/11/30"にしても同じ結果( m/d/yyyy かつ文字列)となります。
なにがいけないのでしょうか???
Sub Macro4()
'
' Macro4 Macro
' マクロ記録日 : 2008/10/31 ユーザー名 : MerlionXX
Range("G10").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="11/1/2008,11/5/2008,11/30/2008"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = "指定日"
.InputMessage = ""
.ErrorMessage = "リストの中から選んでね。"
.IMEMode = xlIMEModeDisable
.ShowInput = True
.ShowError = True
End With
End Sub
No.1ベストアンサー
- 回答日時:
こんにちは^^
Formula1 に指定する文字列の先頭に
ひとつ、","を付け加えると解決する筈です。
(必要なら、セルを.Clearしてから実行してみてください)
(書式の表示形式は標準のままでも既定の日付表示になる筈)
随分前から、そういうものとして身に付いてしまっているので、
何故そうするのか、は、残念ながら、
今となっては私にはわかりません。すみません。
.Modifyでリストだけ変更する場合も同様です。
たぶん、同じ質問について考えたのだと思います(^^;
私はたぶん、スルーです。
では、また
No.3
- 回答日時:
こんばんは。
余計なことかもしれませんが、最近、同じような設置のコードを書いたばかりです。しかし、私は、そのようなコードを考えたことがありません。
VBAの原則として、「ワークシートはワークシートに任せる」というのがあります。
(誰の原則論とか、突っ込みはしないでくださいね。)
VBAとワークシートは完全には一致してきません。
たぶん、Formula1 には、ローカルモードがないのか、セルとの結びつきがないのだと思います。それでは、実用度が低いのではないでしょうか。固定値なら良いのですが、日付の場合は、元々変動しますから、マクロでは、こういう場合、設置しにくいように思うのです。
>日付ではなくなんと文字列になってしまう
それに、おっしゃっているように、その入力規則のセルには、日付認識(シリアル値)をしていません。
ですから、私が最近書いた方法は、
予め、AA1:AA3 に日付を書いておいて、以下のようにします。
=TODAY()
=WORKDAY(TODAY(),10)
=WORKDAY(TODAY(),20)
Formula1:="=" & Range("AA1:AA3").Address
のような数式を入れます。それを入力規則のリストに入れます。
Wendy02さん、いつもありがとうございます。
「ワークシートはワークシートに任せる」という原則ですか。
勉強になります。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/01/23 17:13
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 09:24
- Excel(エクセル) PDFファイルに日付を名前にして保存したい。 エクセル2019でワークシートに請求書のフォームを作り 2 2023/05/27 11:13
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
31:30:00が1900/1/1 7:30:0
-
入力後に日付順になるように自...
-
Excelで半年後の日付を計算したい
-
エクセルのセルにカレンダーを...
-
エクセルでENTERを押すと数式が...
-
エクセル関数で日付かどうかの...
-
日付だけを変更して印刷(Excel)
-
Excelで8/26等の日付を全てその...
-
ファイルのオープン時に今日の...
-
エクセルで数字列の間に『/』を...
-
日付入力→指定のセルの色を塗り...
-
Excelで更新日時と更新者を表示...
-
【エクセル】日付を表示させた...
-
エクセル 当番表の作り方 エク...
-
日付を入力したセルをファイル...
-
Excelで、年だけの「西暦」から...
-
エクセルのセルにたとえば「756...
-
エクセルで日付入力欄を作成し...
-
☆Excelエクセルで入力した日の...
-
Excelに入力した個々の日付の数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
31:30:00が1900/1/1 7:30:0
-
日付だけを変更して印刷(Excel)
-
入力後に日付順になるように自...
-
Excelで半年後の日付を計算したい
-
エクセルでENTERを押すと数式が...
-
エクセルで数字列の間に『/』を...
-
エクセルのセルにカレンダーを...
-
エクセル 当番表の作り方 エク...
-
エクセル関数で日付かどうかの...
-
Excelで、年だけの「西暦」から...
-
ファイルのオープン時に今日の...
-
Excelで8/26等の日付を全てその...
-
日付入力→指定のセルの色を塗り...
-
エクセルで日付入力欄を作成し...
-
☆Excelエクセルで入力した日の...
-
EXCELで直近の日付を抽出する関数
-
日付を入力したセルをファイル...
-
◆ EXCEL自動入力日付を自動で...
-
ワード差込について
-
WORDで翌日や翌々日の日付を表...
おすすめ情報