2014-05-12 55 views
0

上次我在這裏問了解解決方案的工作:)。Excel VBA代碼在休息模式下工作正常,在運行時跳過

我的代碼在下面選擇工作表,根據它們設置變量,然後調用一系列函數對它們執行計算。我根據6張不同的紙張爲14種不同的情況做這件事。

當我在代碼中斷模式下測試它時,它可以正常工作,但是當我運行它時,它會跳過sheet_flag(「valve」)的case_flag(calcs_sheet)函數,情況2。導致它僅在運行時跳過部分代碼?

在此先感謝!

 WS_Count = ActiveWorkbook.Worksheets.Count 

     Set table_array = Sheets("flag_matrix").Range("a:bl") ''' for whole of current flag matrix 

     For i = 1 To WS_Count 

     If ActiveWorkbook.Worksheets(i).Name = "valve" Then ''''VALVE''''''''''' 
     'setting variables for looping through each worksheet/parameter 
        For case_no = 1 To 4 
        Select Case case_no 

          Case 1 'valve length 

          Set filter_range = Worksheets(i).Range("j:j,s:s") 
          Set calcs_sheet = Sheets("valve_length_calcs") 
          Set tables_sheet = Sheets("valve_length_tables") 

          col_ind = 57 

          Call filter(filter_range, calcs_sheet, tables_sheet) 
          Call area_flag(calcs_sheet) 
          Call temp_calcs(table_array, col_ind, calcs_sheet, tables_sheet) ''''<---------------needs work first 

          Case 2 

          Set filter_range = Worksheets(i).Range("j:j,u:u") 'valve diam 
          Set calcs_sheet = Sheets("valve_diam_calcs") 
          Set tables_sheet = Sheets("valve_diam_tables") 

          col_ind = 58 

          Call area_flag(calcs_sheet) 
          Call filter(filter_range, calcs_sheet, tables_sheet) 
          Call temp_calcs(table_array, col_ind, calcs_sheet, tables_sheet) 

          Case 3 

          Set filter_range = Worksheets(i).Range("j:j,y:y") 'valve_k 
          Set calcs_sheet = Sheets("valve_k_calcs") 
          Set tables_sheet = Sheets("valve_k_tables") 

          col_ind = 60 

          Call filter(filter_range, calcs_sheet, tables_sheet) 
          Call area_flag(calcs_sheet) 
          Call temp_calcs(table_array, col_ind, calcs_sheet, tables_sheet) 

          Case 4 

          Set filter_range = Worksheets(i).Range("j:j,aq:aq") 
          Set calcs_sheet = Sheets("valve_con_calcs") 
          Set tables_sheet = Sheets("valve_con_tables") 

          col_ind = 61 

          Call filter(filter_range, calcs_sheet, tables_sheet) 
          Call area_flag(calcs_sheet) 
          Call temp_calcs(table_array, col_ind, calcs_sheet, tables_sheet) 

        End Select 
       Next 



     ElseIf ActiveWorkbook.Worksheets(i).Name = "pipe" Then ''''PIPE'''''''''' 
      For case_no = 1 To 5 
       Select Case case_no........................ 

    '<><><><>><><><><><><><><><><><><><><><><>< 

Private Function area_flag(calcs_sheet As Worksheet) 

Dim z As Integer 
Dim c As Integer 
Dim filter_value As String 
Dim p As Integer 


calcs_sheet.Select 
EndRow = Application.CountA(Range("C:C")) 'determine length of 
z = 4 'starting column after the other calcs (will always be three columns) 

      For c = 2 To EndRow 'Loop through sheet1 and search for criteria 

If Cells(c, Columns("C:C").column).Value <> "" Then 'if cell isnt blank in c 
     filter_value = Cells(c, Columns("C:C").column).Value 'filter value is DMA value in c 
       calcs_sheet.Range("A:A").AutoFilter field:=1, Criteria1:=filter_value 'filters flags associated with DMA 'filter_Value' 
        Range("A:B").Copy 
      calcs_sheet.AutoFilterMode = False 'turns filter off 
     calcs_sheet.Activate 
    Cells(1, z).Select 
ActiveSheet.Paste ' pastes the three columns into calcs sheet without overwriting previous 

Call ClearClipboard 

     z = z + 3 ' moves z along three columns ready for the next group of calcs. 

End If 
      Next c 

End Function 

回答

0

其實這是一個簡單的星期五晚上/星期一早上的錯誤。

我曾經以錯誤的順序調用閥門,第二種情況的功能。第二種功能依賴於第一種功能的完成。

Case 2 

         Set filter_range = Worksheets(i).Range("j:j,u:u") 'valve diam 
         Set calcs_sheet = Sheets("valve_diam_calcs") 
         Set tables_sheet = Sheets("valve_diam_tables") 
相關問題