[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『UserInterfaceOnlyを書く場所』(ぶり)
保護をかけているシート(複数)の中でもマクロを有効にするのに
UserInterfaceOnly=True が良いと見かけました。
が、どこに書けば良いのかわからないので教えてください。
Sub 会計報告()
'
' 会計報告 Macro
'
'
Range("P6").Select Sheets("触らないでほしいシート").Select Range("E3").Select Application.CutCopyMode = False Selection.Consolidate Sources:= _ "'C:\Users\sensei\Desktop\[会計簿.xlsm]触らないでほしいシート'!R3C2:R67C3", Function _ :=xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=False Range("E4:F33").Select Selection.Copy Sheets("会計報告入力シート").Select ActiveSheet.Paste Application.CutCopyMode = False With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent2 .TintAndShade = 0.599993896298105 .PatternTintAndShade = 0 End With Selection.NumberFormatLocal = "#;-#;"""";@" End Sub
< 使用 Excel:Excel2019、使用 OS:Windows10 >
面倒なので、どうせマクロなのだし、マクロ操作前にUnProtectして、操作後にProtectするほうが、後から見た人には判りやすいと思いますよ。
(???) 2020/05/26(火) 16:01
(もこな2 ) 2020/05/26(火) 16:05
Sub 会計報告()
' ' 会計報告 Macro ' ' Worksheets("触らないでほしいシート").Unprotect Password:="●●" Range("P6").Select Sheets("触らないでほしいシート").Select Range("E3").Select Application.CutCopyMode = False Selection.Consolidate Sources:= _ "'C:\Users\sensei\Desktop\[会計簿.xlsm]触らないでほしいシート'!R3C2:R67C3", Function _ :=xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=False Range("E4:F33").Select Selection.Copy Sheets("会計報告入力シート").Select ActiveSheet.Paste Application.CutCopyMode = False With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent2 .TintAndShade = 0.599993896298105 .PatternTintAndShade = 0 End With Selection.NumberFormatLocal = "#;-#;"""";@" Worksheets("触らないでほしいシート").Protect Password:="●●", UserInterfaceOnly:=True End Sub
で合ってますか??
(ぶり) 2020/05/26(火) 16:35
ただ、この方法だと毎回Unprotectしているので、UserInterfaceOnlyは指定しなくて良いですよ。
UserInterfaceOnly=Trueにすると、以降は保護されたままでもマクロ編集できる、という意味ですから。
(ブックを開いた際に1回だけTrueにしておくと、以降はマクロはUnprotect不要、という使い方をします。ただ、これだと初回実行箇所と、マクロ編集する箇所で違うプロシジャになるので、後からコードを解析する人が、どこで保護を突破しているのか悩む、という事になりやすいです)
保護解除する必要のあるプロシジャがいっぱいある、というときは UserInterfaceOnly=True が効果的であり、数か所しかない程度ならば Unprotect/Protect が判りやすい、という感じです。
(???) 2020/05/26(火) 16:46
???さんではないですが、その順番だったら「UserInterfaceOnly:=True」いらないですよね。
'--------------------------- まくろすたーと シート保護解除 やりたい処理 シート保護 まくろおわり '--------------------------- まくろすたーと シート保護解除 シート保護「UserInterfaceOnly:=True」
やりたい処理
まくろおわり '--------------------------- パターンとしては↑のどちらかでよいと思います。
(もこな2 ) 2020/05/26(火) 16:47
???さん UserInterfaceOnlyをはずしてみたらうまくいきました!
ありがとうございます。
もこな2さん
日本語で書いてもらえてものすごくわかりやすかったです。
ど素人なので「これはこういう意味かな?」と探りながら作っています。
命令を書く位置について特になぞだったのでありがたかったです。
お二方ありがとうございました!!
(ぶり) 2020/05/26(火) 17:04
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.