• 締切済み

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に合うよう、変換するサービスがあってもいいと思うのですが。 それも含めて助けてください。

みんなの回答

回答No.1

動いていた当初のExcelのバージョンを教えてもらっていいですか? 2002で成功して2003で失敗しているパターンがありますが, 質問者様の知り合いのマシンが2003だと完全に的外れな回答となるので。 http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=683378&SiteID=1

horiket
質問者

補足

連絡が遅くなって済みません。わざわざありがとうございます。 会社に勤めているので、帰ってきてパソコンを開くのが、この時間になってしまいます。(言い訳ですが、ご容赦のほどを、・・・。) おそらく、知り合いの壊れたパソコンに入っていたのは、EXCEL2000だったと思います。ご参考になりますでしょうか。よろしくお願いいたします。

関連するQ&A

  • 【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行目 という選択は、どのように指定すればよろしいでしょうか? よろしくお願いします。

  • シートの保護を実行した時、マクロだけは作動させたい

    いつもお世話になります。 WINDOWS7 EXCELL2010です。 シートの保護を実行すると下記のマクロが作動しないのですが何かいい方法はないでしょうか。 もし可能ならばご教示いただければ幸いです。 このマクロは素人の私が作成したもので合計のある行だけを表示するものです。 参考 Sub 非表示() ' ' 非表示 Macro ' マクロ記録日 : 2013/4/25 ユーザー名 : YOKOHAMA '' Rows("72:87").Select Selection.EntireRow.Hidden = True Rows("89:95").Select Selection.EntireRow.Hidden = True Rows("97:105").Select Selection.EntireRow.Hidden = True Rows("107:112").Select Selection.EntireRow.Hidden = True Rows("114:121").Select Selection.EntireRow.Hidden = True Rows("123:131").Select Selection.EntireRow.Hidden = True Rows("133:145").Select Selection.EntireRow.Hidden = True Rows("147:152").Select Selection.EntireRow.Hidden = True Rows("154:159").Select Selection.EntireRow.Hidden = True Rows("161:169").Select Selection.EntireRow.Hidden = True Rows("171:179").Select Selection.EntireRow.Hidden = True Rows("181:187").Select Selection.EntireRow.Hidden = True Rows("189:195").Select Selection.EntireRow.Hidden = True Rows("197:205").Select Selection.EntireRow.Hidden = True Rows("207:214").Select Selection.EntireRow.Hidden = True Rows("216:223").Select Selection.EntireRow.Hidden = True Rows("225:229").Select Selection.EntireRow.Hidden = True Rows("231:238").Select Selection.EntireRow.Hidden = True Rows("240:243").Select Selection.EntireRow.Hidden = True Rows("245:250").Select Selection.EntireRow.Hidden = True Rows("252:259").Select Selection.EntireRow.Hidden = True Rows("261:266").Select Selection.EntireRow.Hidden = True Range("A1").Select End Sub

  • この場合エクセルVBAでどう書けばいいでしょうか?

    あるシートのH列で、H21からH46のあいだで"False"がある行を非表示にしたいのです。 下記の冗長なマクロでもそうなりますが、For Nextというのを使うともっと簡潔に記述できると思うのですが、初心者のためよくわかりません。ご教示ください。 また、下記の式はシートが保護されていると働きませんが、保護したシートでも動く方法があればそれもあわせて教えていただけると幸いです。 エクセルは95です。 Sub 空白行非表示() G% = Sheets("見積書").Range("H48").Value With Sheets("見積書") Rows("19:47").RowHeight = G% If Range("H21") = False Then Rows("21").EntireRow.Hidden = True End If If Range("H22") = False Then Rows("22").EntireRow.Hidden = True End If If Range("H23") = False Then Rows("23").EntireRow.Hidden = True End If If Range("H24") = False Then Rows("24").EntireRow.Hidden = True End If 途中、繰り返しのため省略 If Range("H42") = False Then Rows("42").EntireRow.Hidden = True End If If Range("H43") = False Then Rows("43").EntireRow.Hidden = True End If If Range("H44") = False Then Rows("44").EntireRow.Hidden = True End If If Range("H45") = False Then Rows("45").EntireRow.Hidden = True End If If Range("H46") = False Then Rows("46").EntireRow.Hidden = True End If End With End Sub

  • Excel VBAでの定数宣言について

    初心者が書籍とにらめっこしながらマクロを書いています。 お助けください。 複数あるラジオボタンをクリックしたら、そのラジオボタンの種類に応じて、特定の行を表示したり、非表示にしたりしたいと考えています。行の追加や削除で行番号が変わってしまった場合に備えて、この行番号を定数として宣言したいと思ったのですが、うまくいきません。 シートモジュールには、以下のように記述しています。 ============================================================== Private Sub OptionButton1_Click() 'ラジオボタン1を選択 Rows(scope1).EntireRow.Hidden = False 'scope範囲行を表示 Rows(scope2).EntireRow.Hidden = True 'scope範囲行を非表示 End Sub Private Sub OptionButton2_Click() 'ラジオボタン1を選択 Rows(scope1).EntireRow.Hidden = True 'scope範囲行を非表示 Rows(scope2).EntireRow.Hidden = False  'scope範囲行を表示 End Sub ============================================================== 以下の記述で定数を宣言したいのですが、 public const scope1 = "38:48" '38行目~48行目 public const scope2 = "49:52" '49行目~52行目 シートモジュールの最初に書くと、 「コンパイルエラー  定数、固定長文字列、配列、ユーザー定義型およびDeclareステートメントは、オブジェクトモジュールのパブリックメンバとしては使用できません」 とエラーメッセージが表示されてしまいます。 エラーの意味がよく分からないのですが、定数宣言は、どこに記述すればよいのでしょうか? お教えください。よろしくお願いします。

  • 結合されているセル行の中から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行だけを非表示にしたい場合は、どのように記述すれば良いのでしょうか? よろしくお願いします。

  • エクセル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 で誤魔化していますが、時間がかかりますし、列はその都度設定している状況です。 ご指導お願いします。

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

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

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

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

  • 【VBA】 行非表示で、1度エラー 【Excel】

    いつもお世話になっております。 Excel2003を使用しています。 シート TESTに、 グラフ20個以上(2行目から) ボタン2つがあります。(1行目、A1とH1) ActiveSheet.Rows("2:20").Hidden = True 上記を実行すると、 ”型が一致しません” というエラーが出ます。 エラーが出て「F8」を押すと、進む事が多いです。 「F5」を押した場合でも、進む事が多いです。(たぶん関係ないですが) ブレークポイントなどを設定しているわけでもないのに、 毎回上記プログラムの部分で 「型が一致しません」 というエラーで一旦止まってしまいます。 何か改善方法はありますでしょうか? プログラムの改善点も教えて頂けるとうれしいです。

専門家に質問してみよう