如果有条件循环标准

时间:2014-03-07 15:46:21

标签: excel vba excel-vba

我试图让我的宏找到一个特定的值(一个约会值),并根据该值创建一个工作簿,显示具有相同策略编号(唯一标准)和我指定的datediff值的所有行。麻烦的是,我的宏不仅仅针对一个策略号执行此操作,它使用我指定的datediff值为所有人执行此操作。我尝试了下面的代码,但我不断收到错误消息。所以任何帮助都绝对令人惊叹!

Sub Invoice()

Dim s As Integer
s = 2

Dim t As Integer
t = 21

Dim r As Integer
r = 2

Dim policy As String
Dim sheet As Worksheet
Set sheet = ActiveWorkbook.Sheets("sheet1")
policy = Workbooks("Woorkbook2.xlsm").Sheets("sheet1").Range("A" & r).Value


If Cells(s, 1).Value = policy Then

Workbooks("Workbook2.xlsm").Sheets("Sheet1").Activate
mini = Cells(s, 21).Value
If mini = "2" Then

Dim Newbook As Workbook
Set Newbook = Workbooks.Add
Workbooks("Workbook2.xlsm").Sheets("Invoice Template (2)").Copy    Before:=Newbook.Sheets(1)
    ActiveSheet.Name = "Current Invoice"

Workbooks("Workbook2.xlsm").Sheets("Sheet1").Activate

Do Until IsEmpty(Cells(s, 1))


Newbook.Sheets("Current Invoice").Cells(t, 2).Value = Cells(s, 10).Value
Newbook.Sheets("Current Invoice").Cells(t, 3).Value = Cells(s, 8).Value
Newbook.Sheets("Current Invoice").Cells(t, 7).Value = Cells(s, 11).Value

Loop

s = s + 1

r = r + 1
End If 
End IF
End Sub

1 个答案:

答案 0 :(得分:0)

我认为循环应该在's'增加之后:

Do Until IsEmpty(Cells(s, 1))


Newbook.Sheets("Current Invoice").Cells(t, 2).Value = Cells(s, 10).Value
Newbook.Sheets("Current Invoice").Cells(t, 3).Value = Cells(s, 8).Value
Newbook.Sheets("Current Invoice").Cells(t, 7).Value = Cells(s, 11).Value

s = s + 1

Loop