2016-11-23 5 views
2

Ich versuche, eine Schleife zu erstellen, um einige "TextBox" zu aktualisieren, die bereits in Userform erstellt wurden. Das Problem ist, dass, wenn ich die Zeile LinkFor Next Loop mit Funktionsfehler

   For y = 2 * (3 + k) To 2 * (3 + k) 

Mit

For k = 0 To 7 

ich einen Mismatch Fehler. Aber wenn ich y = 6 definiere, läuft alles gut.

Können Sie mir helfen?

Bitte finden Sie unten den gesamten Code:

Sub Update_TextBox_Preco() 

    Dim k As Double 
    Dim myarray2 As Variant 
    Dim y As Double 
    Dim Textbox As String 
    Dim Textbox_1 As String 
    Dim line As Variant 

    Array with contained TextBox names 
     myarray2 = Array("TextBox_Moeda_Atual", "TextBox_Medida_Atual", "TextBox_Acond_Atual", "TextBox_Lote_Atual", _ 
        "TextBox_Incoterm_Atual", "TextBox_p_liq_atual", "TextBox_encargo_atual", "TextBox_Frete_Atual") 

    For k = 0 To 7 
    Textbox = myarray2(k) 
       For y = 2 * (3 + k) To 2 * (3 + k) 
       UserForm1.Controls(Textbox).Value = Worksheets("PANEL").Cells(y, 45).Value 
       Next y 
    Next k 

    End Sub 
+1

Ich habe gerade versucht und habe keinen Fehler bekommen, wo ist der Fehler passiert? Ihre zweite Schleife produziert nur 6,8,10,12,14,16,18 und 20, also warum nicht eine Variable y haben, beginnend bei 6 jedes Mal um 2 inkrementieren? –

+0

@Nathan_Sav Die Schleife/Sequenz, die einen Fehler gibt, ist der 'For y = 2 * (3 + k) bis 2 * (3 + k)', der für For 'k = 0 bis 7' verknüpft ist. Aber wenn ich zum Beispiel 'Für y = 6 bis 6 'setze, geht es normal. –

+2

Sie sollten wahrscheinlich 'Dim'' k' und 'y' als' Long' anstelle von 'Double' verwenden. Es kann zu Rundungsfehlern kommen? – bobajob

Antwort

1

Nur der y Schleife loszuwerden. Es löst nur einmal aus, also setzen Sie einfach y jedes Mal, wenn Sie durch die k Schleife gehen.

Sub Update_TextBox_Preco() 

Dim k As Long 
Dim myarray2 As Variant 
Dim y As Long 
Dim TextBoxUp As String 
Dim Textbox_1 As String 
Dim line As Variant 

'Array with contained TextBox names 
    myarray2 = Array("TextBox_Moeda_Atual", "TextBox_Medida_Atual", "TextBox_Acond_Atual", "TextBox_Lote_Atual", _ 
       "TextBox_Incoterm_Atual", "TextBox_p_liq_atual", "TextBox_encargo_atual", "TextBox_Frete_Atual") 

For k = 0 To 7 
    TextBoxUp = myarray2(k) 
    y = 2 * (3 + k) 
    UserForm1.Controls(TextBoxUp).Value = Worksheets("PANEL").Cells(y, 45).Value 
Next k 

End Sub 
+1

Wenn dies für Sie funktioniert, akzeptieren Sie bitte ein grünes Häkchen. – Chrismas007

+0

der Fehler besteht immer noch, aber wenn ich das "k" von "y = 2 * (3 + k)" als "y = 2 * 3" weglassen, geht es gut. –

+1

@Petter_Mendes Ich habe diesen Code genau kopiert und eingefügt und bis zur Zeile 'UserForm1.Controls' keinen Fehler bekommen (weil ich Ihre Textfelder natürlich nicht erstellt habe). Ich hatte keinen Fehler bei Typ Mismatch. – Chrismas007