Permitir realizar una consulta en formulario

Para: Elsa Matilde

Lo que me sucede ahora es que para una consulta el estar las 30 áreas seleccionadas no tengo problema, pero si se da el caso de dejar un área vacía en la hoja1 me marca error, como podría indicar un área que quede vacía en el formulario y al consultar no marque error

Private Sub UserForm_Initialize()
Call alimentaCombos
End Sub

Sub alimentaCombos()
i = 2 'primer fila con datos
While Hoja2.Cells(i, 5) <> ""
For x = 1 To 30
miCtrl = "Area" & x
Me.Controls(miCtrl).AddItem Hoja2.Cells(i, 5)
Next x
i = i + 1
Wend
End Sub

Private Sub Consulta_Click()
Dim i As Integer
Dim final As Integer
For i = 2 To 300
If Hoja1.Cells(i, 1) = "" Then
final = i - 1
Exit For
End If
Next
For i = 2 To final
If Consulta = Hoja1.Cells(i, 1) Then
Area1 = Hoja1.Cells(i, 2)
Area2 = Hoja1.Cells(i, 3)
Area3 = Hoja1.Cells(i, 4)
Area4 = Hoja1.Cells(i, 5)
Area5 = Hoja1.Cells(i, 6)
Area6 = Hoja1.Cells(i, 7)
Area7 = Hoja1.Cells(i, 8)
Area8 = Hoja1.Cells(i, 9)
Area9 = Hoja1.Cells(i, 10)
Area10 = Hoja1.Cells(i, 11)
Area11 = Hoja1.Cells(i, 12)
Area12 = Hoja1.Cells(i, 13)
Area13 = Hoja1.Cells(i, 14)
Area14 = Hoja1.Cells(i, 15)
Area15 = Hoja1.Cells(i, 16)
Area16 = Hoja1.Cells(i, 17)
Area17 = Hoja1.Cells(i, 18)
Area18 = Hoja1.Cells(i, 19)
Area19 = Hoja1.Cells(i, 20)
Area20 = Hoja1.Cells(i, 21)
Area21 = Hoja1.Cells(i, 22)
Area22 = Hoja1.Cells(i, 23)
Area23 = Hoja1.Cells(i, 24)
Area24 = Hoja1.Cells(i, 25)
Area25 = Hoja1.Cells(i, 26)
Area26 = Hoja1.Cells(i, 27)
Area27 = Hoja1.Cells(i, 28)
Area28 = Hoja1.Cells(i, 29)
Area29 = Hoja1.Cells(i, 30)
Area30 = Hoja1.Cells(i, 31)

Exit For
End If
Next
End Sub

Private Sub Modificar_Click()
Dim i As Integer
Dim final As Integer
For i = 2 To 300
If Hoja1.Cells(i, 1) = "" Then
final = i - 1
Exit For
End If
Next
For i = 2 To final
If Tienda = Hoja1.Cells(i, 1) Then
Hoja1.Cells(i, 2) = Area1
Hoja1.Cells(i, 3) = Area2
Hoja1.Cells(i, 4) = Area3
Hoja1.Cells(i, 5) = Area4
Hoja1.Cells(i, 6) = Area5
Hoja1.Cells(i, 7) = Area6
Hoja1.Cells(i, 8) = Area7
Hoja1.Cells(i, 9) = Area8
Hoja1.Cells(i, 10) = Area9
Hoja1.Cells(i, 11) = Area10
Hoja1.Cells(i, 12) = Area11
Hoja1.Cells(i, 13) = Area12
Hoja1.Cells(i, 14) = Area13
Hoja1.Cells(i, 15) = Area14
Hoja1.Cells(i, 16) = Area15
Hoja1.Cells(i, 17) = Area16
Hoja1.Cells(i, 18) = Area17
Hoja1.Cells(i, 19) = Area18
Hoja1.Cells(i, 20) = Area19
Hoja1.Cells(i, 21) = Area20
Hoja1.Cells(i, 22) = Area21
Hoja1.Cells(i, 23) = Area22
Hoja1.Cells(i, 24) = Area23
Hoja1.Cells(i, 25) = Area24
Hoja1.Cells(i, 26) = Area25
Hoja1.Cells(i, 27) = Area26
Hoja1.Cells(i, 28) = Area27
Hoja1.Cells(i, 29) = Area28
Hoja1.Cells(i, 30) = Area29
Hoja1.Cells(i, 31) = Area30
Exit For
End If
Next
End Sub

1 Respuesta

Respuesta
1

Debes contemplar que las celdas no estén vacías:

    If Hoja1.Cells(i, 2) <> "" Then Area1 = Hoja1.Cells(i, 2)
    If Hoja1.Cells(i, 3) <> "" Then Area2 = Hoja1.Cells(i, 3)
    If Hoja1.Cells(i, 4) <> "" Then Area3 = Hoja1.Cells(i, 4)

Otro modo, que de paso contempla posible error de que en las celdas haya datos que no correspondan a la lista, es utilizando la instrucción On Error:

On Error Resume Next
For i = 2 To final
If consulta = Hoja1.Cells(i, 1) Then
    Area1 = Hoja1.Cells(i, 2)
    Area2 = Hoja1.Cells(i, 3)
    Area3 = Hoja1.Cells(i, 4)
    Exit For
End If
Next
On Error GoTo 0
End Sub

Agradezco tu respuesta y funciona correctamente, solo me falta también poder dejar un combobox vació una vez seleccionado desde el formulario, es decir: puedo seleccionar un área pero después si decido que ese combobox quede vació 

Coloca la propiedad Style en 0 en lugar de 2.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas