Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 合并两个子过程_Vba_Excel - Fatal编程技术网

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