【问题标题】:Call different subs from different modules从不同的模块调用不同的sub
【发布时间】:2021-09-27 20:13:38
【问题描述】:

我正在尝试从我的主模块调用不同模块中的不同子。
当我最后执行exit sub 时,只会创建“简要 1”。
如果我在每次通话后不输入exit sub,它会先创建“brief1”,然后在循环中更进一步,它将为每一行创建所有字母,而不是它需要的字母。

Dim r As Long

r = 6
Do Until IsEmpty(Cells(r, 1))

With Sheet1

    If Sheet1.Range("C" & r) = "Brief 1" Then
        Rappelbrief_1
         
    ElseIf Sheet1.Range("C" & r) = "Brief 2" Then
        Rappelbrief_2
                         
    ElseIf Sheet1.Range("C" & r) = "Brief 3" Then
        Rappelbrief_3
                    
    ElseIf Sheet1.Range("C" & r) = "Brief BA" Then
        Brief_BA       
         
    ElseIf Sheet1.Range("C" & r) = "Brief na tel contact" Then
        Brief_opheffen_na_telefonisch_contact

    ElseIf Sheet1.Range("C" & r) = "Brief tel. opheffing" Then
        Brief_Tel_Opheffing
                                
    ElseIf Sheet1.Range("C" & r) = "Brief 1 + ophefform" Then
        Rappelbrief_1
        Brief_opheffen_na_telefonisch_contact
        'Ophefform_PDF
                                    
    End If

【问题讨论】:

  • 你用什么方法来增加r的值?对于您要完成的工作,您的代码似乎不完整。您似乎正在尝试遍历 6 个单独的单元格,对吗?

标签: excel vba


【解决方案1】:

您的 IsEmpty(Cells(r, 1)) 没有工作表引用,这可能会导致问题。

试试这样的:

Sub tester()
    Dim c As Range
    
    Set c = Sheet1.Range("A6")
    
    Do While Len(c.Value) > 0
        Select Case c.Offset(0, 2).Value
            Case "Brief 1": Rappelbrief_1
            Case "Brief 2": Rappelbrief_2
            Case "Brief 3": Rappelbrief_3
            'etc etc
            Case "Brief 1 + ophefform"
                Rappelbrief_1
                Brief_opheffen_na_telefonisch_contact
        End Select
    
        Set c = c.Offset(1, 0) 'next row
    Loop

End Sub

【讨论】:

  • 谢谢 Tim voor 调查它。我现在唯一的问题是,我会在我正在调用的一个 subs 上遇到运行时错误,而从该特定 subs 本身运行代码时,它不会收到运行时错误 91。
  • 那里没有什么我可以提供的 - 听起来错误在另一个 Sub...
  • ...没有看到该代码和具体错误,不可能提出任何建议。
猜你喜欢
  • 2011-02-17
  • 2013-08-13
  • 1970-01-01
  • 2021-01-10
  • 2018-04-16
  • 2019-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多