【发布时间】:2013-08-27 12:02:17
【问题描述】:
如何缩短此代码?请原谅我的不良编码习惯,我是自学成才,几乎是个菜鸟。
代码由 199 个“Elseif”语句组成,我不知道有什么其他方法可以写出我想要做的事情。
Sub CopytoRoutine()
If Sheets("iPhone view").Range("A2") = Sheets("Routine").Range("B9") And Sheets("iPhone view").Range("A3") = Sheets("Routine").Range("C7") Then
Range("A5:B5").Select
Selection.Copy
Sheets("Routine").Select
Range("C9:D9").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
True, Transpose:=FalseL
ElseIf Sheets("iPhone view").Range("A2") = Sheets("Routine").Range("B10") And Sheets("iPhone view").Range("A3") = Sheets("Routine").Range("C7") Then
Range("A5:B5").Select
Selection.Copy
Sheets("Routine").Select
Range("C10:D10").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
True, Transpose:=False
ElseIf Sheets("iPhone view").Range("A2") = Sheets("Routine").Range("B11") And Sheets("iPhone view").Range("A3") = Sheets("Routine").Range("C7") Then
Range("A5:B5").Select
Selection.Copy
Sheets("Routine").Select
Range("C11:D11").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
True, Transpose:=False
ElseIf Sheets("iPhone view").Range("A2") = Sheets("Routine").Range("B12") And Sheets("iPhone view").Range("A3") = Sheets("Routine").Range("C7") Then
Range("A5:B5").Select
Selection.Copy
Sheets("Routine").Select
Range("C12:D12").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
True, Transpose:=False
ElseIf Sheets("iPhone view").Range("A2") = Sheets("Routine").Range("B13") And Sheets("iPhone view").Range("A3") = Sheets("Routine").Range("C7") Then
Range("A5:B5").Select
Selection.Copy
Sheets("Routine").Select
Range("C13:D13").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
True, Transpose:=False
ElseIf Sheets("iPhone view").Range("A2") = Sheets("Routine").Range("B14") And Sheets("iPhone view").Range("A3") = Sheets("Routine").Range("C7") Then
Range("A5:B5").Select
Selection.Copy
Sheets("Routine").Select
Range("C14:D14").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
True, Transpose:=False
ElseIf Sheets("iPhone view").Range("A2") = Sheets("Routine").Range("B15") And Sheets("iPhone view").Range("A3") = Sheets("Routine").Range("C7") Then
Range("A5:B5").Select
Selection.Copy
Sheets("Routine").Select
Range("C15:D15").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
True, Transpose:=False
Sheets("Routine").Range("Bx") 其中 x= 9-29
Sheets("Routine").Range("C7"),此范围更改为 G7,K7,O7,S7,...AM7。当上面到达B29时
Range("C9:D9").Select 的列字母随上面的变化而变化,行号也是如此
所以我基本上可以做这样的事情?
Sub CopytoRoutine()
Dim wb As Workbook
Dim cpuview As Worksheet
Dim routine As Worksheet
Set wb = ThisWorkbook
Set cpuview = wb.Sheets("iPhone view")
Set routine = wb.Sheets("Routine")
Dim x As Integer
For x = 9 To 29
If cpuview.Range("A2") = routine.Range("Bx") And cpuview.Range("A3") = routine.Range("C7") Then
Range("A5:B5").Select
Selection.Copy
routine.Select
Range("Cx:Dx").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
True, Transpose:=False
【问题讨论】:
-
是的,就是这样,虽然语法有点不对劲。我已经编辑了我的答案以包含一个您应该能够通过一些调整来使用的子。
标签: vba excel compiler-errors