• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【VBA】 行非表示で、1度エラー 【Excel】)

VBAで行非表示時に型が一致しないエラーが発生する問題

このQ&Aのポイント
  • Excel2003を使用している際に、VBAで行を非表示にすると型が一致しないエラーが発生します。
  • エラーが発生した場合、F8キーを押すことで進行できることがあります。
  • 問題の解決方法やプログラムの改善点についてアドバイスをいただきたいです。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

状況としては、グラフを選択した状態でそのマクロの一文を実行すると、ご相談のエラーが発生します。 ただしご質問に書かれている状況説明から推測して、「ボタン」に「その1行のマクロだけ」を登録して実行していれば、エラーは回避できます。 ご説明で割愛されている、その一行のマクロの他で(前で)行っている何かのマクロの命令が、問題の直接の原因になっている可能性があります。 とりあえず簡易な回避策としては activesheet.select activesheet.rows(2:20").hidden = true のようにして、明示的にワークシートを選択した状態で問題の一行が実行されるようにしてみます。

satoron666
質問者

お礼

回答ありがとうございます! グラフを選択した状態だとそのエラーが出るのですか… 原因が分からなかったのでとても助かります! 色々と説明不足な点が多々あり、申し訳ないです。 フォーム上で、データの操作を行っており、 フォームの内容の通りにグラフを作成しております。 そして、フォームのマクロの最後に ActiveSheet.Rows("2:20").Hidden = True と記入していたのですが、 そこで上記エラーがでておりました。 読み返してみたら情報不足すぎて、 本当に申し訳ないです。 試してみたところ、出来ました! in01280128様に教えて頂いた プログラムではなぜ出来ないのか・・・ やっていることは同じだと思うのですが、 やはり、selectは重要なのでしょうかね? keithin様、回答ありがとうございました!

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

その他の回答 (1)

回答No.1

あまり関係ないかも知れませんが: ActiveSheet で返されるオブジェクトがワークシートだとは限りませんので、 Worksheets("Test").Rows("2:20").Hidden = True と書いておく方が無難であるような気がします。

satoron666
質問者

お礼

in01280128様、回答ありがとうございました! keithin様に教えて頂いたプログラムだと問題なく 動作し始めました。 プログラム内容?的にはほぼ同じだと思うのですが… やはり、勉強不足なのでしょうね(笑 では、ありがとうございました!

satoron666
質問者

補足

回答ありがとうございます! グラフを選択した状態だとそのエラーが出るのですか… 原因が分からなかったのでとても助かります! 色々と説明不足な点が多々あり、申し訳ないです。 フォーム上で、データの操作を行っており、 フォームの内容の通りにグラフを作成しております。 そして、フォームのマクロの最後に ActiveSheet.Rows("2:20").Hidden = True と記入していたのですが、 そこで上記エラーがでておりました。 読み返してみたら情報不足すぎて、 本当に申し訳ないです。 試してみましたが、 まだ上記エラーが出ます。 難しいですね・・・

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

関連するQ&A

  • Excel2007VBAで変動する行範囲の指定方法

    下記の様なマクロで、変動する行指定の指定方法がわかりません。 A1+1 行から39行目までを非表示にしたいのですが 上記の A1+1 は変動する。(A1+1を36にて実行するとエラーは出ません) 'マクロで余分な行を非表示にする Rows("A1+1:39").Select Selection.EntireRow.Hidden = True を実行すると、 実行時エラー '13' 型が一致しません。  となってエラーが出てしまいます。 当方ごく初心者で、指定または変更の方法がわかりません。 教えて下さい。どうぞよろしくお願いします。

  • EXCEL2007でVBAが動かない

    私の知り合いがWindowsMeを使っていて、個人的に株の取引をしています。知り合いから頼まれて、その株の管理をするための表をEXCELで作りました。そして、その管理表の空白部を非表示にするため、次のようなプログラムをVBAで作りました。 "If ActiveSheet.Name = "銘柄別取引明細" Then ActiveSheet.Unprotect Rows(CStr(1) & ":" & CStr(登録最大件数 + タイトル行 + 1)).EntireRow.Hidden = False 表示最大行 = 表示最大行検索((タイトル行 + 1), "A") Rows(CStr(表示最大行 + 2) & ":" & CStr(登録最大件数 + タイトル行)).EntireRow.Hidden = True ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End If End Sub" 登録最大件数=100と最初に定義しています。表示最大行検索は別にサブプロシジャを作っています。 さて、知り合いのパソコンが壊れて、新しくパソコンを買いました。当然、Vistaです。新しいパソコンに、このEXCELファイルをメモリから読み込ませ、開いてみると、動きません。セキュリティの問題かと思い、「全てのマクロを有効にする」にして、さらに「開発者を信用する」をオンにしてみましたが、動きません。 調べてみると、VBAの、"Rows(CStr(1) & ":" & CStr(登録最大件数 + タイトル行 + 1)).EntireRow.Hidden = False"でプログラムが止まってしまっています。 理由が分かりません。誰か教えてください。 しかし、何でEXCEL2007になると、突然、プログラムが動かなくなるのでしょうか。EXCEL2007では不具合になるようなことがあったとしても、自動的に、EXCEL2007に合うよう、変換するサービスがあってもいいと思うのですが。 それも含めて助けてください。

  • ExcelVBAで行の非表示、表示をコード化

    現在、Excel2003をつかっており、VBAを用いて sheet1シートの2行目、4行目、10行目を非表示にするマクロ(HIDDEN)と すべての行を表示にするマクロ(APPEAR)を使っています。 Sub HIDDEN() ThisWorkbook.Worksheets("sheet1").Rows("2").HIDDEN = True ThisWorkbook.Worksheets("sheet1").Rows("4").HIDDEN = True ThisWorkbook.Worksheets("sheet1").Rows("10").HIDDEN = True End Sub Sub APPEAR() ThisWorkbook.Worksheets("sheet1").Rows.HIDDEN = False End Sub いま、2つのマクロを併合し 「Sheet1の2行目、4行目、10行目のいずれかが非表示であれば、すべての行を表示 そうでなければ、2行目、4行目、10行目のすべてを非表示にしたい」 と考えています。 ここで私が困っているのは、2行目、4行目、10行目のいずれかが非表示であれば というのをどうVBAで記述するのかです。

  • ExcelVBAで行の非表示、表示をコード化したい

    現在、Excel2003をつかっており、VBAを用いて sheet1シートの2行目、4行目、10行目を非表示にするマクロ(HIDDEN)と すべての行を表示にするマクロ(APPEAR)を使っています。 Sub HIDDEN() ThisWorkbook.Worksheets("sheet1").Rows("2").HIDDEN = True ThisWorkbook.Worksheets("sheet1").Rows("4").HIDDEN = True ThisWorkbook.Worksheets("sheet1").Rows("10").HIDDEN = True End Sub Sub APPEAR() ThisWorkbook.Worksheets("sheet1").Rows.HIDDEN = False End Sub いま、2つのマクロを併合し 「Sheet1の2行目、4行目、10行目のいずれかが非表示であれば、すべての行を表示 そうでなければ、2行目、4行目、10行目のすべてを非表示にしたい」 と考えています。 ここで私が困っているのは、2行目、4行目、10行目のいずれかが非表示であれば というのをどうVBAで記述するのかです。

  • エクセルVBAで非表示にする方法

    エクセルのVBAを使って表示・非表示の切り替えをする方法を教えてください。 マクロは初心者のため、コードを書いていただけると嬉しいです。 (1)6~9行目、11~14行目、16~19行目…151~154行目まで を表示・非表示 (2)合計列・差額列 (列に名前を入れています。ABCなどどの列に入るかはケースによりかわります) 今のところ、 Rows("6:9").Hidden = True Rows("11:14").Hidden = True Rows("16:19").Hidden = True . . . Columns("Q:R").Hidden = True で誤魔化していますが、時間がかかりますし、列はその都度設定している状況です。 ご指導お願いします。

  • 行を非表示するVBA

    下記は行を非表示するVBAです、 エラーになり非表示できませんどこが間違っているのですか、よろしくお願いします。 Sub Macro7() Dim a As Integer a = 15 Rows("a:a").Select Selection.EntireRow.Hidden = True End Sub

  • 【Excel2003 VBA】

    【Excel2003 VBA】 行(範囲)選択時、パラメータを利用したいのですが。 例えば、2行目から11行目を非表示にする場合は、 Rows("2:11").Select Selection.EntireRow.Hidden = True ですが、 2及び11が不規則に変わるのでパラメータを利用したいと思っています。 Dim i as Integer Dim j as Integetとし、 i行目からj行目 という選択は、どのように指定すればよろしいでしょうか? よろしくお願いします。

  • 結合されているセル行の中から1行だけを非表示にするマクロ

    結合されているセル行の中の1行だけを非表示したいと思っています。 例えばA1:A5が結合していて、B1:E5までは一切結合されていない状態で、3行目だけを非表示にしたいのですが、 Rows("3:3").Select Selection.EntireRow.Hidden = True とすると、1~5行目まで全てが非表示になります。 マクロを自動記録すると Rows("3:3").Select Range("B3").Activate Selection.EntireRow.Hidden = True となるのですが、この通りにコーディングしても、やはり1~5行目が非表示になります。 1行だけを非表示にしたい場合は、どのように記述すれば良いのでしょうか? よろしくお願いします。

  • エクセル 行の表示非表示のマクロでエラーが

    たとえば     列A  行1 2300  行2 1500  行3  500  行4  300 となっていて、ボタンを押すたびに行2~行4の表示非表示を切り替えるマクロを以下のように設定しました。   Sub ()   With Rows("2:4")   .Hidden = Not .Hidden   End With   End Sub そして、A1のセルを保護しシートを保護したところマクロにエラーが出て使えなくなりました。 解決方法はあるのでしょうか? よろしくお願いします。

  • 塗りつぶしのない行を非表示にするマクロ

    塗りつぶしのない行を非表示にするマクロを作成したいのですが、 どこが問題で実行できないのかわかりません! 例えば8行目に対して実行したい場合を教えてください! ちなみに自分で作成したVBAはこんな感じです。 Sub macro1() If Rows("8:8").Interior.Color = xlNone Then Rows("8:8").EntireRow.Hidden = True End If End Sub よろしくお願いします。 ちなみにexcel2007です。

このQ&Aのポイント
  • 酸熱トリートメントでツヤツヤサラサラの髪に!ただし色落ちには注意
  • 美容師によって施術方法が異なるため、カラーとの同時施術は美容室によって違う可能性あり
  • 美容室選びは技術と人柄の両方を重視したい
回答を見る

専門家に質問してみよう