• ベストアンサー

ControlTypeの切り替えはデザインビューでなければ不可能か?

フォームビューのときにvbaでコントロールのタイプを テキスト⇔コンボに切り替えたいのですが フォーム1.テキスト0.ControlType = 109 を実行するとエラーになり 「このプロパティを設定するにはデザインビューで開きます」 となります。 しかし、フォームビューの状態でとあるイベントを実行すると テキスト⇔コンボに切り替えたいのですが やはり不可能でしょうか?

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

>ControlTypeの切り替えはデザインビューでなければ不可能か? 当然不可能でしょう。 ただし http://support.microsoft.com/kb/135381/ja にあるように、プログラムで変更できるようです。 アクセスVBAでやるとき判りやすいように下記に私がやってみた例を挙げます。 私の場合は、偶々 フォームはフォーム9 コンボはコンボ3 で、コマンドボタン1つコマンド8でやってみると Private Sub コマンド8_Click() If Forms!フォーム9.CurrentView <> 0 Then DoCmd.OpenForm "フォーム9", _ acDesign If Forms!フォーム9!コンボ3.ControlType = acComboBox Then Forms!フォーム9!コンボ3.ControlType = acTextBox Else Forms!フォーム9!コンボ3.ControlType = acComboBox End If End Sub コンボがテキストボックスに変わりました。 あと見出し的な文言のラベルのコンボ3 もテキストXXに変える必要があるのですが、略。

bkshfu
質問者

お礼

一度デザインビューに切り替えるのですね。 大変参考になりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

テキストボックス と コンボボックスの両方を作成しておき イベントで Visible を切り替えるようにしてはいかがですか?

bkshfu
質問者

お礼

