2016-12-21 5 views
-1

以下は私のマクロコードです。そのファイルの名前をエクスポートするダンプが毎回変更されるたびに1つの問題が発生します。ブック名の変更の問題

終了番号が常に変更されます:"SECONDARY MIS MODULE (11)""SECONDARY MIS MODULE (12)"を、など

Sub MySub 
    a = 6 
    b = 2 

    Do While Workbooks("segment.xlsm").Worksheets("Sheet4").Cells(b, 1) <> "" 
     Z = WorksheetFunction.SumIf(Workbooks("SECONDARY MIS MODULE (11).xlsx").Worksheets("SECONDARY MIS MODULE (11)").Range("B5:K5"), _ 
      "FRANCHISEE DEVELOPMENT", Workbooks("SECONDARY MIS MODULE (11).xlsx").Worksheets("SECONDARY MIS MODULE (11)").Range(Cells(a, 2), Cells(a, 11))) 

     x = Application.SumIf(Workbooks("SECONDARY MIS MODULE (11).xlsx").Worksheets("SECONDARY MIS MODULE (11)").Range("B5:K5"), _ 
      "PRIVATE WEALTH GROUP", Workbooks("SECONDARY MIS MODULE (11).xlsx").Worksheets("SECONDARY MIS MODULE (11)").Range(Cells(a, 2), Cells(a, 11))) 

     Workbooks("segment.xlsm").Worksheets("Sheet4").Cells(b, 13).Value = x + Z 
     a = a + 1 
     b = b + 1 
    Loop 
End Sub 
+1

を次のように?エラーは何ですか?あなたは何を達成しようとしていますか? –

+0

敬意をいただいた先生、実際には上記のコードの上に私は毎日のMIS以上のために開発しています。私が直面している課題は、すなわち、 (11)、(12)のように、システムがダンプを生成するたびに生成されます。コードが最後のnoを無視するのに助けてくれる方法はありますか?私は "For i = 11 to 15"ステートメントで毎回病気が増えていなくても、次の5または6ごとにコードを編集しなければならない場合でも、最初の行、すなわちSECONDARY MIS MODULE only.aを提案します。日々。 – sagar

答えて

0

私が正しくあなたを理解する場合は、複数のワークブック/ワークシートにこのコードを適用することができるようにしたいです。

Sub MySub(wbName As String, wsName As String) 
    a = 6 
    b = 2 

    Do While ' ...... 
     Z = WorksheetFunction.SumIf(Workbooks(wbName).Worksheets(wsName).Range("B5:K5"), _ 
      "FRANCHISEE DEVELOPMENT", Workbooks(wbName).Worksheets(wsName).Range(Cells(a, 2), Cells(a, 11))) 
     ' 
     ' 
     ' 
    Loop 
End Sub 

使用法:

For i = 11 To 15 
    MySub "SECONDARY MIS MODULE (" & i & ").xlsx", "SECONDARY MIS MODULE (" & i & ").xlsx" 
Next 

更新1:あなたは、単にあなたのメソッドのパラメータとしてワークブック名​​および/またはワークシート名を追加することができます

もしあなたドンワークブック名​​の数値部分を知っていない場合は、実際のワークブック名​​、何かを返すヘルパー関数を書くことができます

Function GetWorkbookNameByPartial(pattern As String) As String 
    For Each wb In Workbooks 
     If wb.Name Like pattern Then 
      GetWorkbookNameByPartial = wb.Name 
      Exit Function 
     End If 
    Next 
End Function 

使用法:

Dim wbName As String 
wbName = GetWorkbookNameByPartial("SECONDARY MIS MODULE (*).xlsx") 
If Len(wbName) > 0 Then 
    MySub wbName, wbName ' Only if worksheet name matches workbook name. 
         ' Otherwise, you will need to change worksheet name. 
End If 

希望に役立ちます:)私は理解していないことを確認

+0

尊敬された先生実際には上記のコードの上に私はシステムがDumpを受け取ったときに毎回生成される最後のnoに関して私が直面している変更を日々のMISに対して開発しています。 – sagar

+0

@サガール、私は私の答えを編集しました。それがあなたを助けることを願っています。別の言葉では、あなたの質問を読んだほとんどの人があなたのことを理解するのに苦労したことに気づく必要があります。次回は、質問をより明快にするように努力してください。そうすれば、下降音を得るのではなく、速やかに助けを得ることができます。幸運:) –

+0

おかげであなたの助けになりました。次回はあなたのガイドラインも保証します。 – sagar

関連する問題