- ベストアンサー
VBAでALT+Cを押したい
EXCELのデータフォームよりデータの検索を行っているのですが、 データフォームでDBを変更することはないため(入力は別のファイルで行っている)、 データフォーム起動時に直ぐに検索条件の画面に変更したいと考えてします。 しかし、 Sub データフォームを表示する() ActiveSheet.ShowDataForm SendKeys "%C", True End Sub と記述しても検索条件の画面に切り替わりません。 どのようにすればデータフォームを開くとデフォルトで検索条件の画面が表示されるのでしょうか? ご教示願います。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >今度はデータフォームが新規で入力出来るようになってしまいます。 昨日からずっといろいろな方法でやってみましたが、データフォームからは、どんなプロテクトをしても、[新規メニュー]で入力が可能になってしまいます。どうしてそうなるのか、バグなのか、修正の置き忘れなのか、良く分かりません。 このデータフォームの型自体がよほど古いものなのか、ダイアログ(Dialogs)にさえ出てきません。 Excelのアプリケーションを、特殊なプログラミングでハッキング(たぶん)して改造させて行う方法があるのだと思いますが、私には、そのような技術は持ちあわせていません。 ただ、検索だけの問題なら、UserForm 等で作ることは可能だとは思います。
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 >保護がかかっているためもちろん入力はできないのですが、 それも簡単なことですが、ワークブックが立ち上げるときに、以下のようにしてあげれば、そのまま、コードが使えます。 UserInterfaceOnly:=True というのは、ワークシート側から、保護されていますが、マクロからは自由に処理することが可能です。 例: '標準モジュール (これを一回設定すれば、開いている間有効です) Sub Auto_Open() Worksheets("Sheet1").Unprotect Worksheets("Sheet1").Protect UserInterfaceOnly:=True End Sub
お礼
解答、本当にありがとうございます。 教えていただいた方法で確かにシートに保護がかかっていても 検索条件の画面がデフォルトとして表示されるようになったのですが、 今度はデータフォームが新規で入力出来るようになってしまいます。 もう少しで考えていたものが出来そうなんです。 時間がございましたら是非もう一度教えていただけませんでしょうか? よろしくお願いします。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 それは、簡単なことですが、コードが逆ではありませんか?SendKey でコードを送りバッファに溜めてから、DataForm を立ち上げます。ただし、この方法は、すべてのバージョンで有効ではなかったような気がします。 Sub データフォームを表示する() Application.SendKeys "%C" ActiveSheet.ShowDataForm End Sub
お礼
何とも簡単に解決いたしました。 どうもありがとうございます。 もしよろしければ、もうひとつ教えてください。 シート全体が保護されている場合、同じマクロを実行しても 新規の画面が表示されてしまいます。 保護がかかっているためもちろん入力はできないのですが、 これも検索条件を初めから立ち上げることは可能なのでしょうか? よろしくお願いいたします。
お礼
Wendy02 様、何度も解答いただきまして本当にありがとうございました。データフォームから新規メニューが消えないということですので、シートに保護をかけた状態で毎回検索条件のボタンを押してもらうようにしたいと思います。 本当は100ポイントくらい差し上げたいくらいなのですが、上限がありますので20ポイントのみ付けさせていただきたいと思います。 何とか思っているようなDBが出来てきました。 本当にありがとうございました。 これからは自分でももっと勉強していきたいと思います。