Vba 如何修改后续代码以获得执行其余代码所依据的条件:
晚上好。我花了5个小时的大部分时间试图理解并找到如何修改下面的代码,以包含一个单独的条件,该条件决定是执行每一行的其余代码还是跳到下一行 我什么也找不到。 我试图将标准设置为范围(一列),但没有效果。我不明白如何进入状态。我要么在没有For的情况下得到,要么在没有End的情况下得到,如果或其他类似错误 我想问的是,是否有一个善良的灵魂可以给我一个线索,让我知道应该在哪里插入这样的陈述? 声明如下: 如果对应的单元格值为值,则 跳过并做下一步 否则会 列和页为: 第1页: G列-包含5类,其中一类是税。在此基础上,如果是逃税,则执行 列L-包含带有关键字的说明。在中通常有2-3行文本,其中有1个唯一的关键字。 M列-放置基于关键字的类别的位置 第2页: 列A-要搜索的关键字 C列-每个关键字(天然气、电力等)旁边应对应的类别 这是下面需要修改的原始代码Vba 如何修改后续代码以获得执行其余代码所依据的条件:,vba,excel,Vba,Excel,晚上好。我花了5个小时的大部分时间试图理解并找到如何修改下面的代码,以包含一个单独的条件,该条件决定是执行每一行的其余代码还是跳到下一行 我什么也找不到。 我试图将标准设置为范围(一列),但没有效果。我不明白如何进入状态。我要么在没有For的情况下得到,要么在没有End的情况下得到,如果或其他类似错误 我想问的是,是否有一个善良的灵魂可以给我一个线索,让我知道应该在哪里插入这样的陈述? 声明如下: 如果对应的单元格值为值,则 跳过并做下一步 否则会 列和页为: 第1页: G列-包含5类,其中一类
Sub Categories_Update()
Dim lastrow As Long, lastrow2 As Long
Dim i As Integer, j As Integer
Dim PatternFound As Boolean
Call speedup
lastrow = Sheets("Rules").Range("A" & Rows.Count).End(xlUp).Row
lastrow2 = Sheets("DebitCard_Check").Range("L" & Rows.Count).End(xlUp).Row
For i = 4 To lastrow2
PatternFound = False
j = 1
Do While PatternFound = False And j < lastrow
j = j + 1
If UCase(Sheets("DebitCard_Check").Range("L" & i).Value) Like "*" & UCase(Sheets("Rules").Range("A" & j).Value) & "*" Then
Sheets("DebitCard_Check").Range("M" & i).Value = Sheets("Rules").Range("C" & j).Value
PatternFound = True
End If
Loop
Next i
Call normal
End Sub
'-------------------------------
Public Sub speedup()
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
End Sub
'-------------------------------
Public Sub normal()
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub
子类别\u更新()
将最后一行的长度调暗,最后一行的长度调暗
尺寸i为整数,j为整数
找到的模糊模式为布尔型
呼叫加速
lastrow=工作表(“规则”).Range(“A”和Rows.Count).结束(xlUp).行
lastrow2=工作表(“借记卡检查”)。范围(“L”和行数。计数)。结束(xlUp)。行
对于i=4到最后一行2
PatternFound=False
j=1
当PatternFound=False且j
我相信您请求的修改包含在下面(请参见星号和随后的注释以了解解释):
子类别\u更新()
将最后一行的长度调暗,最后一行的长度调暗
尺寸i为整数,j为整数
找到的模糊模式为布尔型
呼叫加速
lastrow=工作表(“规则”).Range(“A”和Rows.Count).结束(xlUp).行
lastrow2=工作表(“借记卡检查”)。范围(“L”和行数。计数)。结束(xlUp)。行
对于i=4到最后一行2
“***我认为这就是您试图插入的内容,一个导致基于的行被跳过的条件
'列G为“TAX”-此条件将其发送到下面的部分“Skip1”(您可以任意调用它)
如果UCase(表(“借记卡检查”).Range(“G”和i).Value)=“TAX”,则转到Skip1
PatternFound=False
j=1
当PatternFound=False且j
谢谢您,先生(对迟交的答案表示歉意)让我测试一下,很快回来!你好,德米特里,谢谢你!它工作得很好。我对它做了一点修改,以便将更广泛的可能性(请注意)包括在下面中,如果UCase(Sheets(“DebitCard_Check”).range(“G”&I).Value)像“*TAX*”那样,那么如果我理解正确,那么就跳到Skip1
,因为我不喜欢复制粘贴,也不喜欢学习(这并不是说每次都会有人给我写这些东西)执行循环的实际代码块从我的原始Do While
部分开始。end以end Sub
结束。因此,为了包含一个命令和引导代码的预游标/过滤器,我必须在循环开始之前包含位。我希望我是正确的。我的目标是相同的,但f生病是因为我的语法似乎自然而然地转到了C#,并拒绝围绕VBA。你知道有一个很好的地方吗?在那里我可能会找到一个很好的VBA语法表?除了上面的->谢谢!这正是我一直在寻找的。这很有趣,因为我在理解C#方面也有类似的困难,因为我的思维很自然到VBA。很抱歉,我不知道在哪里你一定能找到你需要的东西,但这里有两个链接至少可以让你开始:祝你好运!这太棒了!这些链接真的很棒。是的,在语言之间切换通常非常容易,但当你不熟悉新语言时,会变得越来越糟糕st:D
Sub Categories_Update()
Dim lastrow As Long, lastrow2 As Long
Dim i As Integer, j As Integer
Dim PatternFound As Boolean
Call speedup
lastrow = Sheets("Rules").Range("A" & Rows.Count).End(xlUp).Row
lastrow2 = Sheets("DebitCard_Check").Range("L" & Rows.Count).End(xlUp).Row
For i = 4 To lastrow2
PatternFound = False
j = 1
Do While PatternFound = False And j < lastrow
j = j + 1
If UCase(Sheets("DebitCard_Check").Range("L" & i).Value) Like "*" & UCase(Sheets("Rules").Range("A" & j).Value) & "*" Then
Sheets("DebitCard_Check").Range("M" & i).Value = Sheets("Rules").Range("C" & j).Value
PatternFound = True
End If
Loop
Next i
Call normal
End Sub
'-------------------------------
Public Sub speedup()
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
End Sub
'-------------------------------
Public Sub normal()
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub
Sub Categories_Update()
Dim lastrow As Long, lastrow2 As Long
Dim i As Integer, j As Integer
Dim PatternFound As Boolean
Call speedup
lastrow = Sheets("Rules").Range("A" & Rows.Count).End(xlUp).Row
lastrow2 = Sheets("DebitCard_Check").Range("L" & Rows.Count).End(xlUp).Row
For i = 4 To lastrow2
' *** I think this is what you are trying to insert, a conditional that causes the row to get skipped based on
'column G being "TAX" - this conditional sends it to the part "Skip1" (you can call it anything) down below
If UCase(Sheets("DebitCard_Check").Range("G" & i).Value) = "TAX" Then GoTo Skip1
PatternFound = False
j = 1
Do While PatternFound = False And j < lastrow
j = j + 1
If UCase(Sheets("DebitCard_Check").Range("L" & i).Value) Like "*" & UCase(Sheets("Rules").Range("A" & j).Value) & "*" Then
Sheets("DebitCard_Check").Range("M" & i).Value = Sheets("Rules").Range("C" & j).Value
PatternFound = True
End If
Loop
' ***You need to add this piece to tell it where to skip to. It has to have a colon after it.
Skip1:
Next i
Call normal
End Sub
'-------------------------------
Public Sub speedup()
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
End Sub
'-------------------------------
Public Sub normal()
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub