電子書籍の厳選無料作品が豊富!

標題の件、3つのサブシーじゃにて同じ宣言等を
3回、記述しています。当該記述を省略はできないでしょうか?
宣言等は同じ内容の宣言です。指定しているファイル等すべて同じです

構造は
Sub オートフィルター()で 2つのサブシーじゃをCallにて
呼び出しています。当該、2つのあサブシーじゃにて毎回
同じ宣言をしています

アドバイスや省略できる出来ないも含めてご存じの方、教えて下さい


Sub オートフィルター()
●●●同じ宣言等●●●
Call シートを別のブックにコピーする
Call 降順

End Sub

sub シートを別のブックにコピーする()
●●●同じ宣言等●●●
End Sub

sub 降順()
●●●同じ宣言等●●●
End Sub



【全部で3回、同じ記述】
Dim filepath2 As String

Dim wb2 As Workbook

Dim ws2 As Worksheet

Dim a As Date

Dim z As Date

filepath2 = ThisWorkbook.Worksheets("転記元シート").Cells(14, 1)

Set ws22 = wb2.Worksheets("過去分依頼データ")


【コード】
Sub オートフィルター()


Dim filepath2 As String

Dim wb2 As Workbook

Dim ws2 As Worksheet

Dim a As Date

Dim z As Date

filepath2 = ThisWorkbook.Worksheets("転記元シート").Cells(141, 1)

Set wb2 = Workbooks.Open(filepath2)

Set ws2 = wb2.Worksheets("Sheet1")


Call シートを別のブックにコピーする


Set ws22 = wb2.Worksheets("過去分依頼データ")


Call 降順


●●●本文省略●●●


End Sub



Sub シートを別のブックにコピーする()


Dim filepath2 As String

Dim wb2 As Workbook

Dim ws2 As Worksheet

filepath2 = ThisWorkbook.Worksheets("転記元シート").Cells(14, 1)

Set wb2 = Workbooks.Open(filepath2)

●●●本文省略●●●


End Sub


Sub 降順()


Dim filepath2 As String

Dim wb2 As Workbook

Dim ws2 As Worksheet

filepath2 = ThisWorkbook.Worksheets("転記元シート").Cells(14, 1)

Set wb2 = Workbooks.Open(filepath2)

Set ws22 = wb2.Worksheets("依頼データ")


●●●本文省略●●●


End Sub

A 回答 (2件)

変数が3回同じ記述ということですが、その変数に設定している内容が異なります。


①filepath2 = ThisWorkbook.Worksheets("転記元シート").Cells(141, 1)
②filepath2 = ThisWorkbook.Worksheets("転記元シート").Cells(14, 1)

①はSub オートフィルター()で使用
②はSub シートを別のブックにコピーする()とSub 降順()で使用
----------------------------
③Set ws22 = wb2.Worksheets("過去分依頼データ")
④Set ws22 = wb2.Worksheets("依頼データ")

③はSub オートフィルター()で使用
④はSub 降順()で使用

本文が省略されているので、正確なことはわかりませんが、
個々のプロシージャ毎に設定されている内容が異なるので、ひとつにまとめないほうが良いと考えます。
    • good
    • 0

こんにちは



どのような使い方を想定しているのかわかりませんけれど、ご提示のコードが一連の処理で、そのような呼び出し関係でしか使わないのであれば・・
毎回ブックを開く必要はないので、サブ側にシート変数等を引数で渡せば済むのではないでしょうか。
あるいは、プロシージャを分ける必要もないので、まとめてしまうという方法も考えられます。


それぞれを単独で利用する可能性があるという場合は、共通部分をまとめて、
 『ブック(開いていない場合はを開いて)のシートを返す関数』
にでもしておけば、その関数を呼ぶだけですむようになると思います。
ただ、ご質問には関係ありませんけれど、セルの値をそのまま信じて、ブックオープンしてよいのかどうかは疑問に感じますけれど・・・


※ 全体像がわからないため、想像での回答になっていますので、何が適切なのかは当方にはわかりませんけれど。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A