今回説明するのは、セルに登録されている数式(計算式)を隠す事が出来るFormulaHiddenプロパティの利用方法を説明いたします。普段EXCELに表を作成しますと、計算式・関数などを入力しますが、その数式内容を見せたく無い場合や関数内容を隠したい時に使用するのが、FormulaHiddenプロパティを利用します。それでは、順番にサンプルプログラムを交えて説明いたします。
●【EXCEL VBA ワークシートの保護・ワークシートの保護解除(Protect : Unprotect:ProtectContents)、下記を参照して下さい】
●【FormulaHiddenプロパティ (Excel)、下記を参照して下さい】(Microsoft社 様)】
https://docs.microsoft.com/ja-jp/office/vba/api/excel.range.formulahidden
● FormulaHiddenプロパティを利用するには、下記の通りに設定を行います。
・ Rangeオブジェクト.FormulaHidden = Boolean(True/False)
・ Range(”A1”).FormulaHidden = True ・・・指定セルを非表示
・ Range(”A1”).FormulaHidden = False ・・・指定セルを表示
※ EXCELでは、ここにチェックを付けて、シートを保護することで、数式(計算式)が表示されません。
【使用例】※セルB5~D5に登録されている数式を隠します。
【プログラム例】
'
'
'
Sub FormulaHidden01() '数式を隠す(非表示)
Range("B5:D5").FormulaHidden = True '数式を非表示にする。
ActiveSheet.Protect 'アクティブシートを保護します。
End Sub
'
'
'
Sub FormulaHidden02() '数式を表示
ActiveSheet.Unprotect 'アクティブシートの保護を解除します。
Range("B5:D5").FormulaHidden = False '数式の表示
End Sub
'
【注意事項】
FormulaHiddenプロパティを利用する場合は、シートを保護(Protectメゾット)を行う必要があります。シートが保護されていないと、【.FormulaHidden = True(非表示) 】の設定を行っても数式が表示されます。
【実行前~実行後】
下記のサンプルプログラムは、アクティブシートに作成している表の計算式(数式)部分を隠し、数値部分は入力変更可能として、それ以外の部分については、変更出来ないよう保護をかけるサンプルプログラムです。計算式(数式)部分や、数値部分などは、自動的に判断して隠したり保護をかけますので、同じシート内に表を複数作成しても同様に設定します。
【プログラムの流れ】
① アクティブシートの保護を解除します。(シートの保護を解除しないと変更できません)
② アクティブシートの全てのセルに保護ロックのチェックを付けます。
③ アクティブシートで使用しているセルに対して順番に繰り返します。(作成している表が対象・複数の表に対しても可能)
④ アクティブシートで使用しているセル内で数式かつ文字列以外は、セルの保護ロックを外します。(数値部分は、入力変更を可能とするため)
⑤ 使用している表の部分内に数式が入力されている場所は、数式を隠します。
⑥ アクティブシートの保護をします。
下記のサンプルプログラムは、サンプルプログラム①の応用になります。サンプルプログラム①同様にワークシート上に作成している表の計算式(数式)部分を隠し、数値部分は入力変更可能として、それ以外の部分については、変更出来ないよう保護をかけるサンプルプログラムですが、今回は、ブックに登録されている全てのシートも同様の処理を行います。
【プログラムの流れ】
① 全てのワークシートを繰り返します。(ブック全体)
② 現在のワークシートの保護を解除します。(全てのワークシートに対して順番に行います)
③ 現在のワークシートにの全てのセルに保護ロックのチェックを付けます。
④ 現在のワークシートで使用しているセルに対して順番に繰り返します。(作成している表が対象・複数の表に対しても可能)
⑤ 現在のワークシートで使用しているセル内で数式かつ文字列以外は、セルの保護ロックを外します。(数値部分は、入力変更を可能とするため)
⑥ 使用している表の部分内に数式が入力されている場所は、数式を隠します。
⑦ 現在のワークシートの保護をします。
★【サンプルプログラム】
下記のリンク先よりサンプルプログラムをダウンロードする事ができます。
● FormulaHidden02(サンプルプログラム)