Vba 合并两个子过程
我希望将以下两个子过程合并为一个子过程。每一行我想这样做,我会得到一个错误。如有任何关于问题所在的建议,我们将不胜感激Vba 合并两个子过程,vba,excel,Vba,Excel,我希望将以下两个子过程合并为一个子过程。每一行我想这样做,我会得到一个错误。如有任何关于问题所在的建议,我们将不胜感激 Sub URL_Classification() 'Keyboard Shortcut: Ctrl Shift + X Dim i As Long, an As Long, bn As Long Dim a, b, c As Range Application.ScreenUpdating = False a = Array("Facebook", "Linkedin", "T
Sub URL_Classification()
'Keyboard Shortcut: Ctrl Shift + X
Dim i As Long, an As Long, bn As Long
Dim a, b, c As Range
Application.ScreenUpdating = False
a = Array("Facebook", "Linkedin", "Twitter", "Youtube", "Vimeo")
b = Array("RSS", "Feed", "Xml", "rdf", "atom", "syndication.axd")
Columns(5).ClearContents
For Each c In Range("d1", Range("d" & Rows.Count).End(xlUp))
If c <> "" Then
an = 0: bn = 0
For i = LBound(a) To UBound(a)
If InStr(c, a(i)) Then
an = i
Exit For
End If
Next i
For i = LBound(b) To UBound(b)
If InStr(c, b(i)) Then
bn = 1
Exit For
End If
Next i
If an = 0 And bn = 0 Then
c.Offset(, 1) = "General"
ElseIf an <> 0 And bn = 0 Then
c.Offset(, 1) = a(an)
ElseIf an = 0 And bn <> 0 Then
c.Offset(, 1) = b(bn)
ElseIf an <> 0 And bn <> 0 Then
c.Offset(, 1) = a(an)
End If
End If
Sub RemoveDuplicates()
Cells.RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5), Header:=xlNo
End Sub
Next c
Application.ScreenUpdating = True
End Sub
您的sub中有两个
End sub
语句。在VBA中,如果没有前面的Sub
,则不能有End Sub
。如果您想在到达末尾之前离开子程序,请使用退出子程序。您不能在另一个子例程中定义子例程。您可能希望从另一个子例程调用一个子例程,通过这种方式,您可以调用或将代码复制粘贴到不需要的子过程中。我希望将以下两个子过程合并为一个子过程。为了什么?你就不能像现在这样从另一个打电话给另一个吗?在URL\u分类
中,您希望获得什么(除了较难阅读/调试的代码)?您需要执行调用RemovedUpplicates
或简单地RemovedUpplicates
而不是Sub RemovedUpplicates()
您好,谢谢您的回复。我希望自动化我们团队所做的一些工作。我们使用以下两个子过程在每天结束时完成工作。为了简化事情,我希望能够分配一个快捷键来执行这两个子过程。好的,那么解决方案如下@eventHandler所示(我在上面的注释中提到)。您应该实现该解决方案,并将eventHandler的响应标记为已接受/正确。感谢您的帮助。如果这个被移除的副本被放置在“End if”和“Next c”之间,那么实际上看起来就像他们在第一个sub
@Telestia的定义中定义了一个sub
,啊,你是对的。不管怎样,你都不能那样做。是的,这就是问题所在。谢谢你的回复。为你的回复干杯。我几乎没有编码经验,我只是想知道“call”应该放在Sub的哪个部分?在'EndIf'和'Next C'之间?抱歉,我只是想澄清一下,我的意思是,它放在哪里不会导致'compile error'。编辑。我想出了如何调用模块。谢谢你的帮助。
Sub RemoveDuplicates()
Sheets("Work").Select
Range("D1300").Activate
ActiveSheet.Range("$A$1:$F$1300").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6 _
), Header:=xlNo
End Sub