そのような方法もあるのですね。 大変参考になりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • サブフォームのビューを切り替えたい

    親フォーム(フォーム1)にサブフォームとして、 テーブルをソースとするサブフォーム(テーブル1のサブフォーム)を配置しました。 親フォームからサブフォームのビューを変更したいのですが どうすればいいか教えてください。 親フォームのコマンドボタンにはそれぞれ Private Sub 単票フォームへ切り替え_Click() Me.Controls("テーブル1のサブフォーム").Form.DefaultView = 1 '帳票フォーム End Sub Private Sub 帳票フォームへ切り替え_Click() Me.Controls("テーブル1のサブフォーム").Form.DefaultView = 0 '単票フォーム End Sub としたのですが、 実行すると 実行時エラー 2136 "このプロパティを設定するには、フォームまたはレポートをデザインビューで開きます"。 となってしまいます。 Private Sub 帳票フォームへ切り替え_Click() DoCmd.SelectObject acForm, "テーブル1のサブフォーム" DoCmd.RunCommand acCmdFormView End Sub にしたところ、 実行時エラー 2489 “オブジェクト テーブル1が開いていません、” になります。 サブフォームに埋め込んでいて親フォームを開いていても 開いてない事になるのですね。 フォームビューの時に、切り替える事は不可能なのでしょうか? 帳票ビュー表示用フォーム、 単票ビュー表示用フォーム を作るしかないのでしょうか?

  • テキストボックスかコンボボックスを条件としたい

    フォーム上のコントロールを取得する時に、 「テキストボックスかコンボボックスなら」としたいのですが、VBAコードがわかりません。 ************************************************************ Sub Sample() Dim myCtrl As Control Dim myForm As String myForm = "フォーム1" For Each myCtrl In Forms(myForm).Controls If myCtrlのタイプがテキストボックス Or コンボボックス Then Debug.Print myCtrl.Name End If Next End Sub ************************************************************ に修正していただけますか? ControlType プロパティを使うと思うのですが、使い方がわかりません。 ご回答よろしくお願いします。

  • フォームを開いた時にVBAでデザイン変更の許可の設

    フォームを開いた時にVBAでデザイン変更の許可の設定が出来ない(access2003) デザインビューで手作業で操作するのではなく VBAで値を設定したいのですが Private Sub Form_Open(Cancel As Integer) Me.AllowDesignChanges = False End Sub をすると ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・  実行時エラー '2448':  このオブジェクトに値を代入することはできません。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ と言うエラーが出てしまいます。 標準モジュールで Sub test() Form_フォーム1.AllowDesignChanges = False End Sub としても同じエラーが出ます。 フォームのデザイン変更の許可は デザインビューで手作業で操作するしかないのでしょうか?

  • サブレポートのテキストボックスのコントロールソース

    アクセス レポート サブレポートのテキストボックスのコントロールソースの設定をVBAでするタイミングを教えてください。 詳細_Formatイベントで、 Me.Controls("サブレポート").Report.Controls("月").ControlSource = "月" とすると 印刷プレビュー時または印刷を開始したあとは、コントロールソースプロパティを設定できません というエラーになります。 フォームからレポートを開いていて、フォームの値をサブレポートのテキストボックスのコントロールソースに設定したい場合、どのレポートのイベントで設定すればいいでしょうか? ご回答よろしくお願いします。

  • Dcount関数が表示されない。

    フォームにコンボボックスを作って選んだデータより、フォームの中にテキストボックスを作って、クエリを元にDcount関数を作成しました。 コントロールソースには=DCount("落札金額","○○クエリ","落札金額<>0")として、落札金額が入った数を表示させたいと思っています。 しかし、コンボボックスに値を入力しても、0表示のままなのですが、フォームビューのままコントロールソースをさわったりして、元に戻すと、正しい数字が表示されてきます。また、コンボボックスを選んだ状態からフォームビューをいったんデザインビューにして、またフォームビューに戻すと、正しい数字が表示されています。 文章にするのが難しくてご理解いただけないかもしれませんが、宜しくお願いします。

  • もしフォームヘッダーにコントロールがあるのなら

    アクセスのフォームの、フォームヘッダーに検索用テキストボックスとコンボボックスがあり、 詳細エリアにレコードソース(コントロールソース)に紐付いたテキストボックスが複数あります。 フォームヘッダーのフィルタを解除するコマンドを実行して、 フォームヘッダーのテキストボックスとコンボボックスをnullにしたいのですが、 vbaで「もしフォームヘッダーなら」ってするにはどうすればいいでしょうか? フォームヘッダーのコントロール名も詳細エリアのコントロール名も 区別のないコントロール名でなのでコントロール名で条件分岐をすることは不可能です。 Private Sub フィルタを解除コマンド_Click() Dim ctl As Control For Each ctl In Me.Controls If (ctl.ControlType = acTextBox) Or (ctl.ControlType = acComboBox) Then 'ここで、もしフォームヘッダーにコントロールがあるのならってしたい Me.Controls(ctl.Name) = Null End If Next ctl Me.Form.FilterOn = False End Sub このコードに付け加えてくれませんか? Debug.Print ctl.Name でコントロール名を取得するとフォームヘッダーも詳細もどちらのコントロール名も取得されてしまいます。 On Error Resume Next 以外でお願いします。

  • アクセス StatusTextChangeイベント

    とあるフォームで、 フォームビューからデザインビューにしようとすると、 イベントプロパティに指定した式 StatusTextChangeでエラーが発生しました。 と表示されます。 これって、日本語で言ったらどのイベントでしょうか? (開く時とか更新時とか) プロパティのイベントを見てもStatusTextChangeがなんだかわかりませんでした。

  • AccessマクロをVBAを使ってデザインビューで開きたい

    いつも楽しく勉強させていただいております。 Access2000でVBAを使ってマクロをデザインビューで開くことはできますか。 たとえばフォームなら、イミディエイトウィンドウで下記のように打てばデザインビューで開きます。 docmd.OpenForm "フォーム1",acDesign これをマクロに対して行いたいのです。 「フォームを開く」や「モジュールを開く」アクションがあるのだから、「マクロを開く」もあってもいいと思うのですが、見当たりません。 あるシステムのバージョンアップをしようとしているのですが、マクロの数が非常に多く、さらに似た名前のものもあって、いちいちデータベースウィンドウから探していると目が疲れて作業が進まず、非常に難儀しております。 どなたかご存知の方、よろしくお願いいたします。

  • (アクセス)全てのイベントプロシージャが無反応に

    何らかの原因でプロシージャやコマンドボタンに設定したマクロ等が無反応になる現象に苦慮しています。 多くのフォームの中で、この現象に関連するフォームは2画面あり、それぞれをフォームA、フォームBということで説明いたします。((1)~(4)) (1)フォームAのコマンドボタン押下でフォームBを開きクエリーのデータ(フォームAで指定した条件)  を表示しています。  フォームBで他のフォームと異なっているプロパティは次の通りです。  ・ポップアップ ----はい  ・作業ウィンド固定 --はい (2)フォームBにはレコードソース(クエリ)の値を表示する幾つかのテキストボックスとコンボボックス  が2つあり、それぞれをコンボA、コンボBとするとフォームBを開いた時はそれぞれにクエリーの   データを表示し、変更する場合はコンボAで選定した条件でクエリによりコンボBにデータを表示す  るようにしています。 (3)なお、コンボAの列数は2で、コンボボックスには列1のデータ(商品名)を表示するようしていて列 2の値(商品コード)を一旦テキストボックスに取り出し、そのコードでクエリによりコンボBのデータ  を表示しています。テキストボックスのプロパティのコントロールソースには次のように記述していま す。   =コンボ186.column(1)   ※=コンボ186がコンボAのことです (4)あと、フォームBにはデータをチェックするためのイベントプロシージャが幾つかとフォームAへ戻る ためのコマンドボタンがありますが他のフォームと比べても特に問題は無いように思えます。 以上のような環境でフォームAからフォームBを開いた時に、フォームBにはレコードソースであるクエリの値は全て表示するものの全てのイベントプロシージャ及び(3)で説明しました  =コンボ186.column(1) の処理が一切動作しなくなります。 しかし、次の操作により回復し、その後はACCESSを終了し再起動しても正常に動作します。  ・フォームBをデザインビューで開く  ・フォームBを開く時に設定しているイベントプロシージャを表示  ・イベントプロシージャをいじって閉じる。(内容は変更しない)  ・フォームBをホームビューで開く   だらだらと長くなり説明も不十分かと思いますが、原因がどうしてもわからなく困っております。 何か手がかりを教えて頂けたらと思い投稿しました。 よろしくお願いいたします。

  • エクセルでは「→」キーで移動できない?

    エクセルでは vbaのフォームをデザインしている時 テキストなどのコントロールは、キーボードの「→」キーで 少しずつ移動させる事は出来ないのでしょうか? アクセスはフォームをデザインビューで開いてるときに コントロールを「→」キーで移動できました。 バージョンは2003です。 バグでしょうか? よろしくお願いいたします。

マザコンと親思いの違い
このQ&Aのポイント
  • マザコンと親思いの違いを知りたい。
  • 結婚を考えていた彼から突然振られた。
  • 彼の行動が自分の理想とは異なると感じ優柔不断なところを注意したことが原因で喧嘩になり、結果的に別れることになった。
回答を見る

専門家に質問してみよう