Encontrar el primer TextBox vacío en UserForm, Excel 2013

Necesito extraer tres datos desde un libro Excel llamado Ventas Realizadas, y mostrarlos en un UserForm de otro libro llamado Carilla de Ventas. Desde Carilla de Ventas, llamo al libro Ventas Realizadas y exploro la hoja1, hasta encontrar la fila que contiene los datos que necesito. Luego, en el UserForm, debo alojar los datos en los TextBox12, 13 y 14. Lo que no puedo lograr es que busque los siguientes textbox vacíos, o sea 15, 16 y 16 y así sucesivamente. Agradezco cualquier ayuda! La fracción de código es este:

Private Sub CommandButton1_Click()

Application.ScreenUpdating = False

Dim l1 As Object

Dim l2 As Object
Dim lastrow, i, j, k As Integer
Dim legajo As String
Dim fecha As Date
Dim cod_comercio As Integer

legajo = TextBox1

If TextBox6 = "01" Then
legajo = Right(TextBox1, 6)
End If
fecha = TextBox3
cod_comercio = TextBox4

Set l1 = ThisWorkbook

Set l2 = Workbooks.Open("N:\Bases\Base de Ventas\Ventas Realizadas.xlsm", ReadOnly:=True, Notify:=False)
j = 12
lastrow = Cells(100000, 2).End(xlUp).Row
For i = 2 To lastrow
If legajo = Cells(i, 2) Then
If l2.Sheets("Hoja1").Cells(i, 1) >= fecha Then 'si es igual o mayor que la fecha
If l2.Sheets("Hoja1").Cells(i, 5) = cod_comercio Then 'si es igual al código del comercio
If l2.Sheets("Hoja1").Cells(i, 9) = "Bapro" Then ' si es igual a "recibo"
'******** Aquí es donde tengo el conflicto
If Controls("TextBox" & j) = "" Then
Controls("TextBox" & j) = l2.Sheets("Hoja1").Cells(i, 1) 'Fecha
j = j + 1
Controls("TextBox" & j) = l2.Sheets("Hoja1").Cells(i, 7) 'Cuotas
j = j + 1
Controls("TextBox" & j) = l2.Sheets("Hoja1").Cells(i, 8) 'Importe
Else
j = j + 1
Controls("TextBox" & j) = l2.Sheets("Hoja1").Cells(i, 1) 'Fecha
j = j + 1
Controls("TextBox" & j) = l2.Sheets("Hoja1").Cells(i, 7) 'Cuotas
j = j + 1
Controls("TextBox" & j) = l2.Sheets("Hoja1").Cells(i, 8) 'Importe
j = j + 1

2 respuestas

Respuesta
1

Así quedaría, no sé cuántos textbox tienes, le puse hasta 42, cambia ese número por el último textbox que tienes para recibir la fecha, por ejemplo, como vas de 3 en 3 textbox, el 12 es el primero con fecha, el 15 el segundo, el 18 el tercero, el 21 el cuarto, el 25 el último, cambia el 42 por el 25.

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim l1 As Object
Dim l2 As Object
Dim lastrow, i, j, k As Integer
Dim legajo As String
Dim fecha As Date
Dim cod_comercio As Integer
legajo = TextBox1
If TextBox6 = "01" Then
    legajo = Right(TextBox1, 6)
End If
fecha = TextBox3
cod_comercio = TextBox4
Set l1 = ThisWorkbook
Set l2 = Workbooks.Open("N:\Bases\Base de Ventas\Ventas Realizadas.xlsm", ReadOnly:=True, Notify:=False)
j = 12
lastrow = Cells(100000, 2).End(xlUp).Row
'
For i = 2 To lastrow
    If legajo = Cells(i, 2) Then
        hojafe = l2.Sheets("Hoja1").Cells(i, 1)
        If l2.Sheets("Hoja1").Cells(i, 1) >= fecha Then 'si es igual o mayor que la fecha
            If l2.Sheets("Hoja1").Cells(i, 5) = cod_comercio Then 'si es igual al código del comercio
                If l2.Sheets("Hoja1").Cells(i, 9) = "Bapro" Then ' si es igual a "recibo"
                    '******** Aquí es donde tengo el conflicto
                    For j = 12 To 42
                        If Controls("TextBox" & j) = "" Then
                            Controls("TextBox" & j) = l2.Sheets("Hoja1").Cells(i, 1) 'Fecha
                            Controls("TextBox" & j + 1) = l2.Sheets("Hoja1").Cells(i, 7) 'Cuotas
                            Controls("TextBox" & j + 2) = l2.Sheets("Hoja1").Cells(i, 8) 'Importe
                            Exit For
                        End If
                    Next
                End If
            End If
        End If
    End If
Next
End Sub

Saludos.Dante Amor

Respuesta
1

Coloca estas líneas a partir de tu nota '****

'******** Aquí es donde tengo el conflictototx = 20  'AQUÍ LA CANTIDAD DE TEXTBOXFor j = 12 To totxIf Controls("TextBox" & j) = "" Then    Controls("TextBox" & j) = l2.Sheets("Hoja1").Cells(i, 1) 'Fecha    Controls("TextBox" & j + 1) = l2.Sheets("Hoja1").Cells(i, 7) 'Cuotas    Controls("TextBox" & j + 2) = l2.Sheets("Hoja1").Cells(i, 8) 'Importe    Exit ForEnd IfNext j'AQUI SIGUE TU CODIGO PARA LA SIGUIENTE FILA DE HOJA1

En la variable 'totx' coloca el nro del máx textbox-2, es decir si son 20 aquí sería 18. Esto porque completas 3 textbox x cada línea.

Armala, probala y comentame.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas