Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12738 / 13646 ツリー ←次へ | 前へ→

【8907】オリジナルツールバーへのマクロの登録 猫おじさん 03/11/7(金) 21:48 質問
【8910】Re:オリジナルツールバーへのマクロの登録 ichinose 03/11/7(金) 22:25 回答
【8928】Re:オリジナルツールバーへのマクロの登録 猫おじさん 03/11/10(月) 11:50 お礼

【8907】オリジナルツールバーへのマクロの登録
質問  猫おじさん  - 03/11/7(金) 21:48 -

引用なし
パスワード
    過去ログ等も調べたのですが、オリジナルツールバーへのマクロの登録方法が分かりません。
 Excel 2000です。

「確認.xls」bookの標準モジュールに「バッチ処理」というモジュールがあり、
「Sub aバッチ処理マクロ()」
「Sub 検算()」
「Sub 色塗()」など5つのマクロが書き込まれています。

 一方、同じ「確認.xls」bookの「sheet2(結果一覧)」には、
「Private Sub Worksheet_BeforeDoubleClick」があり
セルに書き込まれているパスとファイルネームを参照して
ダブルクリックしたときに、セルに書かれているファイルを開きます。

 コードは次のようなものです
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

記入内容 = ActiveCell.Value
Workbooks.Open Filename:=記入内容
   
'コマンドボタンの作成

'既に「検算ボタン」があるとエラーするので削除しておく
'逆に「検算ボタン」が無いのに削除使用とするとエラーするので、オンエラー処理しておく
On Error Resume Next
  CommandBars("検算ボタン").Delete
On Error GoTo 0

'検算ボタンの設定
 Set newBar = CommandBars.Add(Name:="検算ボタン", Position:=msoBarFloating, Temporary:=True)

'検算ボタンの表示
 newBar.Visible = True
 
'目玉アイコンに変える
 Set con = newBar.Controls.Add(Type:=msoControlButton, ID:=23)
  con.FaceId = 2174 '2174は目玉です

 ここまでは順調で、目玉のコマンドボタンができあがります。

 その後、コマンドボタンをクリックしたときに、
標準モジュールにある「Sub 検算()」マクロを実行したいので   
   
newBar.OnAction = ThisWorkbook.Name & "!.検算"

newBar.OnAction = 確認.xls & ".検算"
等いろいろ試していますが、うまくいきません。

 正しい、書き方をご教示ねがえれば幸いです。 

 なお、「Sub 検算()」は、「Sub aバッチ処理マクロ()」からも
Private Sub Worksheet_BeforeDoubleClickもcallしています。

【8910】Re:オリジナルツールバーへのマクロの登録
回答  ichinose  - 03/11/7(金) 22:25 -

引用なし
パスワード
   ▼猫おじさん さん:
こんばんは。

> 過去ログ等も調べたのですが、オリジナルツールバーへのマクロの登録方法が分かりません。
> Excel 2000です。
>
>「確認.xls」bookの標準モジュールに「バッチ処理」というモジュールがあり、
>「Sub aバッチ処理マクロ()」
>「Sub 検算()」
>「Sub 色塗()」など5つのマクロが書き込まれています。
>
> 一方、同じ「確認.xls」bookの「sheet2(結果一覧)」には、
>「Private Sub Worksheet_BeforeDoubleClick」があり
>セルに書き込まれているパスとファイルネームを参照して
>ダブルクリックしたときに、セルに書かれているファイルを開きます。
>
> コードは次のようなものです
>Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
>
>記入内容 = ActiveCell.Value
>Workbooks.Open Filename:=記入内容
>   
>'コマンドボタンの作成
>
>'既に「検算ボタン」があるとエラーするので削除しておく
>'逆に「検算ボタン」が無いのに削除使用とするとエラーするので、オンエラー処理しておく
> On Error Resume Next
>  CommandBars("検算ボタン").Delete
> On Error GoTo 0
>
>'検算ボタンの設定
> Set newBar = CommandBars.Add(Name:="検算ボタン", Position:=msoBarFloating, Temporary:=True)
>
>'検算ボタンの表示
> newBar.Visible = True
> 
>'目玉アイコンに変える
> Set con = newBar.Controls.Add(Type:=msoControlButton, ID:=23)
>  con.FaceId = 2174 '2174は目玉です
'   ↑ ここで、コマンドボタンをconにセットしていますよね?
>
> ここまでは順調で、目玉のコマンドボタンができあがります。
>
> その後、コマンドボタンをクリックしたときに、
>標準モジュールにある「Sub 検算()」マクロを実行したいので   
>   
> newBar.OnAction = ThisWorkbook.Name & "!.検算"
' よって、マクロの登録は、変数newBarではなく、conに対して行って下さい
' con.OnAction = ThisWorkbook.Name & "!.検算"

>や
> newBar.OnAction = 確認.xls & ".検算"
>等いろいろ試していますが、うまくいきません。
>
> 正しい、書き方をご教示ねがえれば幸いです。 
>
> なお、「Sub 検算()」は、「Sub aバッチ処理マクロ()」からも
>Private Sub Worksheet_BeforeDoubleClickもcallしています。

試してみて下さい。

【8928】Re:オリジナルツールバーへのマクロの登録
お礼  猫おじさん  - 03/11/10(月) 11:50 -

引用なし
パスワード
   ichinose さん ありがとうございました。

>>'目玉アイコンに変える
>> Set con = newBar.Controls.Add(Type:=msoControlButton, ID:=23)
>>  con.FaceId = 2174 '2174は目玉です
>'   ↑ ここで、コマンドボタンをconにセットしていますよね?

>> その後、コマンドボタンをクリックしたときに、
>>標準モジュールにある「Sub 検算()」マクロを実行したいので   
>>   
>> newBar.OnAction = ThisWorkbook.Name & "!.検算"
>' よって、マクロの登録は、変数newBarではなく、conに対して行って下さい
>' con.OnAction = ThisWorkbook.Name & "!.検算"
>
>>や
>> newBar.OnAction = 確認.xls & ".検算"
>>等いろいろ試していますが、うまくいきません。
>>
>> 正しい、書き方をご教示ねがえれば幸いです。 
>>
>> なお、「Sub 検算()」は、「Sub aバッチ処理マクロ()」からも
>>Private Sub Worksheet_BeforeDoubleClickもcallしています。
>

con.OnAction = ThisWorkbook.Name & "!検算"
でうまく行きました。
 「検算」の前の「.」も余分でした。

12738 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free