エクセルVBA操作方法の質問

このQ&Aのポイント
  • エクセルVBAの操作方法についてお尋ねします。
  • コントロールの編集とマクロの設定についてお尋ねします。
  • エクセルの操作方法や設定に関する備忘録を作成します。
回答を見る
  • ベストアンサー

エクセル不可解な現象?ではないと思うのですが。

初歩的な質問ですがエクセルVBAの操作方法についてお尋ねします。 コントロールの編集とマクロの設定についてお尋ねします。 エクセルをたちあげ、シート1が表示されている状態にします。 次に、表示→ツールバー→コントロールボックスを表示し、コントロールボックスより シート上にコマンドボタンを配置します、CommandButton1が配置されたらこのボタンをダブルクリックするとVsualBasicEditerが立ち上がります。 プロジェクトエクスプローラーが表示され、シート1が選択されていることが確認できます。 ここで簡単なプログラムを書きます。 Sub CommandButton1_Click () UserForm1.Show End Sub 更に、挿入メニューよりユーザーフォームを挿入します。 この状態で、VsualBasicEditer上で 実行→Sub/ユーザーフォームの実行をクリックします。 プログラムが実行されUserAForm1が表示されます。 ここでUserForm1の閉じるボタンでUserForm1を閉じます。 一度プログラムを走らせると、 1:シート1に配置したコマンドボタンをクリックするとプログラムが動作する。   マクロの設定はしていないのに! 2:コマンドボタンの編集が出来なくなる。但し、新規にもう一個ボタンを配置すると   前のボタンの編集が出来るようになると同時にCommandButton1をクリックしても プログラムは走らない。 上記1、2の現象が起こります。  1について:ボタンにマクロの設定がしてないのに何故プログラムが走るのか?   このようなやり方でマクロの設定を行わないでもよいのか?  2について:一度プログラムを走らせても、新規にコントロールを追加するという操作をしないで、編集が出来るようにするにはどうすればよいか。   一度走らせたBookをそのまま保存しサイド立ち上げなおしてもボタンをクリックすればプログラムが動作します。走らせる前と後で何が変わっているのでしょうか?   何処かの設定が変わるのであればその場所を教えてください。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

>マクロの設定はしていないのに! たぶん勘違いですね。「マクロの登録」が必要なのは「ツールバー」→「フォーム」の中にあるコマンドボタンです。 「コントロールツールボックス」のコマンドボタンをClickしたときに動くマクロは「Sub コントロール名_Click()」のモジュールに書きますが、質問にあるようにちゃんと書いていますので、動くのが当然です。 2については良く理解できていませんが「コントロールツールボックスバー」のなかに「デザインモード」のアイコンがあります(三角定規と鉛筆みたいなアイコン) これをクリックして「デザインモード」にしてからコントロールを選択すれば、いつでも編集できます

kobamasa
質問者

お礼

早速のご回答有難う御座います。 再度確かめてみました仰るとおりの動作しました。 有難う御座いました。

関連するQ&A

  • VBAのエラーについて

    エクセル2007 でマクロのコードを書いています。 開発画面からマクロを実行するとうまくいくのに、エクセルのシートに配置したボタンにそのマクロを登録して実行するとエラーが出てしまいます。 標準モジュールに UserForm1.showを書いており、UserForm1上に配置したコマンドボタンによってUserForm2を表示させているのですが、UserForm2が出る前に、「問題が発生したために、Microsoft Office 2007 Excelを・・・・・・」というような画面が出て強制終了されます。(UserForm1、UserForm2とも modelessで表示しています。) また、開発画面から1度実行すれば、シートに配置しマクロを登録したボタンからでも実行できるようになるのですが、一度、そのブックを保存してから改めて開くと、同じような症状が出てしまいます。 UserForm2のInitializeに問題があるのだと思い、そこのコードをじっくりと見た結果、UserForm2にあるPageの中に配置した特定のComboBoxとCommandButtonに関する処理を非表示にするとエラーが出ないことが判明しました。しかし、それらについての処理は、他のComboBoxなどと同じ処理(セルの値を読み込むような)をしているもので、名前などのミスもありません。(というか、開発画面からの実行では正常に動きます。) ただ、共通していることとしては、そのエラーが出る特定のComboBoxとCommandButtonは、最後の最後で思いついて配置したものであるということだけなのです。  ずっと、いろいろな方向から試しているのですが、わかりません。複雑な説明で申し訳ないのですが、なにかしら情報をお願いします。

  • 【エクセル2003】マクロ終了後、フォームを閉じたくない。

    ユーザーフォームを挿入し、 Private Sub CommandButton1_Click() ActiveSheet.Delete Sheets.Add End Sub というコードを書き、 図のように配置しています。 やりたいことは、シート上にもコントロールがある状態で、 フォームを実行し、コードを終了させても、フォームは表示させたままにしたいのです。 しかし、図の状態で上記のコードを実行すると、フォームも閉じてしまいます。 コマンドボタンがシート上になければ コードが終わってもフォームは閉じません。 どうすればコマンドボタンも配置しつつ、シートごと削除させ、 フォームを表示したままにすることが可能なのでしょうか? よろしくお願いします。

  • エクセルVBA フォームへ動的に貼り付けたボタンのクリックイベントを検知する方法を教えてください

    (1)excel97にのVBAでフォームを作成します。 デフォルトの場合はUserForm1という名前がつきます。 (2)標準モジュールとして下記のコードを作成します。 Sub ボタンを付けて表示() Dim btn As Control  With UserForm1       ’ボタンを"button"という名前で作成します   Set btn = .Controls.Add("Forms.CommandButton.1", "button")   ’ボタンの設定をします   With btn    .Top = 5    .Left = 5    .Height = 20    .Width = 200    .Caption = "push me!"   End With   ’フォームの設定をし、表示します   .Height = 60   .Width = 220   .Show  End With End Sub (3)マクロを実行するとフォームが表示されます。 そこでこのボタン("push me!"と表示されています)をクリックします。 このクリックを検知してマクロを動かしたいのですが可能でしょうか? なおUserForm1に下記のコードを付けてみたのですがクリックは検知できませんでした。 Private Sub button_Click()  MsgBox "You click the button." End Sub

  • Excelが動作後、ラン状態?

    Excelが動作後、ラン状態? Excel でsheet1の上に、コントロールツールボックスで、処理開始コマンドというのを 作成し、それを押すと(既に作成してある)UserForm1を表示し、そのテキスト入力の値に従ってデータ処理が分岐実行されsheet1に結果が表示されるというようにしました。 データ処理結果はOKなのですが、実行後UserForm1が表示されている間、Excelに対してラン状態のような感じで、どんなキーもカーソル動作も、クリックもきかない状態となっており、そこで後から下記の(UserForm1)のコマンド処理中にUserForm1.Hideを入れたら異常状態はクリアされたのですが、何かそれなりの理由が立つのなら教えていただきたい。 (sheet1) Private Sub CommandButton1_Click() UserForm1.Show End Sub (UserForm1) Private Sub CommandButton1_Click() Dim syorishitei As Integer Dim AA As Integer syorishitei = UserForm1.TextBox1.Value   この途中はいろいろあるが略します。 Call check200 UserForm1.Hide  ‘←ここを後から追加 End Sub

  • エクセルのVBAのことで

    コマンドボタンで「Macro1」というマクロを実行させるVBAは以下だと思いますが。 Private Sub CommandButton1_Click() Call Macro1 End Sub 上記に、Sheet1・Sheet2・Sheet3に対して実行するということを加えると、どんなふうになるでしょうか。

  • VBAのプロパティウィンドウについて

    VBAでプロパティウィンドウには ・Microsoft Excel Object ・フォーム ・標準モジュール があります。 ところで、下のプログラムですが、(1)の部分を標準モジュールに書き込み、フォームにあるコマンドボタンをクリックしたら、"test.xls"が表示されます。 しかし、(1)の部分をMicrosoft Excel Object のsheet1(sheet1)のコードに書き込み、プログラムを実行させると、フォームのコマンドボタンをクリックしても"test.xls"は表示されません。 これはなぜですか? (1)の部分のコマンドボタン1はsheet1に存在します。 (1)----------------------------------- Private file_name as string Private Sub CommandButton1_Click()   file_name="test.xls" UserForm1.Show End Sub (1)----------------------------------- フォーム Sub CommandButton1_Click() MsgBox file_name End Sub

  • VBAでマルチページの表示

    エクセル2002使用です。 ユーザーフォーム(オブジェクト名:UserForm1)に、マルチページ(オブジェクト名:page1)を配置してフォームを作成しました。 Sheet1にコマンドボタンを貼り付け、コマンドボタンをクリックして、標準モジュールを呼び出し、マルチページを標準モジュールから呼び出せるようにしたいのですがうまくいきません。 ’Sheet1 Private Sub CommandButton1_Click() Call フォーム表示 End Sub ’標準モジュール Sub フォーム表示() UserForm1.Show ’?ここのコードをいろいろ試したのですがわかりません。 End Sub この他 UserForm1.ShowPages "page1" とか 変数を入れてみたりしたのですが、うまくいきません。 すいませんが、よろしくお願いします。

  • 複数のユーザーフォームをコマンドボタンにて表示・非表示させるには

    VBA勉強中のものです。 複数のユーザーフォームをコマンドボタンを使用して画面への表示切替を考えております。 例)ユーザーフォーム1,ユーザーフォーム2,ユーザーフォーム3のそれぞれにコマンドボタン1,コマンドボタン2,コマンドボタン3を作成し、   コマンドボタン1→ユーザーフォーム1を表示   コマンドボタン2→ユーザーフォーム2を表示   コマンドボタン3→ユーザーフォーム3を表示 とするようなことを考えおります。  そこで、下記のようにコードを作成したのでですが,一度表示させたユーザーフォームを再度表示させようとコマンドボタンをクリックしたら、「フォームはすでに表示させているのでモーダル表示はできません」とエラーがでてしまいます。   どなたか、どのようにしたらいいかご教授ねがいます。 サンプルコード) --------------------------------------------------- 'UserForm1のコード Private Sub CommandButton2_Click() Call UserForm2_show UserForm1.Hide End Sub Private Sub CommandButton3_Click() Call UserForm3_show UserForm1.Hide End Sub ---------------------------------------------------- 'UserForm2のコード Private Sub CommandButton1_Click() Call UserForm1_show UserForm2.Hide End Sub Private Sub CommandButton3_Click() Call UserForm3_show UserForm2.Hide End Sub ------------------------------------------------------- 'UserForm3のコード Private Sub CommandButton1_Click() Call UserForm1_show UserForm3.Hide End Sub Private Sub CommandButton2_Click() Call UserForm2_show UserForm3.Hide End Sub ------------------------------------------------------------ '標準モジュール コード Sub UserForm1_show() UserForm1.Show End Sub Sub UserForm2_show() UserForm2.Show End Sub Sub UserForm3_show() UserForm3.Show End Sub

  • エクセル マクロ フォームにて

    エクセル マクロの記述教えて下さい! 1)エクセル Sheet1にコマンドボタンをクリックにてフォームが表示 2)UserForm1にコマンドボタンクリックにてUserForm2が表示 3)UserForm2に   OptionButton1(1、血圧)   OptionButton2(2、体温)   OptionButton3(3、脈)  と選択させてTextBox1に(1又は2・3)のみの数字番号だけ  表示させたい!  1の数字の場合は赤文字、2なら青文字にしたい! 4)UserForm2にコマンドボタンをクリックするとUserForm1の  TextBoxに数字(1~3)をそのまま表示させたい! すいません!分かりづらいですか?・・・今の段階での記述がこれです!が、下記の場合だと3)が文字(1、血圧)しか出来ません。 これを数字に認識させたいです! Private Sub CommandButton1_Click() Dim i As Integer Dim Cnt As Integer Cnt = 0 For i = 1 To 3 Step 1 If Me.Controls("OptionButton" & i).Value Then Cnt = i Exit For End If Next i If Cnt = 0 Then MsgBox "ひとつも選択されていません" Exit Sub End If With UserForm1 .TextBox1.Value = Me.Controls("OptionButton" & Cnt).Caption End With Unload Me End Sub 色々追加記述が必要ですが、頭が混乱しています! 是非、教えて下さい!

  • ユーザーフォームの描画が遅れるのは?

    ExcelのVBAで簡単な処理をしているのですが、困っています。 ユーザーフォームにラベル1つとコマンドボタンを2つ用意しました。 ラベルには「・・・よろしいですか?」と質問形式の文章を 表示し、コマンドボタンにはそれぞれ「OK」と「キャンセル」を 表示してあります。 「OK」のコマンドボタンをクリックされたら、2つのコマンドボタン のvisibleプロパティをfalseにして隠し、ラベルには 「しばらくお待ちください。」と表示してセルの計算をさせます。 私の考えでは、コマンドボタンが消えラベルに「しばらく・・」が 表示されてから計算が行われセル上に計算結果が 表示されるはずなのですが、何故か計算結果が全て表示されてから コマンドボタンが消え、ラベルに「しばらく・・」と表示され 次の命令を実行してしまいます。 何がいけないのかが分かりません。 宜しくお願いいたします。 Private Sub CommandButton1_Click()  UserForm1.CommandButton1.Visible=False  UserForm1.CommandButton2.Visible=False  UserForm1.Label1.Caption="しばらくお待ちください。" '計算のsubへ飛ぶ  Call Keisan  UserForm1.Label1.Caption="終了しました。" End Sub

専門家に質問してみよう