我有5行代码,需要重复大约180次。对于每一行(或一组行),我只需要调整几个数字。这是一个超级乏味的替换方法。有没有办法用胶印或类似的东西来做这件事?以下是代码:
If Target.Address = "$E$7" Then
MsgBox Worksheets("Budget Hours").Range("F3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("F6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("F7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("F8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("F9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("F10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$8" Then
MsgBox Worksheets("Budget Hours").Range("G3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("G6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("G7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("G8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("G9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("G10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$9" Then
MsgBox Worksheets("Budget Hours").Range("H3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("H6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("H7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("H8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("H9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("H10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$10" Then
MsgBox Worksheets("Budget Hours").Range("I3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("I6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("I7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("I8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("I9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("I10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$11" Then
MsgBox Worksheets("Budget Hours").Range("J3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("J6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("J7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("J8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("J9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("J10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$12" Then
MsgBox Worksheets("Budget Hours").Range("K3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("K6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("K7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("K8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("K9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("K10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$13" Then
MsgBox Worksheets("Budget Hours").Range("L3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("L6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("L7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("L8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("L9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("L10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$14" Then
MsgBox Worksheets("Budget Hours").Range("M3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("M6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("M7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("M8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("M9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("M10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$15" Then
MsgBox Worksheets("Budget Hours").Range("N3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("N6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("N7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("N8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("N9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("N10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$16" Then
MsgBox Worksheets("Budget Hours").Range("O3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("O6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("O7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("O8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("O9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("O10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$17" Then
MsgBox Worksheets("Budget Hours").Range("P3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("P6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("P7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("P8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("P9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("P10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$18" Then
MsgBox Worksheets("Budget Hours").Range("Q3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("Q6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("Q7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("Q8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("Q9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("Q10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$19" Then
MsgBox Worksheets("Budget Hours").Range("R3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("R6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("R7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("R8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("R9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("R10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$20" Then
MsgBox Worksheets("Budget Hours").Range("S3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("S6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("S7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("S8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("S9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("S10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$21" Then
MsgBox Worksheets("Budget Hours").Range("T3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("T6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("T7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("T8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("T9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("T10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$22" Then
MsgBox Worksheets("Budget Hours").Range("U3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("U6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("U7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("U8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("U9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("U10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$23" Then
MsgBox Worksheets("Budget Hours").Range("V3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("V6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("V7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("V8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("V9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("V10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$24" Then
MsgBox Worksheets("Budget Hours").Range("W3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("W6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("W7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("W8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("W9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("W10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$25" Then
MsgBox Worksheets("Budget Hours").Range("X3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("X6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("X7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("X8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("X9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("X10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$26" Then
MsgBox Worksheets("Budget Hours").Range("Y3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("Y6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("Y7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("Y8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("Y9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("Y10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value
ElseIf Target.Address = "$E$27" Then
MsgBox Worksheets("Budget Hours").Range("Z3").Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Range("Z6").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Range("Z7").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Range("Z8").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Range("Z9").Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Range("Z10").Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value因此,在下一组中,6、7、8、9和10被替换为15、16、17、18和19。然后还有另外6组以上代码。有没有一种方法来实现某种偏移量,这样我只能调整它,其余的就会平衡了吗?它将始终是五个连续的数字,因此一个偏移量将工作到正确的起点。旁白--偏移量并不总是等于9。6成为15)。其中一个补偿将是一个不同的数字,所以我希望能够相应地调整。
发布于 2020-07-09 15:50:37
我不知道是什么触发了下一个“分组”,但这里有一个不同的名称。
未经测试:
Dim ws As Worksheet, rng1 As Range, rng2 As Range, msg, i As Long
Set ws = Worksheets("Budget Hours")
Set rng1 = ws.Range("E6:E10")
Set rng2 = rng1.Offset(0, target.Row - 6)
msg = rng2.EntireColumn.Cells(3).Value & vbNewLine
For i = 1 To rng1.Cells.count
msg = msg & vbNewLine & rng1.Cells(i).Value & " - " & rng2.Cells(i).Value & " Hours"
Next i
MsgBox msg, , ws.Range("E5").Value发布于 2020-07-09 14:58:04
假设它们将继续遵循相同的模式,其中target.row与结束列相关,这应该可以工作。
从.row中提取target并减去一个以获得您的新列。
MsgBox Worksheets("Budget Hours").Cells(3, target.Row - 1).Value & vbNewLine _
& vbNewLine & Worksheets("Budget Hours").Range("E6").Value & " - " & Worksheets("Budget Hours").Cells(6, target.Row - 1).Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E7").Value & " - " & Worksheets("Budget Hours").Cells(7, target.Row - 1).Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E8").Value & " - " & Worksheets("Budget Hours").Cells(8, target.Row - 1).Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E9").Value & " - " & Worksheets("Budget Hours").Cells(9, target.Row - 1).Value & " Hours" _
& vbNewLine & Worksheets("Budget Hours").Range("E10").Value & " - " & Worksheets("Budget Hours").Cells(10, target.Row - 1).Value & " Hours" _
, , Worksheets("Budget Hours").Range("E5").Value现在,您不应该需要任何if statements。
发布于 2020-07-09 18:39:52
“我已经调整好了”提姆威廉姆斯上面说的话。我现在试着让它在我的第二组工作,但它不太起作用。下面是代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.Calculate
Dim ws1 As Worksheet, ws2 As Worksheet, list As Range, msg, i As Long
Set ws1 = Worksheets("Budget Hours")
Set ws2 = Worksheets("Schedule")
'Phase 01
Dim rngPH1 As Range, rng1 As Range, rng2 As Range
Set rngPH1 = ws2.Range("E7:E27")
Set rng1 = ws1.Range("E6:E10")
Set rng2 = rng1.Offset(0, Target.Row - 6)
For Each list In rngPH1
msg = rng2.EntireColumn.Cells(3).Value & vbNewLine
For i = 1 To rng1.Cells.Count
msg = msg & vbNewLine & rng1.Cells(i).Value & " - " & rng2.Cells(i).Value & " Hours"
Next i
Next list
MsgBox msg, , ws1.Range("E5").Value
'Phase 02
Dim rngPH2 As Range, rng3 As Range, rng4 As Range
Set rngPH2 = ws2.Range("E43:E63")
Set rng3 = ws1.Range("E15:E19")
Set rng4 = rng3.Offset(0, Target.Row - 36)
For Each list In rngPH2
msg = rng4.EntireColumn.Cells(3).Value & vbNewLine
For i = 1 To rng1.Cells.Count
msg = msg & vbNewLine & rng3.Cells(i).Value & " - " & rng4.Cells(i).Value & " Hours"
Next i
Next list
MsgBox msg, , ws1.Range("E14").Value
End Sub所以我的问题是,我希望第01阶段的东西只在范围Schedule("E7:E27")上工作。第二阶段的东西,我只想工作范围Schedule("E43:E63")。我认为,通过使用rngPH1和rngPH2,我可以做到这一点,但它没有起作用。如果我在“Schedule("E8")”中单击,它完美地从ws1中提取了正确的内容,但随后继续执行我不想要的第二阶段内容。如何使它只在范围rngPH1上执行第01阶段的工作,而第二阶段仅在范围rngPH2上完成。
https://stackoverflow.com/questions/62817495
复制相似问题