#4です。
不具合の件ですが、Excel97ではシートに貼り付けたActiveXコマンドボタンを押した瞬間にアクティブセルを見失ってしまうんです。
Private Sub CommandButton1_Click()
Dim r As Long
r = Range("A1").CurrentRegion.Rows.Count
End Sub
これ、エラーになっちゃいます。
いやーこれにははまりました。
ボタンを押した瞬間にフォーカスがボタンに移ってしまい、アクティブセルがない状態、すなわち「どのセルも選択されていない状態」になってしまう。
なので、
Private Sub CommandButton1_Click()
Dim r As Long
ActiveCell.Activate
r = Range("A1").CurrentRegion.Rows.Count
End Sub
なんていうヘンなコードを書く必要があります。
Excel2000からは解消された不具合みたいですけどね。
まぁ最近は目立った不具合にぶち当たっていませんが、Public Subプロシージャを実行するだけなら、それこそオートシェイプでも良いわけで、フォームのコマンドボタンは使いますが、ActiveXコマンドボタンは使っていません。
ツールバーの件。自動的に開業された部分は直してください。ThisWorkbookのコードモジュールに記述します。
Private Sub Workbook_Open()
Dim myCmdBar As CommandBar
Dim myCtrl As CommandBarButton
' ツールバーを作成
Set myCmdBar = Application.CommandBars.Add(Name:="Hoge", Temporary:=True)
With myCmdBar
.Visible = True
.Position = msoBarTop
End With
' 読み込みボタン
Set myCtrl = myCmdBar.Controls.Add(Type:=msoControlButton)
With myCtrl
.Caption = "読み込み"
.Style = msoButtonCaption
.OnAction = "ReadDataFile"
End With
' 仕訳ボタン
Set myCtrl = myCmdBar.Controls.Add(Type:=msoControlButton)
With myCtrl
.Caption = "データ仕訳"
.Style = msoButtonCaption
.OnAction = "JournalizeData"
End With
Set myCtrl = Nothing
Set myCmdBar = Nothing
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' マクロブック終了時にツールバーを削除する
On Error Resume Next
Application.CommandBars("Hoge").Delete
End Sub
Private Sub Workbook_Activate()
' マクロブックがアクティブならツールバーは有効
On Error Resume Next
Application.CommandBars("Hoge").Enabled = True
End Sub
Private Sub Workbook_Deactivate()
' 他のブックがアクティブならツールバーは無効
On Error Resume Next
Application.CommandBars("Hoge").Enabled = False
End Sub
このブックが開かれると同時に独自のツールバーを作成し、コマンドボタンを2つ作成します。
ボタンのOnActionプロパティにはクリック時に実行させたいPublic Subプロシージャの名前を記入します。
Excel上で手作業でツールバーを作成するとそのツールバーは次回Excel起動時にも残っていますが、 Temporary:=True とすることでツールバーがExcelに記録されず、Excel終了時に自動的に削除されます。
まぁこの例ではブック終了時に明示的にツールバーを削除していますが、これは同時に別の目的で別のブックを開いていた場合の対処です。マクロのブックを閉じてもツールバーだけ残ってしまうのを防ぐためです。
それと、マクロのブックがアクティブになった時と他のブックがアクティブになった時にツールバーの有効・無効をコントロールしています。
お礼
うぉぉぉぉぉぉぉーーーーーっ!!! 私は今、言葉では言い尽くせないほど感激しています!! たいへんすばらしいぃ!!! どーーもありがとうございますっ!!! うぉぉぉぉぉぉぉーーーーーっ!!! 感動です!!感激です!!感謝です!!