• 締切済み

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

いつもお世話になります。 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

みんなの回答

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

マクロにシートを保護させます。もちろん今既に保護されているシートに対して行います。 sub 非表示r1() activesheet.protect userinterfaceonly:=true range("72:266").entirerow.hidden = true range("88:88,96:96,106:106,113:113,122:122,132:132,146:146,153:153,160:160,170:170,180:180,188:188,196:196,206:206,215:215,224:224,230:230,239:239,244:244,251:251,260:260").entirerow.hidden = false end sub みたいに。 たとえば「パスワードを付けてシートを保護」していたり、他にも「具体的にこういう条件を追加してシートを保護しています」みたいなのがあったのなら、その旨ご自分で「新しいマクロの記録」でマクロを録って、付け加えて下さい。 #補足 >合計のある行だけを表示するものです。 「この行は合計のある行だ」と、どこをどう調べたら判るのか、たとえば「A列に合計と書いてあるのが合計の行だ(=その行だけを表示したいんだ)」みたいな具体的な状況に応じた、それに合った合理的なマクロを書いていくのが実際には適当です。

dorasuke
質問者

補足

補足します。 このマクロが全てでシートの保護は手動で行いました。 すみませんてした。 これでシート保護は可能でしょうか。 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 Sub 銀行表示() 銀行表示 Macro ' マクロ記録日 : 2013/4/25 ユーザー名 : YOKOHAMA Rows("2:67").Select Selection.EntireRow.Hidden = False Range("A1").Select End Sub Sub 銀行非表示() 銀行非表示 Macro ' マクロ記録日 : 2013/4/25 ユーザー名 : YOKOHAMA Rows("3:64").Select Selection.EntireRow.Hidden = True Range("A1").Select End Sub Sub 詳細全表示() '' 詳細全表示 Macro ' マクロ記録日 : 2013/4/25 ユーザー名 : YOKOHAMA ' Rows("88:266").Select Selection.EntireRow.Hidden = False Range("A1").Select End Sub

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

シートの保護を解除するしかありません マクロの記録で シートの保護の解除 シートの保護 と操作してください。 必要なこーどがえられますので 上記コードの最初に シートの保護の解除 最後の行に 再度、シードの保護 するコードをコピーして追加してください。

関連するQ&A

  • マクロ(Excel2007)を他のファイルで使う方法(マクロ初心者です

    マクロ(Excel2007)を他のファイルで使う方法(マクロ初心者です。) Excel2007の「4月」というファイルに印刷ボタンが作られており、 以下のマクロが登録されていました。 Sub 非表示(2)() ' ' 非表示(2) Macro ' ' Rows("130:193").Select Selection.EntireRow.Hidden = True ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)" Selection.EntireRow.Hidden = False Range("A1").Select End Sub 「4月」ファイルを新しく「5月」ファイルとして名前を付けて保存したのですが、 どうやら、マクロ有効ブックとして保存していなかったらしく、 マクロが消えてしまっていました。 「5月」ファイルの印刷ボタン(オブジェクト)を選択して  右クリック→マクロの登録 から、「4月」ファイルの当該マクロを選択して登録したところ、 「5月」ファイルの印刷ボタンを押すたびに「4月」ファイルが開いてしまいます。 これは、「4月」ファイルに保存されているマクロを読みにいってしまっているから。 ということになるのでしょうか? このマクロを「5月」ファイルに保存して使用するにはどのようにすればよいか、 教えて頂ければ幸いです。

  • エクセルシート:ボタン押下で特定列の表示←→非表示切り替え

    (行いたいこと) sheet1の中にコマンドボタン1があって、そのボタンが押されたとき既にC列からF列が非表示のときは表示してやり、また逆に表示のときは非表示にする。 (macroを作って実行したい) (現在の考えている状況) 後どうすればいいですか。今は何も動作しません。 今macro3というマクロの中に次のようなものが入っています。 Private Sub CommandButton1_Click() If Selection.EntireColumn.Hidden = True Then Columns("B:G").Select Range("G1").Activate Selection.EntireColumn.Hidden = False Else: Columns("C:F").Select Selection.EntireColumn.Hidden = True End Sub Sub Macro3() ' ' Macro3 Macro ' マクロ記録日 : 2006/3/24 ユーザー名 : ' Columns("C:F").Select Selection.EntireColumn.Hidden = True Columns("B:G").Select Range("G1").Activate Selection.EntireColumn.Hidden = False Range("B2").Select End Sub

  • エクセルのマクロで行選択

    現在、エクセルでマクロを組んでいます。 行いたい内容としては 1.行6~1765までを選択 2. 1.で選択した行を非表示 3. 行6~"セルH2の値"までをを選択 4. 3.で選択した行を再表示 3の段階で失敗してしまいます。 Rangeメソッドに失敗しました、と出ます ソースは以下のとおりです ----- Private Sub CommandButton2_Click() Dim x As Integer Range("6:1765").EntireRow.Select Selection.EntireRow.Hidden = True x = Range("H2").Value Range("6:x").EntireRow.Select Selection.EntireRow.Hidden = False End Sub ---- 解決法がわかる方、教えてください よろしくお願いします。

  • 行を非表示するVBA

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

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

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

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

  • この場合エクセル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のマクロについて

    お世話になっております。 以下のマクロを1万行分繰り返したいのですが、回数を1万回と指定する構文を 教えてください。よろしくお願いします。 Sub Macro16() ' ' Macro16 Macro ' ' Keyboard Shortcut: Ctrl+Shift+Z ' ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove ActiveCell.Offset(-1, 0).Range("A1:M1").Select Selection.Copy ActiveCell.Offset(1, 0).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(-1, 2).Range("A1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "7/5/1905" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "7/6/1905" ActiveCell.Offset(1, -2).Range("A1").Select End Sub

  • EXCEL-VBマクロで教えて下さい

    パスワードを入力を促すVBマクロですが「キャンセル」キーを押した時に 以降の操作をせずマクロ終了したいのですがどのような構文を挿入すべき でしょうか? Sub Macro3() ' ' Macro3 Macro ' マクロ記録日 : 2012/7/27  ユーザー名 : HA社 '    Const MYPASSWORD As String = "apcs123"    Dim myPassInput As String    myPassInput = InputBox("入力してください", "パスワードの入力")    Do While MYPASSWORD <> myPassInput    myPassInput = InputBox("違います。再度入力してください", "パスワードの入力")    Loop    ActiveSheet.Unprotect    Rows("40:50").Select    Selection.EntireRow.Hidden = False    Range("A1:C1").Select End Sub

  • マクロ・複数シートに適用するには?

    初心者です。以下のマクロを組みました。 これを複数シートに適用するにはどうしたらよいのでしょうか? worksheets selectではうまくいきませんでした>< 具体的には1~80までのシートが数字で分けられており、 「目次」と「新規」以外の全てに適用したいです。 Sub Macro3() Dim sl As String Dim mySht As Worksheet sl = Range("A65536").End(xlUp).Address Range("B1", sl).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True For Each mySht In Worksheets Next End Sub

専門家に質問してみよう