Ayuda con código visual basic (userform)

Gracias por tomarse la molestia de leer mi duda pero ya llevo días y no consigo hacer que funcione.

tengo una hoja en excel 2010 llamada "Captura" con columnas desde "A" hasta "-k-" y las filas son variables debido a que van aumentando conforme se captura desglosando la hoja seria A= Años B=Meses C=si/no D=si/no E=si/no F=si/no G=(aquí los datos son variables) H=si/no I= si/no J=(datos variables) -K-= (datos variables) tengo un botón comandbutton1 con el siguiente código (disculpas por el código pero apenas estoy aprendiendo visual basic):

Private Sub CommandButton1_Click() ' ((ELIMINAR CAPTURA))
Dim response As VbMsgBoxResult
Application.ScreenUpdating = True
response = MsgBox("SE EDITARÁN LOS ÚLTIMOS DATOS CAPTURADOS" & vbCrLf & "ESTOS DATOS SE ELIMINARÁN DE LA HOJA (CAPTURA)" & vbCrLf & "POR LO QUE, ASEGURATE DE VOLVER A VACIAR LOS DATOS!", vbQuestion + vbYesNo, "EDITAR DATOS")
If response = vbNo Then
TextBox1.SetFocus
Exit Sub
Else
Sheets("CAPTURA").Select ' inicio de la instrucción del textbox1
Range("a4").Select
Selection.End(xlDown).Select
If ActiveCell <> 0 Then
TextBox1 = ActiveCell
ActiveCell.Offset(0, 2).Select
If ActiveCell = "m" Then
OptionButton1 = True
Else
If ActiveCell = "f" Then
OptionButton2 = True
End If
End If
ActiveCell.Offset(0, 1).Select
If ActiveCell = "si" Then
OptionButton3 = True
Else
If ActiveCell = "no" Then
OptionButton4 = True
End If
End If
ActiveCell.Offset(0, 1).Select
If ActiveCell = "si" Then
OptionButton5 = True
Else
If ActiveCell = "no" Then
OptionButton6 = True
End If
End If
ActiveCell.Offset(0, 1).Select
If ActiveCell = "si" Then
OptionButton7 = True
Else
If ActiveCell = "no" Then
OptionButton8 = True
End If
End If
ActiveCell.Offset(0, 3).Select
If ActiveCell = "si" Then
CheckBox1 = True
End If
ActiveCell.Offset(0, -2).Select
ComboBox1 = ActiveCell
ActiveCell.Offset(0, 3).Select
ComboBox2 = ActiveCell
ActiveCell.Offset(0, 1).Select
ComboBox3
= ActiveCell ' <------- hasta aquí hace lo que necesito pero apartir
de la siguiente instrucción No lo hace cosa que en el código del
Textbox2 si lo hace.
With Range("a4").CurrentRegion
.Rows(.Rows.Count).ClearContents
End With
Sheets("CAPTURA").Select
Range("A1200").End(xlUp).Offset(1, 0).Select
TextBox1.SetFocus
End If ' fin de la instrucción textbox1
If ActiveCell = 0 Then ' pero si la celda activa es igual a "Cero" entonces; (Textbox2)
ActiveCell.Offset(0, 1).Select
TextBox2 = ActiveCell
ActiveCell.Offset(0, 1).Select
If ActiveCell = "m" Then
OptionButton1 = True
Else
If ActiveCell = "f" Then
OptionButton2 = True
End If
End If
ActiveCell.Offset(0, 1).Select
If ActiveCell = "si" Then
OptionButton3 = True
Else
If ActiveCell = "no" Then
OptionButton4 = True
End If
End If
ActiveCell.Offset(0, 1).Select
If ActiveCell = "si" Then
OptionButton5 = True
Else
If ActiveCell = "no" Then
OptionButton6 = True
End If
End If
ActiveCell.Offset(0, 1).Select
If ActiveCell = "si" Then
OptionButton7 = True
Else
If ActiveCell = "no" Then
OptionButton8 = True
End If
End If
ActiveCell.Offset(0, 1).Select
ComboBox1 = ActiveCell
ActiveCell.Offset(0, 2).Select
If ActiveCell = "si" Then
CheckBox1 = True
End If
ActiveCell.Offset(0, 1).Select
ComboBox2 = ActiveCell
ActiveCell.Offset(0, 1).Select
ComboBox3 = ActiveCell
With Range("a4").CurrentRegion
.Rows(.Rows.Count).ClearContents
End With
Sheets("CAPTURA").Select
Range("A1200").End(xlUp).Offset(1, 0).Select
TextBox1.SetFocus
End If
End If
End Sub

No trae los datos completos cuando es el textbox1 ya probé y hace todo hasta donde tiene los comentarios.

1

1 respuesta

Respuesta
1

En alguna parte del código para el textbox1 te volvés 2 celdas hacia la izquierda, cosa que no pasa en el otro textbox y seguramente ahí te quedás mal posicionado:

ActiveCell.Offset(0, -2).Select
ComboBox1 = ActiveCell

Te recuerdo que CurrentRegion es hasta la primer intersección de celdas vacías...

Por lo demás el código parece correcto, pero si deseas mejorarlo, te recomiendo mi manual de Programación...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas