重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

EXCELのデータフォームよりデータの検索を行っているのですが、
データフォームでDBを変更することはないため(入力は別のファイルで行っている)、
データフォーム起動時に直ぐに検索条件の画面に変更したいと考えてします。

しかし、

Sub データフォームを表示する()
ActiveSheet.ShowDataForm
  SendKeys "%C", True
End Sub

と記述しても検索条件の画面に切り替わりません。
どのようにすればデータフォームを開くとデフォルトで検索条件の画面が表示されるのでしょうか?

ご教示願います。

A 回答 (3件)

こんにちは。



>今度はデータフォームが新規で入力出来るようになってしまいます。

昨日からずっといろいろな方法でやってみましたが、データフォームからは、どんなプロテクトをしても、[新規メニュー]で入力が可能になってしまいます。どうしてそうなるのか、バグなのか、修正の置き忘れなのか、良く分かりません。

このデータフォームの型自体がよほど古いものなのか、ダイアログ(Dialogs)にさえ出てきません。

Excelのアプリケーションを、特殊なプログラミングでハッキング(たぶん)して改造させて行う方法があるのだと思いますが、私には、そのような技術は持ちあわせていません。

ただ、検索だけの問題なら、UserForm 等で作ることは可能だとは思います。
    • good
    • 0
この回答へのお礼

Wendy02 様、何度も解答いただきまして本当にありがとうございました。データフォームから新規メニューが消えないということですので、シートに保護をかけた状態で毎回検索条件のボタンを押してもらうようにしたいと思います。

本当は100ポイントくらい差し上げたいくらいなのですが、上限がありますので20ポイントのみ付けさせていただきたいと思います。

何とか思っているようなDBが出来てきました。
本当にありがとうございました。

これからは自分でももっと勉強していきたいと思います。

お礼日時:2008/02/11 13:53

こんばんは。



>保護がかかっているためもちろん入力はできないのですが、
それも簡単なことですが、ワークブックが立ち上げるときに、以下のようにしてあげれば、そのまま、コードが使えます。 UserInterfaceOnly:=True というのは、ワークシート側から、保護されていますが、マクロからは自由に処理することが可能です。

例:
'標準モジュール (これを一回設定すれば、開いている間有効です)
Sub Auto_Open()
 Worksheets("Sheet1").Unprotect
 Worksheets("Sheet1").Protect UserInterfaceOnly:=True
End Sub
    • good
    • 0
この回答へのお礼

解答、本当にありがとうございます。

教えていただいた方法で確かにシートに保護がかかっていても
検索条件の画面がデフォルトとして表示されるようになったのですが、

今度はデータフォームが新規で入力出来るようになってしまいます。
もう少しで考えていたものが出来そうなんです。

時間がございましたら是非もう一度教えていただけませんでしょうか?

よろしくお願いします。

お礼日時:2008/02/10 08:17

こんばんは。



それは、簡単なことですが、コードが逆ではありませんか?SendKey でコードを送りバッファに溜めてから、DataForm を立ち上げます。ただし、この方法は、すべてのバージョンで有効ではなかったような気がします。

Sub データフォームを表示する()
 Application.SendKeys "%C"
 ActiveSheet.ShowDataForm
End Sub
    • good
    • 0
この回答へのお礼

何とも簡単に解決いたしました。
どうもありがとうございます。

もしよろしければ、もうひとつ教えてください。
シート全体が保護されている場合、同じマクロを実行しても
新規の画面が表示されてしまいます。

保護がかかっているためもちろん入力はできないのですが、
これも検索条件を初めから立ち上げることは可能なのでしょうか?

よろしくお願いいたします。

お礼日時:2008/02/09 21:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!