A10~A100まで0という数値が入力されています。これに入力規則を設定したいと思っています。マクロで作り方を調べたら、


Range("A10:A100").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="あいうえお,かきくけこ"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.IMEMode = xlIMEModeNoControl
.ShowInput = True
.ShowError = True
End With

というマクロが作成されました。ここで変数を用いて変数にXYZ="あいうえお,かきくけこ"
をセットしました。つまりFormula1の後はFormula1:=XYZとなります。XYZには正しくデータが
入力されています。これを利用してAccessからExcelにコードをはく時に利用しようと思っています。

流れは、
1.Access VBAでExcelのA10からA100まで"0"を出力します。
2.上記の入力規則のリストにXYZの中に入っている値をセットします。
3・出力完了。
4.ブックを閉じる。

というようにしたいのですが、出力は無事にできます。A10からA100にも"0"の値が出力されています。
問題はA10をクリックしてもプルダウンが表示されません。何が間違っているかわかりません。
ご教授のほどお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:2009/03/04 20:00:20
  • 終了:2009/03/04 23:23:17

ベストアンサー

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912009/03/04 20:20:49

ポイント200pt

マクロの記録は大変有効なのですが、今回のケースやグラフの作成等、ときにそのままで

は正常に動作しないコードになります。


今回のケースは、Delete 部分を別にすることでとりあえず機能するようになるかと思います。

Sub akaired()
    Range("A10:A100").Validation.Delete

    With Range("A10:A100").Validation
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="あいうえお,かきくけこ"
    .IgnoreBlank = True
    .InCellDropdown = True
    .IMEMode = xlIMEModeNoControl
    .ShowInput = True
    .ShowError = True
    End With
End Sub
id:akaired

おー、凄いです。見事にできました。なぜdelete部分を別にするかで動くかはまだ謎ですが、とりあえずよかったです。ありがとうございます!

2009/03/04 23:11:47
  • id:Mook
    多くのポイントといるか賞ありがとうございます。
    オブジェクトの感覚がわかると、何となく理解できると思うのですが、

    一度削除してしまったオブジェクトに対し、そのあとの処理が操作をしようとしている
    せいだと思います。自動記録で

    With オブジェクト
      .Delete
      .foo
      .bar
    End With

    のようになっていたら、今回のような対応が有効なことが多いように思います。
  • id:akaired
    下記のように変更した所再度リストでプルダウンがでなくなってしまいました・・・
    y=100
    x = "A5:A" & y
    Range(x).Validation.Delete
    With Range(x).Validation
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:=LV_StatesOut
    .IgnoreBlank = True
    .InCellDropdown = True
    .IMEMode = xlIMEModeNoControl
    .ShowInput = True
    .ShowError = True
    End With
  • id:Mook
    LV_StatesOut の定義はどうなっているでしょうか。
    これに適当なデータを設定すれば、こちらでは正常に表示されますが。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません