Alor de un textbox a una celda de una hoja excel

Buenos días, estoy desarrollando un programa con varios userform. En uno de ellos tengo dos ComboBox y un TextBox, lo que quiero hacer es que en función de lo que este escrito en los dos combobox, me copie el valor del textbox en una celda. El textbox tiene que ser un numero. Ejemplo:
        En el primer ComboBox he seleccionado la opción condensadores (como tipo de material) de una lista de 3 opciones.
        En el segundo ComboBox he seleccionado el de 100 uF (modelo de condensador)
Lo que quiero es copiar el numero de condensadores de ese tipo que tengo, y que lo he escrito en el textbox a una celda, en la que registro, la entrada de materiales. Es decir sumar el valor del textbox al valor que tenia esa celda.

1 respuesta

Respuesta
1
Ya... después e todo lo que has dicho solo me queda claro una cosa, deseas sumar el valor del texbox a una celda. ¿Pero a que celda?
Esta es la programación del UserForm en el que elijo el tipo de material, y dentro de cada tipo de material el modelo. Mediante dos ComboBox conectados.
Dim a, b
Private Sub Material_Change()
Select Case Material.ListIndex
Case 0
b = "Datos!E9:E17"
Modelo.RowSource = b
Case 1
b = "Datos!E23:E31"
Modelo.RowSource = b
Case 2
b = "Datos!E37:E38"
Modelo.RowSource = b
End Select
End Sub
En ese mismo Userform tengo un TextBox en el cual mi intención es poner el numero de unidades del material y modelo seleccionado. Para lo cual he creado un botón de carga.
Este botón me lleva a otro UserForm que me pide una confirmación. " Si estoy seguro de realizar la acción"
Private Sub Cargar_Click()
Load Confirmacion
Confirmacion.Show
End Sub
En el que aparecen 2 botones SI y NO, para aceptar la carga de datos o volver atras.
Private Sub Aceptar_Click()
Insertar_datos
End Sub
Sub Insertar_datos()
End Sub
Lo que quiero es copiar el valor del TextBox en una celda que estará en función del material y el modelo escogidos mediante los ComboBox.
Ejemplo:
 Combobox1   Combobox2             TextBox         Hoja
     Case 1           Case1                     D9               Datos
     Case 1           Case 2                    D10             Datos
Lo que quiero es algo así, puesto a modo de ejemplo, aunque ya se que es una chapuza, je je.
Sub Insertar_datos()
If ComboBox1 = Case1 & ComboBox2 = Case1 Then
Sheet(DATOS).Range("D9") = Sheet(DATOS).Range("D9") + TextBox3.Value
ElseIf ComboBox1 = Case1 & ComboBox2 = Case2 Then
Sheet(DATOS).Range("D10") = Sheet(DATOS).Range("D10") + TextBox3.Value
Else
Sheet(DATOS).Range("D11") = Sheet(DATOS).Range("D11") + TextBox3.Value
End If
End Sub
y que problemas tienes con el sub Sub Insertar_datos()
¿Acaso no inserta el valor del text en la celda?
Me pone que no se ha definido sub o función
ya veo, mira lo que peudes hacer es lo sgte
en el sub Sub Insertar_datos()
primero toma el foco de la hoja DATOS
Sheets(Datos).select
luego para modificar el rango utiliza la forma
Datos.Range("D9")=Datos.Range("D9") + TextBox3.Value
Ahora ya no me da ese problema, pero no me carga los datos. Yo creo que puede ser porque los combobox los tengo en otro userform, ¿cómo puedo llamarles en este?
Sub Insertar_datos()
If ComboBox1 = Case1 & ComboBox2 = Case1 Then
Sheets(MATERIAL).Select
MATERIAL.Range("D9") = MATERIAL.Range("D9") + TextBox3.Value
ElseIf ComboBox1 = Case1 & ComboBox2 = Case2 Then
MATERIAL.Range("D10") = MATERIAL.Range("D10") + TextBox3.Value
Else
MsgBox ("Tiene que escoger una opcion valida")
End If
End Sub
Otra pregunta, ComboBox1 = Case1 para decir que se ha escogido el caso 1 del combobox es correcto o tendria que ser algo como ComboBox.ListIndex (0)
indicale al sub en donde esta el control
If formulario1.ComboBox1 = Case1 and formulario2.ComboBox2 = Case1 Then
Respecto a lo segundo lo correcto es ComboBox. ListIndex (0)
Muchas gracias, he corregido y parece que la cosa avanza, y empiezo a ver la luz. Ahora tengo este descripción de Insertar_datos()
Sub Insertar_datos()
    If UserForm1.ComboBox1 = Case0 & UserForm1.ComboBox2 = Case0 Then
        Sheets("MATERIAL").Select
        MATERIAL.Range("D9") = MATERIAL.Range("D9") + UserForm1.TextBox3.Value
        MsgBox ("La operacion se ha realizado correctamente")
    ElseIf UserForm1.ComboBox1 = Case0 & UserForm1.ComboBox2 = Case1 Then
        Sheets("MATERIAL").Select
        MATERIAL.Range("D10") = MATERIAL.Range("D10") + UserForm1.TextBox3.Value
        MsgBox ("La operacion se ha realizado correctamente")
    ElseIf UserForm1.ComboBox1 = Case0 & UserForm1.ComboBox2 = Case2 Then
        Sheets("MATERIAL").Select
        MATERIAL.Range("D11") = MATERIAL.Range("D11") + UserForm1.TextBox3.Value
        MsgBox ("La operacion se ha realizado correctamente")
    ElseIf UserForm1.ComboBox1 = Case0 & UserForm1.ComboBox2 = Case3 Then
        Sheets("MATERIAL").Select
        MATERIAL.Range("D12") = MATERIAL.Range("D12") + UserForm1.TextBox3.Value
        MsgBox ("La operacion se ha realizado correctamente")
    Else
        MsgBox ("No ha elegido una opcion valida")
    End If
