• 締切済み

Excelのバージョンの違いで VBA の実行エラー

エクセル2003で、 VBAを使い、行を非表示にする ドグルボタンを作成し、 シート保護をし、行の書式だけ編集可能にし保護しました。 Range("63:67").EntireRow.Hidden = True Selection.EntireRow.Hidden = False というのを使用しました。  つまり、ドグルボタンで、列の表示と非表示をできるように しました。 しかしながら、あるユーザから、 ドグルボタンを押すと"実行エラー 1004"が表示される。 Range クラスのHidden プロバティを設定できません。 と表示されると報告がありました。 まるで、シート保護時に、列の書式にチェックをしなかった ような症状です。 よく聞いてみると そのユーザはExcel2000のユーザでした。 Excelのバージョンの違いによって生じたエラーなのでしょうか? わかる人教えてください。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >VBAを使い、行を非表示にする ドグル(トグル)ボタンを作成し、 >シート保護をし、行の書式だけ編集可能にし保護しました。 行の書式だけ編集可能にする、という、その設計自体を、もう一度考え直したほうがよいかもしれませんね。時々、下位バージョンで逆の方--書式を保護したい--という方はいらっしゃいます。 値は保護しても、書式は保護しないということでしょうか? せっかく、マクロでするなら、その辺り自体をイベント・ドリブン型にしてしまい、書式は、値によって反応させてもよいと思います。なお、プロテクトは、UserInterfaceonly:=True  にしても良いかと思います。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

Excel2000では、行の書式だけ編集可能にして保護するという機能はありません。そのため実行時エラーになります。 2000も対象にするなら、行の操作時にマクロで一旦保護を解除して、また保護をかけるようにする必要がありますね。

hori_hb
質問者

補足

ありがとうございます。 問題が解決しました。 早い回答感謝します。

関連するQ&A