2016-11-22 2 views
1

J'ai le code suivant et j'ai du mal à entrer les données de mon userform dans un fichier Excel que mon code ouvrira. J'ai essayé de mettre en codage ce qui permet au code de continuer une fois que j'ai cliqué sur soumettre sur mon userform, mais qu'il ne perde pas les données ou ne les saisit simplement pas dans le fichier Excel que j'ai sélectionné. Cela ne me permet donc pas de copier les données nécessaires d'Excel dans mon fichier de mots.Comment puis-je utiliser les données d'entrée d'un formulaire utilisateur pour être inséré plus tard dans un fichier Excel que mon code va ouvrir

Sub Data() 

    UserForm1.Show 'show the userform 

    Dim exl As Object 'exl ist der Verweis auf Excel 
    Dim oExl As Object 

    Dim ImportDatei As Variant 


    Set exl = CreateObject("excel.application") 
    ImportDatei = exl.Application.GetOpenFilename(FileFilter:="Microsoft Excel-Dateien (*.xlsm), *.xlsm", Title:="Eine Datei auswählen") 'ab exl. wir der Excel Befehl angefügt 
    If ImportDatei = False Then Exit Sub 


    exl.Workbooks.Open (ImportDatei) 
    exl.Visible = True 

    'Input data into the excel field 
    exl.Range("C1").Select 'Select the cell 
    exl.ActiveCell.FormulaR1C1 = TextBox1 'Insert the input Value in the cell 
    exl.ActiveSheet.Range("$A$5:$D$65").AutoFilter Field:=1, Criteria1:="<>" ' Filtern 


    ' Product (variante) copy and formating 
    exl.Range("A1:A1").Copy 
     Selection.PasteAndFormat (wdFormatPlainText) 
     Selection.MoveUp Unit:=wdLine, Count:=1, Extend:=wdExtend 
     Selection.Style = ActiveDocument.Styles("Heading 2") 
     Selection.MoveDown Unit:=wdLine, Count:=1 
     Selection.InsertBreak Type:=wdLineBreak 'Insert line space 

    ' Copy other relevant info 
    exl.Range("A5:A7").Copy 
     Selection.PasteAndFormat (wdFormatPlainText) 
     Selection.InsertBreak Type:=wdLineBreak 

    'Copy table 
    exl.Range("A8:D79").Copy 
     Selection.Paste 
     Selection.InsertBreak Type:=wdLineBreak 
     Selection.InsertBreak Type:=wdLineBreak 
End Sub 
+0

Supprimé ma réponse car il ne fonctionnait pas pour vous, malheureusement, je serai occupé pour le reste de la semaine, donc incapable de vous aider plus loin, des excuses. –

Répondre

0

Sans voir la forme de code, je dirais:

Vous perdez les variables enregistrées à partir de cette forme parce que, comme une sous ou fonction que les déclarations et les cessions effectuées en son sein ne sont enregistrées localement.

Par exemple, si ce code est dans votre formulaire:

Input_Button_Click() 

Dim This_String As String 
This_string = Textbox1.Value 

End Sub 

Et une autre Sub, même si son dans le même module serait:

Sub Show_Box_Text() 

MsgBox This_String 

End Sub 

montreraient un messagebox vide.

C'est parce que This_String n'est disponible que dans le cadre de la Userform, Sub ou Function dans laquelle il est déclaré.

Solution1: Appeler un autre sous à partir de la forme-code avec arguments de la forme comme:

Input_Button_Click() 

Dim This_String As String 
This_string = Textbox1.Value 
Call Show_Text_Box(This_String) 'calls another sub or fucntion with argument This_String 

End Sub 

Sub Show_Box_Text (This_String as String) 
'now requires to be called with 1 argument of type String, 
'wich it will, for the duration of this sub refer to as This_String 
'name in the calling sub doesnt need to match This_String 
MsgBox This_String 

End Sub 

affiche une zone de texte avec le droit de la valeur ou:

Solution2 : Marque public Variables par put;

Public This_String as String 'now publicly available 

Dans le code

Wich peut alors être affecté partout dans le classeur/document "Cahier" ou "document" en faisant:

Input_Button_Click() 

Thisworkbook.This_String = Textbox1.Value 

End Sub 

Sub Show_Box_Text() 

MsgBox Thisworkbook.This_String 

End Sub 

Ce sont OMI les solutions easyest à votre problème.

+0

Salut, j'ai essayé d'ajouter ces changements dans mon code mais ça ne marche pas. J'ai téléchargé mon code ici pourriez-vous me montrer où ces modifications entreraient dans mon code? – Max

+0

Private Sub Capturedata_Click() Thisworkbook.This_String = Textbox1.value End Sub Private Sub UserForm_Click() MsgBox Thisworkbook.This_String End Sub – Max

+0

J'ai essayé ce code, mais il n'a pas fonctionné pour une raison quelconque. – Max