Duda con macro!
Hola, soy nuevo en macros y no tengo mucho conocimiento de la sintaxis de VBA, pues algunas cosas que se de VB las he intentado implementar pero no funcionan; te cuento mi asunto, tengo un user form que al ingresar datos en un text box, digamos algo a si como la clave de un producto, este que es un numero de 4 dígitos y por lo mismo el textbox debe validar que sean exclusivamente números, esa cadena sirve de referencia para hacer una búsqueda de todos los productos que tengan esa clave, esto se activa por un commandbutton; el resultado de esa búsqueda se debe ver en una hoja de calculo de un nuevo libro B, los datos vienen de dos libros A y C por tal debe buscarlos de ambos; una ves insertados en el nuevo libro, se debe hacer una sumatoria con la columna que tiene los valores (digamos columna C, ya que en la columna A deberá aparecer el nombre o clave del producto y en la B la fecha).
Te paso mi raquítico código para ver si me puedes ayudar; de antemano muchas gracias por tu tiempo y atención.
Cuando ingreso los datos en el textbox, valida que en efecto no haya letras, pero si por error ingreso alguna, me manda un mensaje que dice error y que solo acepta números, cuando pulso aceptar en la caja de dialogo, esta se cierra y escribe el numero 1 dentro del textbox, cosa que quiero evitar que suceda.
Textbox:
Private Sub TextBox1_Change()
letra = Right(TextBox1.Text, 1)
If (letra <> "") Then
If Not (Asc(letra) >= 44 And Asc(letra) <= 57) Then 'Si la letra está entre el 0 y el 9
If (Len(TextBox1.Text) = 1) Then 'Cuando sólo hay 1 letra
TextBox1.Text = ""
TextBox1.Text = MsgBox("SOLO ACEPTA NUMEROS", vbOKOnly, "ERROR")
Else
TextBox1.Text = Left(TextBox1.Text, Len(TextBox1.Text) - 1) 'Cuando hay varias letras, borra el último carácter
End If
End If
End If
If Len(TextBox1.Value) > 4 Then
TextBox1 = MsgBox("SOLO 4 DIGITOS", vbOKOnly, "ERROR")
TextBox1 = Empty
End If
End Sub
Por el momento solo puedo hacer que los datos de un solo libro sean los que me muestre y solo me los envía a la hoja 2 del mismo libro, es aquí donde debe "jalar" los del libro C, a la columna A que seria la clave, B el nombre y el C a la cantidad, hasta el momento es el código que tengo del
commandbutton:
Private Sub CommandButton2_Click()
valorbuscado = Val(TextBox1.Value)
For Each celda In Sheets(1).Range("A2", Range("A65000").End(xlUp))
valorcelda = celda.Value
celdavalor = celda.Address
If valorbuscado = valorcelda Then
Range(celdavalor).Offset(0, 8).Copy
Sheets(2).Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial
ActiveCell.Formula = "=SUM(C:C)"
End If
Next celda
End Sub
Te paso mi raquítico código para ver si me puedes ayudar; de antemano muchas gracias por tu tiempo y atención.
Cuando ingreso los datos en el textbox, valida que en efecto no haya letras, pero si por error ingreso alguna, me manda un mensaje que dice error y que solo acepta números, cuando pulso aceptar en la caja de dialogo, esta se cierra y escribe el numero 1 dentro del textbox, cosa que quiero evitar que suceda.
Textbox:
Private Sub TextBox1_Change()
letra = Right(TextBox1.Text, 1)
If (letra <> "") Then
If Not (Asc(letra) >= 44 And Asc(letra) <= 57) Then 'Si la letra está entre el 0 y el 9
If (Len(TextBox1.Text) = 1) Then 'Cuando sólo hay 1 letra
TextBox1.Text = ""
TextBox1.Text = MsgBox("SOLO ACEPTA NUMEROS", vbOKOnly, "ERROR")
Else
TextBox1.Text = Left(TextBox1.Text, Len(TextBox1.Text) - 1) 'Cuando hay varias letras, borra el último carácter
End If
End If
End If
If Len(TextBox1.Value) > 4 Then
TextBox1 = MsgBox("SOLO 4 DIGITOS", vbOKOnly, "ERROR")
TextBox1 = Empty
End If
End Sub
Por el momento solo puedo hacer que los datos de un solo libro sean los que me muestre y solo me los envía a la hoja 2 del mismo libro, es aquí donde debe "jalar" los del libro C, a la columna A que seria la clave, B el nombre y el C a la cantidad, hasta el momento es el código que tengo del
commandbutton:
Private Sub CommandButton2_Click()
valorbuscado = Val(TextBox1.Value)
For Each celda In Sheets(1).Range("A2", Range("A65000").End(xlUp))
valorcelda = celda.Value
celdavalor = celda.Address
If valorbuscado = valorcelda Then
Range(celdavalor).Offset(0, 8).Copy
Sheets(2).Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial
ActiveCell.Formula = "=SUM(C:C)"
End If
Next celda
End Sub
1 Respuesta
Respuesta de martirola