• ベストアンサー

マクロで入力規則を設定すると日付が文字列になる不具合が・・・・

エクセル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

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

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.1

こんにちは^^ Formula1 に指定する文字列の先頭に ひとつ、","を付け加えると解決する筈です。 (必要なら、セルを.Clearしてから実行してみてください) (書式の表示形式は標準のままでも既定の日付表示になる筈) 随分前から、そういうものとして身に付いてしまっているので、 何故そうするのか、は、残念ながら、 今となっては私にはわかりません。すみません。 .Modifyでリストだけ変更する場合も同様です。 たぶん、同じ質問について考えたのだと思います(^^; 私はたぶん、スルーです。 では、また

merlionXX
質問者

お礼

さっそくありがとうございました。 試したところ、おっしゃる通りでした。 でも、なんででしょうね、不思議です。

その他の回答 (2)

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

こんばんは。 余計なことかもしれませんが、最近、同じような設置のコードを書いたばかりです。しかし、私は、そのようなコードを考えたことがありません。 VBAの原則として、「ワークシートはワークシートに任せる」というのがあります。 (誰の原則論とか、突っ込みはしないでくださいね。) VBAとワークシートは完全には一致してきません。 たぶん、Formula1 には、ローカルモードがないのか、セルとの結びつきがないのだと思います。それでは、実用度が低いのではないでしょうか。固定値なら良いのですが、日付の場合は、元々変動しますから、マクロでは、こういう場合、設置しにくいように思うのです。 >日付ではなくなんと文字列になってしまう それに、おっしゃっているように、その入力規則のセルには、日付認識(シリアル値)をしていません。 ですから、私が最近書いた方法は、 予め、AA1:AA3 に日付を書いておいて、以下のようにします。 =TODAY() =WORKDAY(TODAY(),10) =WORKDAY(TODAY(),20) Formula1:="=" & Range("AA1:AA3").Address のような数式を入れます。それを入力規則のリストに入れます。

merlionXX
質問者

お礼

Wendy02さん、いつもありがとうございます。 「ワークシートはワークシートに任せる」という原則ですか。 勉強になります。 ありがとうございました。

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.2

補足です。 Formula1:=",2008/11/1,2008/11/5,2008/11/30" (既定がyyyy/m/dの場合) ってことです。失礼。

merlionXX
質問者

お礼

ご丁寧にありがとうございます。 m/d/yyyyの場合は、 Formula1:=",11/12008,11/5/2008,11/30/2008" ではだめのようです。 不思議です。

関連するQ&A