End Sub
Me da el error 424 en tiempo de ejecución, se requiere un objeto. En la linea que esta en negrita
ya, veamos... ¿mira lo que pasa es que tu has modificado el nombre de la hoja
que tiene que ver eso? Dirás tu, y claro si bien es cierto Excel nos permite modificar el nombre de las hojas... para excel siempre la Hoja1 seguirá siendo Hoja1 tenga el nombre que tenga, en la linea que te reclama es por que sencillamente excel no conoce la hoja MATERIAL para excel seguirá siendo o la hoja1 o la 2 o la que sea que haya sido originalmente
si bien es cierto se permite activar o sleccionar las hojas por su nombre o indice
en esa operación (l que te marca) específicamente es necesario indicarle de la siguiente manera:
   ActiveSheet.Range("D9") = ActiveSheet.Range("D9") + UserForm1.TextBox3.Value
si ya antes utilizas Sheets("MATERIAL").Select
para selecionar la hoja, pues estando alli ya debes indicarle a excel que lo sgte que hara sera en la hoja activa , y eso lo haces mediante  ActiveSheet
Gracias Calvuch, me estas ayudando mucho. Ya me graba el valor de TextBox en la celda, pero el problema que tengo ahora es que escoja la opción que escoja el valor me lo graba siempre en la celda D9 de la hoja datos. Es decir el if no me funciona bien.
Sub Insertar_datos()
    If UserForm1.ComboBox1 = Case0 & UserForm1.ComboBox2 = Case0 Then
        Sheets("DATOS").Range("D9") = Sheets("DATOS").Range("D9") + UserForm1.TextBox3.Value
        UserForm3.Hide
        MsgBox ("La operacion se ha realizado correctamente")
    ElseIf UserForm1.ComboBox1 = Case0 & UserForm1.ComboBox2 = Case1 Then
        Sheets("DATOS").Range("D10") = Sheets("DATOS").Range("D10") + UserForm1.TextBox3.Value
        UserForm3.Hide
        MsgBox ("La operacion se ha realizado correctamente")
    ElseIf UserForm1.ComboBox1 = Case0 & UserForm1.ComboBox2 = Case2 Then
        Sheets("DATOS").Range("D11") = Sheets("DATOS").Range("D11") + UserForm1.TextBox3.Value
        UserForm3.Hide
        MsgBox ("La operacion se ha realizado correctamente")
    ElseIf UserForm1.ComboBox1 = Case0 & UserForm1.ComboBox2 = Case3 Then
        Sheets("DATOS").Range("D12") = Sheets("DATOS").Range("D12") + UserForm1.TextBox3.Value
        UserForm3.Hide
        MsgBox ("La operacion se ha realizado correctamente")
    Else
        MsgBox ("No ha elegido una opcion valida")
    End If
End Sub
También quería saber como puedo dar formato de numero al textbox yq ue solo sea válido introduir un numero.
He encontrado esta forma de hacerlo, peor no se donde lo tengo que escribir, si dentro del Sub del textbox o donde.
Text1 = Format(Text1, "###,###,###.00")
Un saludo.
Eso ya es otra cosa, empezamos con A y vamos en C, te agradecería que si la respuesta a tu pregunta original fue satisfactoria o no, evalúes y cierres la pregunta, si tienes más preguntas "abres" otra pregunta, esto no es 2 x1!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas