• ベストアンサー

Excel VBA --- コマンドボタンが表示上で消える ---

Excel VBAの初心者です。 今回、マニュアル本を見ながら試行錯誤でマクロにチャレンジしています。 用語や説明が上手くできないかもしれませんがよろしくお願いします。 OSはWindows2000、Excelのバージョンは2000です。 sheet1をメニュー画面として、コマンドボタンをいくつか貼り付けて、そのシート名を表示したコマンドボタンをクリックすると別のシートに 飛ぶようにしています。 別のシートに飛んで、そこで作業を終えたら、今度はそのシート上に貼り付けた『メニューに戻る』コマンドボタンをクリックしてsheet1のメニュー画面に戻るようにマクロを組みました。 ところが、作業用のシートからメニューに戻ると前回クリックしたコマンドボタンが表示上消えてしまっています。 そのコマンドボタンがあった位置にカーソルを持って行ってクリックするとちゃんとコマンドボタンの動作をします。 同じような質問がないか検索してみましたら『コマンドボタン上の文字の表示がおかしくなる』という質問があって、下記コードを入れたら解決したそうなので、Sheet1に下記のようなコードを入れてみました。 でもダメでした。 Private Sub Worksheet_Activate() Application.ScreenUpdating = False ActiveWindow.ScrollRow = 100 ActiveWindow.ScrollRow = 1 End Sub 解決方法のご教授をお願い致します。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

こんにちは。 > Application.ScreenUpdating = False > ActiveWindow.ScrollRow = 100 > ActiveWindow.ScrollRow = 1 ワークシートには Redraw メソッドが無いので、その代用コード だと思います。以前、一度同じような状況になって、   Application.ScreenUpdating = True では再描写してくれなかったため、同様のコードを書いたことが あります。ScrollRow を使ったのか覚えてませんが、確かシート をスクロールさせたような..? で、回答ですが、再描写が目的なので ScreenUpdating = False として画面更新を止めてしまっては意味がないですよ。それ以前 のコード実行中に画面更新を止めている可能性があるので、 コードの終了部で、 Application.ScreenUpdating = True ActiveWindow.ScrollRow = 100 ActiveWindow.ScrollRow = 1 としてみては?

qwer_2006
質問者

お礼

そうなんです! メニューに戻った時に、メニューから目的のシートに飛ぶためにクリックしたコマンドボタンだけが画面上で消えてしまっているんです。 でもそのコマンドボタンのあった位置をクリックしてみると、ちゃんとそのコマンドボタンで指定してあるシートに再度飛ぶので、画面表示上だけの問題だと想像して再描画をさせたかったのです。 画面を再描画させる手段を探して見つけたコードが質問中に書いたコードだったのですが、ScreenUpdatingをFalseにしてしまったのが間違いでした。 Application.ScreenUpdating = True に直してみたら消えてしまったコマンドボタンも表示されるようになりました。 本当にありがとうございました。

その他の回答 (3)

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.3

状況がわかりません。 補足願います。 1.Sheet1の列名は左よりABCD… 行No.は上より12345…と並んでいますか 2.SHee1に配置した全てのボタンが消えますか 3.コントロールツールボックス内のデザインモードをクリックしてください。 ボタンが表示されましたか? ボタンの左上角で右クリック→プロパティーで 下から3行目のVisibleは true になっていますか 4.マクロのコードを掲示願います。 ツールメニュー→マクロ→マクロ→マクロ選択→編集で表示されます。 表示中 ’(シングルコーテーション)で始まる色付きの行は不要です。削除して残りをコピー&ペーストします。 追伸 コマンドボタンには2種のプロパティーがあるのをご存知ですか? 一つはボタン自身のプロパティーで 上記3で表示されるもので 今一つは、セルとボタンのかかわりを設定するもので、マクロボタンの左上角右クリック→コントロールの書式設定から入るものです。

qwer_2006
質問者

お礼

冒頭のコード Application.ScreenUpdating = Falseを Application.ScreenUpdating = Trueに直したら コマンドボタンもきちんと表示されるようになりました。 ありがとうございました。

qwer_2006
質問者

補足

説明がつたなくて申し訳ありません。 補足です。 1.Sheet1の列名は左よりABCD… 行No.は上より12345…と並んでいます。 2.メニュー用のSHee1から他のシートに飛ばすためにクリックしたコマンドボタンのみ消えています。 3.Visibleは true になっています。 4.コードを提示します。 sheet1のコードは Private Sub CommandButton1_Click() Worksheets("見積書").Activate End Sub Private Sub CommandButton2_Click() Worksheets("請求書").Activate End Sub Private Sub CommandButton3_Click() Worksheets("売上集計表").Activate End Sub Private Sub Worksheet_Activate() Application.ScreenUpdating = False ActiveWindow.ScrollRow = 100 ActiveWindow.ScrollRow = 1 End Sub ------------------------------------------ シート "見積書","請求書","売上集計表"ではそれぞれ Private Sub CommandButton1_Click() Worksheets("sheet1").Activate End Sub と入れています。 各シート上で各々いろいろな作業をさせているので他のコードもありますが、今回コマンドボタンが消えてしまうのは画面表示上だけの問題のようなので省略させていただきました。 プロパティーにつきましては、初心者なので本当によくわかっていないのですが、今回の問題でネットで検索して、ボタン自身のプロパティ上でAutoSizeをTrueをFalseに変更してみたり、コントロールの書式設定のプロパティタブのオブジェクトの位置関係を「セルに合わせて移動やサイズ変更をしない」に変更したり、いろいろといじってみました。 エクセルは本当に奥が深く、勉強しなければならない事がたくさんあると実感しました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >コマンドボタンが表示上消えてしまっています。 >コマンドボタン上の文字の表示がおかしくなる コマンドボタンの文字が消えるということと、 ActiveWindow.ScrollRow = 100 ActiveWindow.ScrollRow = 1 と、どうつながるのですか?位置が違う場合でも、そんなコードは使わないです。たぶん、意味が違うのでは?マクロでは、そんなコードは、めったに書かないです。 「コマンドボタンが表示上で消える」と聞けば、ワークシート上から、フレームアウトしているかもしれませんが、ともかく、見えなくなっていると解釈できます。そういう話でしょうか。質問が良く分かりません。 たぶん、表示の問題は、フォームのコマンドボタンに書いているのでは? その編集部分(Caption)に空白が入っているからではありませんか。ベテランでも、うっかりする失敗です。コントロールツールは、プロパティ一覧で確認できますが、フォームは出来ません。 ただ、Excel 2000 クラスのマニュアル本には、フォームを使うとかは、あまりないはずです。Excel2000 では、既に、隠しオブジェクトになってしまっているので、入門レベルでは、ほんの少ししか触れられないはずです。

qwer_2006
質問者

お礼

冒頭のコード Application.ScreenUpdating = Falseを Application.ScreenUpdating = Trueに直したら コマンドボタンもきちんと表示されるようになりました。 ありがとうございました。

qwer_2006
質問者

補足

説明がつたなくて申し訳ありません。 補足です。 メニューに貼り付けたコマンドボタンをクリックして別シートに飛ばして、またメニューに戻った時に前回クリックしたコマンドボタンのみ画面上で消えてしまうのです。 でも、そのコマンドボタンの配置されているはずの位置をクリックすると、ちゃんとコード上の動作はしてくれるので、画面の表示上だけの問題だと推測しました。 コマンドボタンの文字が消えるということとのつながりとしては、コマンドボタンの表示がおかしくなったのを、きちんと表示させ直したら問題解決したという回答を見て、画面を再描画させる手段として参考にできるかな?と思ったからです。 使用しているExcelは2000なのですが、最近勉強を始めたばかりなので、購入したマニュアル本(3冊)は、みなExcel2002,2003,2007対応版を使用しています。

  • tossy005
  • ベストアンサー率38% (7/18)
回答No.1

お役に立てずに申し訳ありません。 原因ははっきりと分かりませんが、入れてみたというコードに疑問があったので返信させて頂きます。 Application.ScreenUpdating = False というのは画面の更新を止めるという処理になりますので、 そのあとの ActiveWindow.ScrollRow = 100 ActiveWindow.ScrollRow = 1 のあと Application.ScreenUpdating = True という処理を入れるべきではないでしょうか。

qwer_2006
質問者

お礼

冒頭のコード Application.ScreenUpdating = Falseを Application.ScreenUpdating = Trueに直したら コマンドボタンもきちんと表示されるようになりました。 ありがとうございました。

関連するQ&A

  • コマンドボタンの表示が

    エクセルでコマンドボタンにより印刷プレビューを表示して,閉じるを クリック後,他のコマンドボタンの表示がおかしくなります。 (コマンドボタンが拡大しています) 原因と解決方法を教えてくださると嬉しいです。 Private Sub CommandButton2_Click() ActiveWindow.SelectedSheets.PrintPreview End Sub

  • コマンドボタンの自動作成

    こんにちは。 Excel2000で作業をしています。 Excel VBA を用いて、コマンドボタンを作成しようとしているのですが、うまくいきません。 試しにマクロを記録させてみたところ、 ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _ , DisplayAsIcon:=False, left:=252, top:=292.5, width:=72, height:=24) _ .Select というコードになったのですが、これを実行させてみたところ、ボタンのようなものは表示されるのですが、このボタンを右クリックしても、「プロパティ」「コードの表示」メニューが表示されず、コマンドの実行ができません。 Clickイベントを発生させて、コマンドの実行ができるコマンドボタンをVBA等で作成するためには、どのようにすればよいのでしょうか。

  • EXCEL コマンドボタン

    説明が解りにくかったらごめんなさい。 Excelでよくコマンドボタンを作成してマクロを割り当てて使っていました。そのときはカーソルが指マークになって、右クリックするとメニューの中に「マクロの登録」があったのですが、突然、特別なことをした覚えはないのですが、右クリックしたメニューの中から「マクロの登録」は消え、ダブルクリックをするとvisual Basic editorのデザインが現れます。フォームのコマンドボタンから作っているのですが、オブジェクトがちょっと以前と変わってきているような感じです。 基本的には一緒なのですが、以前の方が使いやすく、戻したいのですがどのようにしたらよいでしょうか?

  • マクロ コマンドボタンを押すともう一つコマンドボタン

    マクロ初心者です。宜しくお願いします。 コマンドボタンをクリックしたら、指定して開いたファイル上にもうひとつコマンドボタンを追加で表示させることは可能でしょうか? <詳細> ・コマンドボタンを押す ・エクセルのファイルを指定して開く ・指定して開いたファイルの「Sheet1のA1」に新たにコマンドボタンを出現させる。 ・「Sheet1のA1」に現れたコマンドボタンを押すとそのファイルを印刷する。 みたいな事をしたいのですが、可能でしょうか?? 宜しくお願いします。

  • コマンドボタンにマクロを登録させる方法

    エクセルでマクロを作成しました。マクロを実行させる為に「コントロールツールボックス」にある「コマンドボタン」で作ったボタンに登録をしたいのですがうまくいきません。 以前はコマンドボタンを作ったら、自動的に「マクロの登録」ダイアログボックスが出てきたのですが、何故か出なくなってしまいました。オートシェイプで作成したボタンなら、右クリックすると「マクロの登録」があるのですが、コマンドボタンを右クリックしても「マクロの登録」がありません。以前のように、自動的に「マクロの登録」ダイアログボックスを表示させる方法があったら教えてください。 また、ボタンをダブルクリックするとVBAが開いて以下のようなコードの記載がありますが、ここにコードを記載すればボタンをクリックしたときにマクロが実行されるのでしょうか?VBAはまったく解りませんので、どのように記載したらいいのかわかりません。実際に記入して教えてください。お願いします。マクロ名は、日本語で「結果一覧」としました。(「Private Sub CommandButton1_Click()」と「End Sub」の間に、マクロの記述部分をコピーして、貼り付けたら、ボタンをクリックしたときにマクロは実行できたのですが、もっと簡単にマクロ名を記述したら実行できるような気がするのですが、簡単に記述して実行できる方法があったら教えてください。) OSはWindows ME、Excelは2002 です。よろしくお願いします。 コマンドボタンをダブルクリックしたときのコードです。 Private Sub CommandButton1_Click() End Sub

  • VBA コマンドボタンを押して非表示にしたい

    パワポ2003です。 スライドにオートシェイブで四角形を挿入し、コマンドボタンを設置しました。 そのコマンドボタンを押すと、四角形を非表示にしたいのですが、 デザインビューの状態で、 Private Sub CommandButton1_Click() ActiveWindow.Selection.SlideRange.Shapes("Rectangle 4").Visible = vbFalse End Sub を実行すると、該当の四角形が消えるのですが F5でスライドを実行中に、コマンドボタンを押すと ----------------------------------------------------- 実行時エラー '-2147188160 (80048240)': Application (不明なメンバー): 無効な要求です。アクティブなドキュメント ウィンドウがありません。 ----------------------------------------------------- というエラーになってしまいます。 どうしたら、スライドを実行中にコマンドボタンを押して、 テキストボックスを非表示に出来るのでしょうか? 宜しくお願いいたします。

  • コマンドボタンからSubをCallできない

    コマンドボタンのコードにcall マクロA と書いたのですが機能しません。 「開発⇒マクロ」でマクロを実行出来ないように(コマンドボタンのクリックまたはVBEのみからしか動かせないように)、マクロAはModule1にPrivate Subで書いてあります。 コマンドボタンからPrivate Subは呼び出せないのでしょうか? もしくは、マクロのリスト一覧に載せない方法、 または、コマンドボタンのクリックのみからしかマクロを起動できないようにする方法はないのでしょうか? よろしくお願いします。

  • Excel VBA ボタンを非アクティブにするには

    Excel VBAにおいて、sheet上に製作したコマンドボタンを表示したり、非表示にしたりするコードはわかるのですが。ツールバーに作成したボタンを表示したり、非表示にしたりするコードがわかりません。ご存知でしたら御教授下さい。よろしくお願いします

  • excel vba ジャンプ

    excel2003のUserFormにてtextbox作成しました。 textbox1にページを入力すると指定のページにジャンプする コードを作成したのですが、動作的には目的とする事ができました。 ただ、初心者レベルで作成したので、コード記述が長く、 ページが増えるたびにコードを追記していかなければなりません。 下記に作成したコードを記述します。 もっと簡単に記述する方法はありますか? ---------------------------------------------------------- Private Sub TextBox1_Change() If TextBox1.Value = 1 Then ActiveWindow.ScrollRow = 1 ActiveWindow.ScrollColumn = 1 Range("$A$15").Select End If If TextBox1.Value = 2 Then ActiveWindow.ScrollRow = 38 ActiveWindow.ScrollColumn = 1 Range("$A$38").Select End If If TextBox1.Value = 3 Then ActiveWindow.ScrollRow = 69 ActiveWindow.ScrollColumn = 1 Range("$A$69").Select End If If TextBox1.Value = 4 Then ActiveWindow.ScrollRow = 100 ActiveWindow.ScrollColumn = 1 Range("$A$100").Select End If If TextBox1.Value = 5 Then ActiveWindow.ScrollRow = 131 ActiveWindow.ScrollColumn = 1 Range("$A$131").Select End If End Sub ---------------------------------------------------------- 上記記述で行っていることは、 textbox1に 1 と入力すると1ページ目が表示  キーボードでctrl+Homeの操作をした状態でカーソルがA15選択 textbox1に 2 と入力すると2ページ目が表示  表示の先頭が38行目、カーソルがA38選択 ページの行数が1ページ目だけ37行 2ページ目以降が31行ごとです。 実際は、200ページ以上あるのでなんとかしたいのですが・・・・

  • excel97のVBAについて

    始めまして、MV3307と申します。 さて下記内容を、VBAでコードを書くつもりですが、マクロ初心者で記載 方法が分からないので是非ご教授お願いいたします。     記 (1)EXCELの"Sheet1"の数式バーに式が表示してあります。 (2)VBAの"コマンドボタン"をクリックして、数式バーの式をTexBoxに取得する。 以上です、宜しくお願いします。    

専門家に質問してみよう