2016-11-23 51 views
2

我想创建一个循环来更新已经在Userform上创建的一些“文本框”。 的问题是,当我连接线对于功能错误的下一个循环

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

随着

For k = 0 To 7 

我得到一个不匹配错误。但是如果我定义y = 6,一切都很好。

你能帮我吗?

请参阅整个代码如下:

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

我刚刚试过,没有收到错误,错误在哪里发生?你的第二个循环只产生6,8,10,12,14,16,18和20,所以为什么不能有一个变量y,从6开始每次递增2? –

+0

@Nathan_Sav给出错误的循环/序列是'For y = 2 *(3 + k)To 2 *(3 + k)',它在For'k = 0 To 7'上链接。但是,如果我设置“对于y = 6到6”,例如,它正常运行。 –

+2

你应该'Dim'' k'和'y'作为'Long'而不是'Double'。可能会发生一些舍入错误? – bobajob

回答

1

刚刚摆脱了y循环。它只触发一次,所以每次移动k循环时只设置y

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

如果这适用于您,请接受绿色复选标记。 – Chrismas007

+0

错误仍然存​​在,但是如果我将'y = 2 *(3 + k)'中的'k'省略为'y = 2 * 3',那么结果会很好。 –

+1

@Petter_Mendes我复制并粘贴了这段代码,直到'UserForm1.Controls'行(因为我显然没有构建文本框)才得到错误。 Type Mismatch没有错误。 – Chrismas007