【发布时间】:2015-02-15 13:58:29
【问题描述】:
我有以下逻辑方案和价值观:
Sub PrezziFissi()
Dim i As Integer, k As Integer, z As Integer
Dim FornitCerca As Range, data As Range, FornitVerif As Range, DataPaste As Range, NomePaste As Range, PrezzoPaste As Range
Dim PrezzoFisso As Range
Dim foglio As Worksheet
Set foglio = ActiveWorkbook.Sheets("CODICI")
For k = 10 To 110
Set FornitCerca = foglio.Range("I" & k)
Set PrezzoFisso = foglio.Range("J" & k)
For z = 3 To 601
Set data = foglio.Range("R" & z)
Set FornitVerif = foglio.Range("S" & z)
If FornitCerca = FornitVerif Then 'ELABORA - copia e incolla
For i = 20 To 150
Set DataPaste = foglio.Range("B" & i)
Set NomePaste = foglio("C" & i)
Set PrezzoPaste = foglio("D" & i)
If PrezzoPaste = 0 Then
PrezzoFisso.Copy
PrezzoPaste.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, operation:=xlNone
Application.CutCopyMode = False
FornitCerca.Copy 'c 20
NomePaste.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, operation:=xlNone
Application.CutCopyMode = False
data.Copy 'b 20
DataPaste.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, operation:=xlNone
Application.CutCopyMode = False
Else: Next i
End If
Next i
Else: Next z
End If
Next z
Next k
End Sub
因为如果仅 (i) 更改为前向 1,那么它会在所有列 D、C 和 B 单元格中复制 z=3 的值, 如果只有 z 改变,那么在位置 D20、C20、B20 它将覆盖来自第 20 行匹配的值
相反,我想 (i) 向前移动 1 到另一个目标空单元格(第 21 行), 以及从 S3 到 S4 的匹配移动(在单元格下方到 S 列) 我想放下一个z,下一个我。这可能吗?如果是,VBA 会同时更改这些变量吗? 非常感谢您,并为您耽误您的时间道歉
【问题讨论】:
-
听起来您需要将
Else: Next i替换为Exit For,将其留在If/End If中。这将使您脱离 i 的For/Next循环,增加 z 并继续。 FWIW,像Else: Next i这样的行几乎应该永远被使用,因为Next i会递增。