我是 VBA 的初學者,我想請更有經驗的人來簡化我的 VBA 代碼。
代碼的作業非常簡單。宏遍歷源 .xlsx 檔案的下鉆串列,每次回圈設定下鉆參考時重繪 表作為 PowerQuery 結果(表“CZDataSource”),并在同一作業簿的每三張表中執行相同的重復復制/粘貼步驟(表格“預測 - 月”、“預測 - 月 1”、“預測 - 月 2”)。
Sub SpitValues()
Dim dvCell As Range
Dim inputRange As Range
Dim c As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
'Drop-down list source
Set dvCell = Worksheets("CZDataSource").Range("C3")
Set inputRange = Evaluate(dvCell.Validation.Formula1)
For Each c In inputRange
dvCell = c.Value
If (Right(Range("C2"), 3) = "1st") And Range("C3") = "RIG Forecast_2021_act.xlsx" Then
Sheets("CZDataSource").ListObjects("RIG_Forecast_output").QueryTable.Refresh BackgroundQuery:=False
'CZ data input/output
Sheets("CZDataSource").Range("C7:C12").Copy
Sheets("Forecast - Month").Range("AZ34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("AZ34:AZ39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("D7:D12").Copy
Sheets("Forecast - Month").Range("BA34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BA34:BA39").NumberFormat = "#,##0,"
Sheets("Forecast - Month").Range("BB34:BB39").Value = "0"
Sheets("CZDataSource").Range("F7:F12").Copy
Sheets("Forecast - Month").Range("BI34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BI34:BI39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("G7:G12").Copy
Sheets("Forecast - Month").Range("BJ34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BJ34:BJ39").NumberFormat = "#,##0,"
Sheets("Forecast - Month").Range("BK34:BK39").Value = "0"
Sheets("CZDataSource").Range("E7:E12").Copy
Sheets("Forecast - Month").Range("BO34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BO34:BO39").NumberFormat = "#,##0,"
Sheets("Forecast - Month").Range("BP34:BP39").Value = "0"
Sheets("CZDataSource").Range("H7:H12").Copy
Sheets("Forecast - Month").Range("BS34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BS34:BS39").NumberFormat = "#,##0,"
Sheets("Forecast - Month").Range("BT34:BT39").Value = "0"
'SK data input/output
Sheets("CZDataSource").Range("C13:C18").Copy
Sheets("Forecast - Month").Range("AZ55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("AZ55:AZ60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("D13:D18").Copy
Sheets("Forecast - Month").Range("BA55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BA55:BA60").NumberFormat = "#,##0,"
Sheets("Forecast - Month").Range("BB55:BB60").Value = "0"
Sheets("CZDataSource").Range("F13:F18").Copy
Sheets("Forecast - Month").Range("BI55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BI55:BI60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("G13:G18").Copy
Sheets("Forecast - Month").Range("BJ55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BJ55:BJ60").NumberFormat = "#,##0,"
Sheets("Forecast - Month").Range("BK55:BK60").Value = "0"
Sheets("CZDataSource").Range("E13:E18").Copy
Sheets("Forecast - Month").Range("BO55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BO55:BO60").NumberFormat = "#,##0,"
Sheets("Forecast - Month").Range("BP55:BP60").Value = "0"
Sheets("CZDataSource").Range("H13:H18").Copy
Sheets("Forecast - Month").Range("BS55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BS55:BS60").NumberFormat = "#,##0,"
Sheets("Forecast - Month").Range("BT55:BT60").Value = "0"
ElseIf (Right(Range("C2"), 3) = "1st") And Range("C3") = "RIG Forecast_2021_m 1.xlsx" Then
Sheets("CZDataSource").ListObjects("RIG_Forecast_output").QueryTable.Refresh BackgroundQuery:=False
'CZ data input/output
Sheets("CZDataSource").Range("C7:C12").Copy
Sheets("Forecast - Month 1").Range("AZ34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("AZ34:AZ39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("D7:D12").Copy
Sheets("Forecast - Month 1").Range("BA34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BA34:BA39").NumberFormat = "#,##0,"
Sheets("Forecast - Month 1").Range("BB34:BB39").Value = "0"
Sheets("CZDataSource").Range("F7:F12").Copy
Sheets("Forecast - Month 1").Range("BI34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BI34:BI39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("G7:G12").Copy
Sheets("Forecast - Month 1").Range("BJ34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BJ34:BJ39").NumberFormat = "#,##0,"
Sheets("Forecast - Month 1").Range("BK34:BK39").Value = "0"
Sheets("CZDataSource").Range("E7:E12").Copy
Sheets("Forecast - Month 1").Range("BO34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BO34:BO39").NumberFormat = "#,##0,"
Sheets("Forecast - Month 1").Range("BP34:BP39").Value = "0"
Sheets("CZDataSource").Range("H7:H12").Copy
Sheets("Forecast - Month 1").Range("BS34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BS34:BS39").NumberFormat = "#,##0,"
Sheets("Forecast - Month 1").Range("BT34:BT39").Value = "0"
'SK data input/output
Sheets("CZDataSource").Range("C13:C18").Copy
Sheets("Forecast - Month 1").Range("AZ55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("AZ55:AZ60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("D13:D18").Copy
Sheets("Forecast - Month 1").Range("BA55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BA55:BA60").NumberFormat = "#,##0,"
Sheets("Forecast - Month 1").Range("BB55:BB60").Value = "0"
Sheets("CZDataSource").Range("F13:F18").Copy
Sheets("Forecast - Month 1").Range("BI55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BI55:BI60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("G13:G18").Copy
Sheets("Forecast - Month 1").Range("BJ55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BJ55:BJ60").NumberFormat = "#,##0,"
Sheets("Forecast - Month 1").Range("BK55:BK60").Value = "0"
Sheets("CZDataSource").Range("E13:E18").Copy
Sheets("Forecast - Month 1").Range("BO55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BO55:BO60").NumberFormat = "#,##0,"
Sheets("Forecast - Month 1").Range("BP55:BP60").Value = "0"
Sheets("CZDataSource").Range("H13:H18").Copy
Sheets("Forecast - Month 1").Range("BS55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BS55:BS60").NumberFormat = "#,##0,"
Sheets("Forecast - Month 1").Range("BT55:BT60").Value = "0"
ElseIf (Right(Range("C2"), 3) = "1st") And Range("C3") = "RIG Forecast_2021_m 2.xlsx" Then
Sheets("CZDataSource").ListObjects("RIG_Forecast_output").QueryTable.Refresh BackgroundQuery:=False
'CZ data input/output
Sheets("CZDataSource").Range("C7:C12").Copy
Sheets("Forecast - Month 2").Range("AZ34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("AZ34:AZ39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("D7:D12").Copy
Sheets("Forecast - Month 2").Range("BA34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BA34:BA39").NumberFormat = "#,##0,"
Sheets("Forecast - Month 2").Range("BB34:BB39").Value = "0"
Sheets("CZDataSource").Range("F7:F12").Copy
Sheets("Forecast - Month 2").Range("BI34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BI34:BI39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("G7:G12").Copy
Sheets("Forecast - Month 2").Range("BJ34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BJ34:BJ39").NumberFormat = "#,##0,"
Sheets("Forecast - Month 2").Range("BK34:BK39").Value = "0"
Sheets("CZDataSource").Range("E7:E12").Copy
Sheets("Forecast - Month 2").Range("BO34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BO34:BO39").NumberFormat = "#,##0,"
Sheets("Forecast - Month 2").Range("BP34:BP39").Value = "0"
Sheets("CZDataSource").Range("H7:H12").Copy
Sheets("Forecast - Month 2").Range("BS34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BS34:BS39").NumberFormat = "#,##0,"
Sheets("Forecast - Month 2").Range("BT34:BT39").Value = "0"
'SK data input/output
Sheets("CZDataSource").Range("C13:C18").Copy
Sheets("Forecast - Month 2").Range("AZ55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("AZ55:AZ60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("D13:D18").Copy
Sheets("Forecast - Month 2").Range("BA55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BA55:BA60").NumberFormat = "#,##0,"
Sheets("Forecast - Month 2").Range("BB55:BB60").Value = "0"
Sheets("CZDataSource").Range("F13:F18").Copy
Sheets("Forecast - Month 2").Range("BI55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BI55:BI60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("G13:G18").Copy
Sheets("Forecast - Month 2").Range("BJ55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BJ55:BJ60").NumberFormat = "#,##0,"
Sheets("Forecast - Month 2").Range("BK55:BK60").Value = "0"
Sheets("CZDataSource").Range("E13:E18").Copy
Sheets("Forecast - Month 2").Range("BO55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BO55:BO60").NumberFormat = "#,##0,"
Sheets("Forecast - Month 2").Range("BP55:BP60").Value = "0"
Sheets("CZDataSource").Range("H13:H18").Copy
Sheets("Forecast - Month 2").Range("BS55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BS55:BS60").NumberFormat = "#,##0,"
Sheets("Forecast - Month 2").Range("BT55:BT60").Value = "0"
ElseIf (Right(Range("C2"), 3) = "2nd") And Range("C3") = "RIG Forecast_2021_act.xlsx" Then
Sheets("CZDataSource").ListObjects("RIG_Forecast_output").QueryTable.Refresh BackgroundQuery:=False
'CZ data input/output
Sheets("CZDataSource").Range("C7:C12").Copy
Sheets("Forecast - Month").Range("AZ34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("AZ34:AZ39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("D7:D12").Copy
Sheets("Forecast - Month").Range("BB34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BB34:BB39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("F7:F12").Copy
Sheets("Forecast - Month").Range("BI34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BI34:BI39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("G7:G12").Copy
Sheets("Forecast - Month").Range("BK34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BK34:BK39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("E7:E12").Copy
Sheets("Forecast - Month").Range("BP34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BP34:BP39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("H7:H12").Copy
Sheets("Forecast - Month").Range("BT34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BT34:BT39").NumberFormat = "#,##0,"
'SK data input/output
Sheets("CZDataSource").Range("C13:C18").Copy
Sheets("Forecast - Month").Range("AZ55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("AZ55:AZ60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("D13:D18").Copy
Sheets("Forecast - Month").Range("BB55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BB55:BB60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("F13:F18").Copy
Sheets("Forecast - Month").Range("BI55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BI55:BI60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("G13:G18").Copy
Sheets("Forecast - Month").Range("BK55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BK55:BK60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("E13:E18").Copy
Sheets("Forecast - Month").Range("BP55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BP55:BP60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("H13:H18").Copy
Sheets("Forecast - Month").Range("BT55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month").Range("BT55:BT60").NumberFormat = "#,##0,"
ElseIf (Right(Range("C2"), 3) = "2nd") And Range("C3") = "RIG Forecast_2021_m 1.xlsx" Then
Sheets("CZDataSource").ListObjects("RIG_Forecast_output").QueryTable.Refresh BackgroundQuery:=False
'CZ data input/output
Sheets("CZDataSource").Range("C7:C12").Copy
Sheets("Forecast - Month 1").Range("AZ34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("AZ34:AZ39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("D7:D12").Copy
Sheets("Forecast - Month 1").Range("BB34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BB34:BB39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("F7:F12").Copy
Sheets("Forecast - Month 1").Range("BI34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BI34:BI39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("G7:G12").Copy
Sheets("Forecast - Month 1").Range("BK34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BK34:BK39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("E7:E12").Copy
Sheets("Forecast - Month 1").Range("BP34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BP34:BP39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("H7:H12").Copy
Sheets("Forecast - Month 1").Range("BT34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BT34:BT39").NumberFormat = "#,##0,"
'SK data input/output
Sheets("CZDataSource").Range("C13:C18").Copy
Sheets("Forecast - Month 1").Range("AZ55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("AZ55:AZ60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("D13:D18").Copy
Sheets("Forecast - Month 1").Range("BB55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BB55:BB60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("F13:F18").Copy
Sheets("Forecast - Month 1").Range("BI55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BI55:BI60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("G13:G18").Copy
Sheets("Forecast - Month 1").Range("BK55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BK55:BK60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("E13:E18").Copy
Sheets("Forecast - Month 1").Range("BP55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BP55:BP60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("H13:H18").Copy
Sheets("Forecast - Month 1").Range("BT55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 1").Range("BT55:BT60").NumberFormat = "#,##0,"
ElseIf (Right(Range("C2"), 3) = "2nd") And Range("C3") = "RIG Forecast_2021_m 2.xlsx" Then
Sheets("CZDataSource").ListObjects("RIG_Forecast_output").QueryTable.Refresh BackgroundQuery:=False
'CZ data input/output
Sheets("CZDataSource").Range("C7:C12").Copy
Sheets("Forecast - Month 2").Range("AZ34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("AZ34:AZ39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("D7:D12").Copy
Sheets("Forecast - Month 2").Range("BB34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BB34:BB39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("F7:F12").Copy
Sheets("Forecast - Month 2").Range("BI34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BI34:BI39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("G7:G12").Copy
Sheets("Forecast - Month 2").Range("BK34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BK34:BK39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("E7:E12").Copy
Sheets("Forecast - Month 2").Range("BP34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BP34:BP39").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("H7:H12").Copy
Sheets("Forecast - Month 2").Range("BT34").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BT34:BT39").NumberFormat = "#,##0,"
'SK data input/output
Sheets("CZDataSource").Range("C13:C18").Copy
Sheets("Forecast - Month 2").Range("AZ55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("AZ55:AZ60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("D13:D18").Copy
Sheets("Forecast - Month 2").Range("BB55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BB55:BB60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("F13:F18").Copy
Sheets("Forecast - Month 2").Range("BI55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BI55:BI60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("G13:G18").Copy
Sheets("Forecast - Month 2").Range("BK55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BK55:BK60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("E13:E18").Copy
Sheets("Forecast - Month 2").Range("BP55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BP55:BP60").NumberFormat = "#,##0,"
Sheets("CZDataSource").Range("H13:H18").Copy
Sheets("Forecast - Month 2").Range("BT55").PasteSpecial Paste:=xlValues, operation:=xlPasteSpecialOperationNone
Sheets("Forecast - Month 2").Range("BT55:BT60").NumberFormat = "#,##0,"
Else
MsgBox ("there is something wrong")
End If
Next c
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.CutCopyMode = False
End Sub
基本上,我想擺脫特定作業表中如此多的重復步驟,并縮短并簡化代碼。
非常感謝任何幫助。
uj5u.com熱心網友回復:
將對我在評論中描述的內容做一個簡短的模型:
sub stuff()
dim sourceSheet as worksheet
set sourceSheet = Sheets("CZDataSource")
dim destSheet as worksheet
Select Case True
Case sourceSheet.Cells(2,3).Value = "RIG Forecast_2021_act.xlsx"
set destSheet = Sheets("Forecast - Month")
Case sourceSheet.Cells(2,3).Value = "RIG Forecast_2021_m 1.xlsx"
set destSheet = Sheets("Forecast - Month 1")
Case sourceSheet.Cells(2,3).Value = "RIG Forecast_2021_m 2.xlsx"
set destSheet = Sheets("Forecast - Month 2")
End Select
Dim sourceRangeArray as variant
sourceRangeArray = sourceSheet.Range("C7:C12") ', Keep filling these
Dim destRangeArray as variant
destRangeArray = destSheet.Range("AZ34:AZ39") ', Keep filling these
Dim i as Long
For i = lbound(sourceRangeArray) to ubound(sourceRangeArray)
DoTheThing sourceRangeArray(i),destRangeArray(i)
Next i
End Sub
Private Sub DoTheThing(sourceRange as Range, destRange as Range)
destRange.Value = sourceRange.Value
destRange.Numberformat = "#,##0,"
End Sub
無論目標作業表如何,您都會不斷使用相同的范圍,因此您可以在兩個陣列中以相同的順序 1:1 使用它們。
更改為.value = .value將節省您的復制和粘貼,并消除對pastespecial; 如果有必要,您仍然會保留格式,盡管我有一種感覺,您可以在最后格式化比每個操作內部更大的范圍......隨著范圍的數量,時間上不應該太糟糕按原樣做。
使用Select您的目的地表中洗掉什么在你的范圍內重復發生的最大的一塊,讓本身就應該節省時間/重復一大塊。
仔細觀察范圍時,“1st”和“2nd”的使用似乎并不重要,因為您只查看C3. 這將Select進一步削減。
uj5u.com熱心網友回復:
將您的范圍放入陣列中,然后您可以重復使用相同的代碼行遍歷它們。
Option Explicit
Sub SpitValues()
Const PREFIX = "RIG Forecast_2021_"
Dim dvCell As Range, inputRange As Range, c As Range
Dim wsSrc As Worksheet, wsTarget As Worksheet
Dim tbl As ListObject
'Drop-down list source
Set wsSrc = Sheets("CZDataSource")
Set dvCell = wsSrc.Range("C3")
Set inputRange = Evaluate(dvCell.Validation.Formula1)
Set tbl = wsSrc.ListObjects("RIG_Forecast_output")
' put source ranges into array
Dim arSrc, arTgt, arZeros, i As Integer, bError As Boolean, s As String
arSrc = Split("C,D,E,F,G,H", ",")
' put target and zero ranges for 1st/2nd into arrays
s = Right(wsSrc.Range("C2"), 3)
If s = "1st" Then
arTgt = Split("AZ,BA,BO,BI,BJ,BS", ",")
arZeros = Split("BB,BP,BK,BT", ",")
ElseIf s = "2nd" Then
arTgt = Split("AZ,BB,BP,BI,BK,BT", ",")
arZeros = Array()
Else
MsgBox "'" & s & "' is not 1st/2nd in C2", vbCritical
Exit Sub
End If
' copy source to target
Application.ScreenUpdating = False
For Each c In inputRange
dvCell.Value = c.Value
' select target sheet
If c.Value = PREFIX & "act.xlsx" Then
Set wsTarget = Sheets("Forecast - Month")
ElseIf c.Value = PREFIX & "m 1.xlsx" Then
Set wsTarget = Sheets("Forecast - Month 1")
ElseIf c.Value = PREFIX & "m 2.xlsx" Then
Set wsTarget = Sheets("Forecast - Month 2")
Else
bError = True
End If
' execute
If bError Then
MsgBox c.Value & " not recognized", vbExclamation, "Row " & c.Row
Else
tbl.QueryTable.Refresh BackgroundQuery:=False
With wsTarget
' loop through the src/tgt ranges
For i = 0 To UBound(arSrc)
'CZ data input/output
.Range(arTgt(i) & "34").Resize(6).Value2 = wsSrc.Range(arSrc(i) & "7").Resize(6).Value2
.Range(arTgt(i) & "34").Resize(6).NumberFormat = "#,##0,"
'SK data input/output
.Range(arTgt(i) & "55").Resize(6).Value2 = wsSrc.Range(arSrc(i) & "13").Resize(6).Value2
.Range(arTgt(i) & "55").Resize(6).NumberFormat = "#,##0,"
Next
' zero values
For i = 0 To UBound(arZeros)
.Range(arZeros(i) & "34").Resize(6).Value2 = 0
.Range(arZeros(i) & "55").Resize(6).Value2 = 0
Next
End With
s = s & vbLf & wsTarget.Name ' for msgbox
End If
Next
Application.ScreenUpdating = True
MsgBox "Sheets updated for " & s, vbInformation
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/319085.html
上一篇:如何將具有值的陣列放入一列
