2016-03-20 8 views
0

Ich versuche, ein dynamisches Benutzerformular in einem Worddokument zu erstellen, das ein ActiveX-Optionsfeld mit einem generischen Namen erstellt und das erstellte Optionsfeld dann umbenennt, um es eine bestimmte Anzahl basieren zu lassen an seinem Ort in der Form.ActiveX-Komponenten-Namenseigenschaften dynamisch ändern in Word

Bis jetzt glaube ich, dass ich alle Komponenten habe, um den Code zu schreiben, weil ich in der Lage bin, die Schaltfläche zu erstellen. Ich erstelle den Knopf, indem ich VBA benutze, um einen schnellen Teil zu importieren, der den Radioknopf mit einem definierten radioButtonX Namen hat, und ich bin in der Lage, die Namenseigenschaft dieses Radiobuttons zum radioButton1 zum Beispiel zu ändern. Das Problem, auf das ich stoße, ist, dass mein Code den schnellen Teil mit dem generischen radioButtonX-Namen einfügt und dann den Radio-Button-Namen nicht ändert, weil er besagt, dass radioButtonX nicht existiert. Ich kann jedoch den zweiten Teil des Codes manuell ausführen, nachdem radioButtonX eingefügt wurde, und ich bin in der Lage, den Namen des Optionsfelds erfolgreich zu ändern und mir das Endergebnis zu geben, nach dem ich in zwei separaten Schritten suche.

Ich bin ein Autodidakt VBA Scripter für das letzte Jahr, so bin ich weit von einem Experten bei der Codierung. Einige der Strategien, die ich gemacht habe, so waren weit:

  • Put in wartet (denken, dass das Skript pausiert das Skript Zeit geben würde, die neue Radio-Button zu erkennen)
  • Getrennt den Code in verschiedene U-Boote mit einem Sub erstellen Sie den Radio-Button und rufen Sie dann ein Sub, um den Namen zu ändern (in der Hoffnung, dies würde VBA aktualisieren)
  • Der Code in verschiedene Module mit einem Modul getrennt erstellen Sie den Radio-Button und rufen Sie dann eine Module, um den Namen zu ändern (in der Hoffnung dies würde VBA aktualisieren)

Ich habe auf Ratschläge, Strategien oder Beispielcodes gehofft, die ich verwenden kann, damit VBA den neuen Optionsschalter erkennt, den ich eingefügt habe, während der Code ausgeführt wurde. Ein anderer Gedanke, den ich hatte, war vielleicht, dass es einen Befehl gibt, der VBA sein Wissen über Variablen auffrischen lässt, aber ich habe kein Glück, in meinen Websuchen bis zu diesem Punkt so etwas zu finden.

+2

Es wird sehr schwer sein, dies zu beantworten, ohne Ihren Code zu sehen. Könnten Sie Ihre Frage bearbeiten, um sie einzuschließen (genauer gesagt, den Teil, wo Sie den Radio-Button erstellen und hinzufügen). – Ambie

Antwort

0

Ich habe versucht, den Code, an dem ich arbeitete, zu vereinfachen und den Code herauszunehmen, der die Funktion ausführen würde, die ich anforderte. Das Ausführen des einfacheren Codes war erfolgreich und unten aufgeführt.

Private Sub AddRadioButton() 
    Selection.TypeText Text:="TestRadioButton" 
    Selection.Range.InsertAutoText 
    ActiveWindow.View.ShowXMLMarkup = wdToggle 

    ChangeButtonName 
End Sub 

Private Sub ChangeButtonName() 
    ThisDocument.radioButtonX.Name = "radioButton1" 
End Sub 

Für dieses Skript arbeiten Sie einen schnellen Teil oder ein Optionsfeld erstellen müssen, die TestRadioButton gestattet. Ich denke, jetzt muss das Root-Problem mit dem Timing zu tun haben, das aussah, als ob es nicht funktionierte, weil das Skript, von dem dieser Code kam, einen schnellen Teil mit mehreren generischen Optionsfeldern verwendet, damit das Skript die neuen Optionsfelder nicht erkennt während dem Rennen.