ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

EXCEL VBAコミュの【Q】共通に使うサブルーチンはどうしています?

  • mixiチェック
  • このエントリーをはてなブックマークに追加
書込みをしようとするシートの存在をチェックします。でも、こういうのって、マクロを作るたびに出てくることもありますし、1つのマクロでさえ、ちょっと複雑のになると、何箇所でも出てくると思います。

そこで、下のようなサブルーチンを作ってみましたが、こういうのって、それとも関数にしてしまうのでしょうか?それとも、classモジュールにするのがいいのでしょうか?
また、マクロを作るたびに、コピペすらしないようにするには、vbでdllを作ってそれを使うのがいいのでしょうか?

知らないもので、ちょっと的外れな質問をしているかも知れませんが、お手柔らかに。下のコードと言うよりも、共通に書くコードをどうします?が、趣旨ですから・・・。はい。

Public Sub SheetCheck(ByVal sheet As String, ByRef flag As Boolean)
  Dim ws As Worksheet
  For Each ws In Worksheets
    If ws.Name = sheet Then
      flag = True
    End If
  Next ws
End Sub

コメント(7)

どこに保存して、どう呼び出すかでしょうか?
自分で使うだけなら個人用マクロに保存すれば良いですね。
dllにしても設定しないと。

個人的な好みですが、サブルーチンではなく関数で返り値をbooleanにすると、呼び出し元で直接if文にできます。
ロジックについてですが、
flag = Trueに設定したら、ループを抜けた方がいいですよ。
「ブックに依存せず(ただし環境に依存する)、Excel から呼び出せる」なのか「同じコードを使い回したいのか」で大分変わってくるような?

私はブックを他人にポンっと放り投げた環境で動くことを前提にしているので、エクスポート→インポートってやって各ブックに埋め込んだ形でソースを使いまわすことが多いですね。
# 修正が入ると取り込んだブックのモジュールをアップデートしきれずに泣きを見ることも…(笑)

クラスを使うか否かは用途によりけりじゃないかなー。( ̄▽ ̄;)
僕の場合もこの手の判定関数はBooleanの戻り値を返す様にする事が多いです。
良く使う関数は汎用クラスみたいなの作ってその都度追加した関数をほり込んだりしています。
別に標準モジュールでも良いと思います。
でもやっぱり新規作成する時にはコピペになってしまいますね。

VBやC#使わないでもWSH(VbScript/JScript)でCOMライブラリ作れるんですよね実は。
ただ、ライブラリの中身がスクリプト言語で書かれてるって事で嫌がる人いてるかも知れません。
統合開発環境使わなくてもライブラリ作れるって事で何かの足しにでもなればと。

http://seoi.net/wsh/base_wsc.shtml
皆様、色々とアドバイスをありがとうございます。まとめレスで失礼します。

そうですね。目的とか、どうしたいかが、ちょっと足りなかったような気がします。(すみません!)当面は違うプロジェクト(と言う言い方でいいのかな)でも、同じコードを使いまわしたい。そのExcelブックは、他の人にも使ってもらいます。(データと独立性があるのは言うまでもありません。)

1人で使うなら、アドインでもいいのでしょうね。(実際、アドインも作って、自分だけのユーザー関数として使っているのもあります。)

そうすると、やはり、共通に使うのは、モジュールにまとめておいて、そこからコピペしたり、とかですかねえ。

>9 [羽]e-bowさん。
 おおっ!WSHでそんなことも出来るんですね!メーカーに勤めていますので、カレンダーの計算なんかはライブラリー化して、サーバーにおいておけば、EXCELのマクロからだけでなく、ACCESSからも、VBからも参照出来そうですね!(まあ、WSHで作らなくともいいのだろうけれども。)

>下のコードと言うよりも、共通に書くコードをどうします?が、趣旨ですから・・・。はい。
とは、書いたものの、やはり、もっといい方法や、別の方法を教えたくなるのは、人情なんでしょうねえ。もっともですし、それはそれでタメになります。ありがとうございます。

でも、下手すると、「てにをは」を直したり、漢字の間違えまで、”それだけ”を投稿する方がいて、それは、ご勘弁かな。、

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

EXCEL VBA 更新情報

EXCEL VBAのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。