現在、エクセル2000を使用しています。

 セルの”*”という文字をダブルクリックすると、ユーザーフォームが開き、テキストボックス内に文字を入力したらOK(コマンドボタン)を押すとセルにその文字が入ります。
 コマンドボタンを実行すると、Call ○○○で標準モジュールのマクロを呼び出すようになっています。
 このCallが10行くらい組んであり、それぞれの標準モジュールを呼び出しているのですが、ファイルが重たくなってしまいました。

 この標準モジュールをアドイン化して使用できるのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (4件)

No.3訂正です。


アドインのxlaの標準モジュールには
public sub hoge(ByRef target as range)
If Intersect(target, Range("A4:A5000")).Value = "*" Then _
UserForm1.Show
end if
end sub
として、
アドインを組み込むXLSのシートのSheet Objectsの中に
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
dim return as Boolean
return = Application.Run ("hoge",Target)
End Sub
とすればよい。
    • good
    • 0
この回答へのお礼

ありがとうございます!!
うまくできました。何度も回答していただきありがとうございました。

お礼日時:2009/05/27 15:22

VBのコードが、標準モジュールの方ではなく、Sheet Objectsの中に


あったのですね。
アドインのxlaの標準モジュールには
public sub hoge(ByRef target as range)
If Intersect(Target, Range("A4:A5000")).Value = "*" Then _
UserForm1.Show
end if
end sub
として、
アドインを組み込むXLSのシートのSheet Objectsの中に
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
dim return as Boolean
Application.Run ("hoge",Target)
End Sub
とすればよい。
    • good
    • 0

アドイン化といっても、特に特別な処理はいらないはずです。


使いたいモジュールやフォームを定義したエクセルファイルを保存するとき形式を.xlaにするだけのはずです。
ここにも書いてありました↓
http://www.atmarkit.co.jp/fwin2k/win2ktips/471fu …

この回答への補足

回答ありがとうございます。
上記のURL大変参考になりました。

しかし、元のエクセルファイルのユーザーフォームを削除し、アドイン化した方のユーザーフォームを使いたいのですが、例えば元のエクセルファイルで

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("A4:A5000")).Value = "*" Then UserForm1.Show
End Sub

というマクロで*をダブルクリックするとUserForm1.Showの所でエラーメッセージでオブジェクトが必要です。というエラーが発生するのですが、どうしたら良いでしょうか。

補足日時:2009/05/27 11:02
    • good
    • 0

アドイン化しても、重さ(ファイルサイズ?)はさして変わらないと思います。

最も使う時だけアドイン有効にして、セーブする前に無効にすれば
小さくなるでしょうが

この回答への補足

回答ありがとうございます。
もちろんそうするつもりでアドイン化をしたいと思っています。

あと、ユーザーフォームもアドイン化して使えるのでしょうか?

補足日時:2009/05/26 17:01
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング