Combobox txtBox

Un saludo antes de todo, tengo nuevas interrogantes que te menciono a continuación:
1) Una vez creado un comboBox Con una serie serie de nombres introducidos como haría para que al darle click o al seleccionarlo y agregarle un botón de ACEPTAR este se vaya a una hoja de excel y se cree el nombre ejm (Carlos) a raíz de este y al seleccionar cualquier otro nombre (maría) se vaya a la misma libro pero con este nombre
2) Como hago para que al agregar un nombre a un texBox este se vaya al ComboBox que ya he creado, intente realizar uno con el siguiente código ComboBox1.AddItem Text1.Text pero me sale ERROR
3) Y algo que creo que es básico como hago para que al presionar F5 en el USERFORM pueda apretar cualquier celda o cualquier hoja donde este el USERFORM
Me ayudarías bastante si me resolvieras este cinflicto..
Saludos

1 respuesta

Respuesta
1
Entiendo que:
1º Quieres utilizar el Combo de forma editable, quieres introducir un valor en el combo y que te lo añada a tu lista, y si seleccionas uno en el combo que te lo seleccione en la lista.
2º Quieres escribir un valor en un TextBox y que se una a la lista del Combo ( y de tu lista en la hoja claro)
3º Poder actuar sobre las hoja y celdas con el userform ejecutándose
Aclarame si es esto lo que necesitas
>Un saludo
>Julio
PD: Disculpa que sea tan pesado, pero es que muchas veces me realizan preguntas, contesto lo que pienso que es y después salen con otras cosas que no se parecen en nada a su primera consulta (o a lo que yo he creído que era su consulta), y otras veces les contesto y ni se molestan en finalizar la consulta, ni nunca más se ponen en contacto conmigo.
Ante Todo Saludos..
Y correcto eso es lo que quiero.. son tres preguntas que van en el mismo programa que estoy realizando..
P.D: Por si no te haz dado cuenta las veces que consulto es contigo y siempre te puntúo y no dejo nada a medias
Bueno vamos por pasos, voy a suponer que tu lista (la que vas a añadir al Combo) esta en la Hoja1 en la Columna A(1), como vamos a ir añadiendo valores no le podemos decir el fin de la lista se tendrá que actualizar constantemente, en función de los valores que vayamos añadiendo, entonces en la sintaxis del Combo en el Userform ponemos esto:
Private Sub ComboBox1_Change()
Dim c As Range
Dim dato As String
If ComboBox1.Value <> "" Then 'Si el valor del Combo no es blanco (vacio)
dato = Val(ComboBox1. Value) 'Si tus valores son números dejas el Val si no lo quitas
On Error Resume Next 'Prevenimos un error???
Range("A2").Select
Range(ActiveCell, ActiveCell.End(xlDown)).Select 'Seleccionamos todo el rango
Set c = Selection.Find(What:=dato, LookIn:=xlValues, LookAt:=xlWhole) 'Buscamos dato
If Not c Is Nothing Then 'Si la busqueda dió resultado
Selection.Find(What:=dato).Select 'Seleccionamos la celda
Exit Sub 'Finalizamos el codigo del combo
Else       'Si la busqueda no da resultado
Range("A2").Select
ActiveCell.End(xlDown).Offset(1, 0).Select   'Nos posicionamos en la ultima celda vacia
ActiveCell.Value = ComboBox1.Value  'Ponemos el dato en la celda
End If
End If
Set c = Nothing  'Liberamos la variable
End Sub
Vale ya tenemos la función del Combobox editable ahora tenemos que decirle como se va a llenar el Combobox, esto lo ponemos en la instrucción del propio Userform al arrancar:
Private Sub UserForm_Initialize()  'Al inicio del Userform
Sheets("Hoja1").Select
Range("A2").Select
ActiveCell.End(xlDown).Offset(1, 0).Select 'Seleccionamos el rango de carga del Combo
celdaFIN = ActiveCell.Address
ComboBox1.RowSource = "$A$2:" & celdaFIN & "" 'Le pasamos la lista al ComboBox
End Sub
Vale ya tenemos cargado el Combo permanentemente con los valores del rango completo y si añadimos un valor nos modifica el rango a mostrar. Ahora nos queda que el valor que pones en el TextBox se cargue en la lista del ComboBox, para ello utilizremos la propiedad de salida (AfterUpdate)del Textbox porque si utilizamos el de carga (Change) según escribimos nos carga los valores, y si ponemos un 1 pero nuestro valor completo es 10 nos pondrá en la lista del Combo primero un 1 y después un 10 y no nos deja finalizar, para ello lo pasamos a la celda al salir del TextBox, ponemos un dato y cuando salgamos del control a otro el valor del TextBox pasará a la celda con el dato completo, la sintaxis es esta:
Private Sub TextBox1_AfterUpdate()
Sheets("Hoja1").Select
Range("A2").Select
ActiveCell.End(xlDown).Offset(1, 0).Select
ActiveCell.Value = TextBox1.Value
End Sub
Y por último, como poder actuar sobre las hojas del Libro y de las celdas manteniendo el Userform visible(aunque no activo, por supuesto), la forma sería que desde VBA y haciendo click con el derecho en el Userform (no en ningún control) elijas Propiedades y en la columna de la izquierda aparecerá las propiedades del Userform ( si esto lo haces con cualquier control aparecerán sus propiedades) localiza la propiedad ShowModal y la pones con valor False. Cuando inicies el Userform con F5 podrás actuar sobre las celdas y hojas del libro, para volver a poner activo el Userform haces click en él.
¡OJO! Esta propiedad en False suele dar montones de problemas (errores de VBA si no están las macros armadas con mucha perfección) si por ejemplo estas en B1 y por ejemplo la instrucción de un botón es que el valor de un Textbox lo ponga a la izquierda de la celda activa (en A1, en este caso) y tu al moverte por las celdas dejas activa la celda A1 y acto seguido te vas al Userform y pulsas en el botón, te dará error porque a la izquierda de A1 no puede poner ningún valor (y te volverás loco con el código porque el código esta bien, pero lo que no esta bien es la celda activa), para trabajar realizando el código del userform y hacer pruebas esta bien que el valor de la propiedad ShowModal la tengas en false, pero cuando hayas terminado vuelve a ponerla a True para que no se pueda actuar sobre las celdas(es mi consejo, pero cada cual elije).
Si te ha servido comenta, puntúa y finaliza la consulta. Gracias
Si tienes alguna aclaración me la pides.
>Un saludo
>Julio
PD: Si he cometido algún error me disculpas.
<address>
</address><address>
</address>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas