VBA初心者です。 1日1シートの日計表、最終シートに集計表があるブックで、 ボタンを押すと日計表のデータが集計表に転記されるマクロを作っています。
VBA初心者です。 1日1シートの日計表、最終シートに集計表があるブックで、 ボタンを押すと日計表のデータが集計表に転記されるマクロを作っています。 ボタンを押すとまずvbyesnoで転記を始めるか確認し、Noならそのまま終了、Yesならマクロを実行します。 マクロ実行後はボタンを非活性化し、データが重複して転記されることを防ぎたいのですが、ここがうまくいきません。 ボタンは ActiveXコントローラーで作成したもので、オブジェクト名もCommandButton1で間違いありませんが、実行するマクロにCommandButton1.Enable=Falseと書くと‘変数が定義されていません’とエラーが出ます。 数日調べても解決法が見つからず、身近に聞ける人もおらず、困っております。 どなたかよい方法をご教示いただけないでしょうか?
Visual Basic・61閲覧・50
ベストアンサー
仮に、実行後にボタンを非活性化するコードが書けたとしても、ブックを開き直した時も非活性を維持する必要がありいささか面倒です。 そのため、①集計データ側にその日のデータが入力されている場合は、実行しない、あるいは、警告を出して実行しない。 ②①の判定が難しければ、ボタンを押す度に真っ白な状態から全日の集計転記をやり直す。 (実行時間は多少かかるようになるかもしれませんが、シート間の作りによってはこちらの方が簡単な場合が多いですし、過去の1日のシートを修正したときに、修正を反映できるメリットがあります。誤ってデータを書き換えてしまう懸念がある場合は、ボタンを押す度にバックアップやプリントアウトする仕組みを取り入れてもいいでしょう。) などのマクロを検討されても良いかと思います。
1人がナイス!しています