VBA — Как мне предотвратить самоустранение кнопки после запуска кода?

#vba #ms-word

#vba #ms-word

Вопрос:

Когда я нажимаю на CommandButton, который запускает код, он удаляется. Но я хочу использовать его снова. Все эти операторы IF относятся к кнопкам переключения. Если они нажаты, командная кнопка с именем CREATE вставляет соответствующие файлы.

 
Public Sub CREATE_CLICK()  `this is the command button`
 
    
    If MAV.Value = True Then
    
          Selection.InsertBreak
        Selection.InsertFile FileName:="C:UsersAZIDocumentsSchnellbaustein MAV Fertig.docx"
    
    End If
    
    If MCS.Value = True Then
       
    
         Selection.InsertBreak
            Selection.InsertFile FileName:="C:UsersAZIDocumentsSchnellbaustein MCS Fertig.docx"
    
    End If
    
    If MDC.Value = True Then
     
       Selection.InsertBreak
        Selection.InsertFile FileName:="C:UsersAZIDocumentsSchnellbaustein MDC Fertig.docx"
    
    End If
    
    If MGB.Value = True Then
       
       Selection.InsertBreak
        Selection.InsertFile FileName:="C:UsersAZIDocumentsSchnellbaustein MGB.docx"
    
    End If
    
    If MUP.Value = True Then
       
       Selection.InsertBreak
        Selection.InsertFile FileName:="C:UsersAZIDocumentsSchnellbaustein MUP Fertig.docx"
    
    End If
    
    If MVT.Value = True Then
       
       Selection.InsertBreak
        Selection.InsertFile FileName:="C:UsersAZIDocumentsSchnellbaustein MVT.docx"
    
    End If
    
    If MVK.Value = True Then
       
       Selection.InsertBreak
        Selection.InsertFile FileName:="C:UsersAZIDocumentsSchnellbaustein MVK.docx"
    
    End If

End Sub
  

Комментарии:

1. В обычном мире такого не может произойти. Если вы не покажете свой код, никто не сможет вам помочь. Возможно, ваша кнопка создается «на лету» (в форме). О каком типе кнопки вы говорите?

2. я добавил код

3. В вашем коде нет строки, которая удаляет commandbutton . Это полный код?

Ответ №1:

После использования записи макросов ваш код специфичен для объекта выбора, что приводит к неожиданным результатам, когда вы пытаетесь сделать макрос более обобщенным. Поскольку ваша кнопка находится на странице, когда вы нажимаете на нее, она становится выделенной, и ваш код заменяет ее.

Вместо этого используйте диапазоны для определения места, куда должен быть вставлен документ. Удобный метод — использовать закладку в предпочтительном месте. В этом коде предполагается, что в документ под кнопкой ActiveX добавлена закладка с именем InsertPoint .

 Private Sub CREATE_Click()
    Dim oRange As Range
    
    If MAV.Value = True Then
        With ActiveDocument.Bookmarks("InsertPoint").Range
            .InsertBreak
            .InsertFile FileName:="C:UsersAZIDocumentsSchnellbaustein MAV Fertig.docx"
        End With
    End If
    If MCS.Value = True Then
        With ActiveDocument.Bookmarks("InsertPoint").Range
            .InsertBreak
            .InsertFile FileName:="C:UsersAZIDocumentsSchnellbaustein MCS Fertig.docx"
        End With
    End If
    If MDC.Value = True Then
        With ActiveDocument.Bookmarks("InsertPoint").Range
            .InsertBreak
            .InsertFile FileName:="C:UsersAZIDocumentsSchnellbaustein MDC Fertig.docx"
        End With
    End If
    If MGB.Value = True Then
        With ActiveDocument.Bookmarks("InsertPoint").Range
            .InsertBreak
            .InsertFile FileName:="C:UsersAZIDocumentsSchnellbaustein MGB Fertig.docx"
        End With
    End If
    If MUP.Value = True Then
        With ActiveDocument.Bookmarks("InsertPoint").Range
            .InsertBreak
            .InsertFile FileName:="C:UsersAZIDocumentsSchnellbaustein MUP Fertig.docx"
        End With
    End If
    If MVT.Value = True Then
        With ActiveDocument.Bookmarks("InsertPoint").Range
            .InsertBreak
            .InsertFile FileName:="C:UsersAZIDocumentsSchnellbaustein MVT Fertig.docx"
        End With
    End If
    If MVK.Value = True Then
        With ActiveDocument.Bookmarks("InsertPoint").Range
            .InsertBreak
            .InsertFile FileName:="C:UsersAZIDocumentsSchnellbaustein MVK Fertig.docx"
        End With
    End If
End Sub