每个语句和if语句使用2个条件的范围

时间:2018-09-16 18:07:04

标签: excel vba

我的发票生成器代码的一部分是将数据从发票模板移到另一个工作表。但是,某些产品没有需要我单独运行的代码的条形码。

到目前为止,以下代码是我尝试过的,但似乎无法正常工作。似乎只是没有检查range(“ B20:B32”)的单元格是否包含a或b。

我希望每当b20到b32 = a之间的每个单元格都运行代码A,否则,如果b20到b32 = b之间的每个单元格都将运行代码B。

我的另一个选择是为b20到b32之间的每个单元格编写一个代码,但是我的代码很长,我有8个单元格来检查其值是= a还是b。

请帮助。谢谢

            Private Sub Testfor()
            Dim cell As Range
            Dim r As Long
            Dim pd As Range

            r = Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
            Set pd = Sheet1.Range("B20:B32")
            For Each cell In pd

            'codeA
            If cell = "DPS" Or cell = "TS" Then

            Sheet2.Cells(r, 1) = "yes"
            Sheet2.Cells(r, 2) = "yes"
            Sheet2.Cells(r, 3) = "yes"

            'codeB
            ElseIf cell = "FMC" Or cell = "PM" Or cell = "FC" Then

            Sheet2.Cells(r, 1) = "K"
            Sheet2.Cells(r, 2) = "v"
            Sheet2.Cells(r, 3) = "c"

            End If

             Next cell



            End Sub

1 个答案:

答案 0 :(得分:0)

尝试使用此代码,并确定它是否正在完成您想要实现的目标。 如果要在每次迭代中更改r,则应将其放入循环中。

Private Sub Testfor()
Dim cell As Range
Dim r As Long
Dim pd As Range
Dim Sheet1 As Worksheet: Set Sheet1 = ThisWorkbook.Sheets("Sheet1")
Dim Sheet2 As Worksheet: Set Sheet2 = ThisWorkbook.Sheets("Sheet2")

Set pd = Sheet1.Range("B20:B32")
For Each cell In pd
r = Sheet2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    If cell = "DPS" Or cell = "TS" Then
        Sheet2.Cells(r, 1) = "yes"
        Sheet2.Cells(r, 2) = "yes"
        Sheet2.Cells(r, 3) = "yes"
    ElseIf cell = "FMC" Or cell = "PM" Or cell = "FC" Then
        Sheet2.Cells(r, 1) = "K"
        Sheet2.Cells(r, 2) = "v"
        Sheet2.Cells(r, 3) = "c"
    End If
Next cell
End Sub