Un Userform es un formulario diseñado con formato y estructura estándar que facilita la captura, la organización y la edición de la información.
Este userform tiene como finalidad ayudar al usuario a extraer datos de una gran base de datos y poder registrarlo en una nueva tabla. Así se logra una reducción en el tiempo de búsqueda del usuario y el tiempo de registro de datos.
En este caso se cuenta con una lista de artículos que cuenta con los siguientes datos: número de artículo, descripción, precio y stock. En base a esta base de datos se ejecutará la macro. Se crea un botón el cual hará aparecer el formulario.
Este formulario nos ayudará a obtener los datos de la lista de productos. Se hará click en el botón nuevo. Este formulario cuenta con una lista desplegable con la cual el usuario puede seleccionar el artículo deseado. Luego, al hacer click en el botón transferir automáticamente se registrarán los datos del productos a una nueva lista.
(Para mayor visualización de la imagen, hacer click en la misma)
En el archivo adjunto, se detalla la programación.
Extraer un producto de una lista
Elaborado por Rosalia Gomez Alvarez
20/09/2014 a las 12:23 pm
tengo una aplicacion en vba que no eh podido solucionar y necesito ayuda;
tengo dos fechas una inicial y otra final como esta por ejemplo
9/01/2014 seria inicio y 9/30/2014 seria final, lo que deseo es obtener todas las fecha que estan dentro de ese rango de fechas omitiendo el sabado y domingo y ponerlos en un listBox, tengo un ciclo que me saca todas las fechas osea 30 fechas y no es lo que quiero, quisiera que me ayudara le dejare aqui el ciclo que estoy utilizando, gracias de antemano.
Private Sub CommandButton1_Click()
Dim x As Date
For x = DateValue(TextBox1.Text) To DateValue(TextBox2)
ListBox1.AddItem (x)
Next
End Sub
____________________________________
Salida de esto:
9/01/2014
9/02/2014
9/03/2014
9/04/2014
9/05/2014
9/06/2014
9/07/2014
asta el
9/30/2014
----------------------------------------
La salida que busco es:
9/01/2014
9/02/2014
9/03/2014
9/05/2014
9/08/2014
9/09/2014
9/10/2014
9/11/2014
9/12/2014
9/15/2014
9/16/2014
9/17/2014
9/18/2014
9/19/2014
9/22/2014
9/23/2014
9/24/2014
9/25/2014
9/26/2014
9/29/2014
9/30/2014
espero que me halla explicado bien
01/10/2014 a las 1:35 pm
Hola Manuel, necesitas usar la funcion weekday:
For x = DateValue(TextBox1.Text) To DateValue(TextBox2)
If WorksheetFunction.Weekday(x,1)=1 or WorksheetFunction.Weekday(x,1)=7 _ then
Else
ListBox1.AddItem (x)
End if
Next
08/02/2017 a las 11:29 am
Buenas tardes Estimados,
Tengo una base datos de 60 clientes que puedo ingresar mediante un userform que creé y también puedo modificar los ingreso de muy buena manera. Este userform me permite ir a otro userform1, donde extraigo información de la primera base datos para alimentar otra nueva base de datos, pero en este caso se refiere a ventas. De la primera base de datos extraigo sólo el código del cleinte, el nombre del cliente y el nombre del vendedor. El userform1, tiene dos checkbox, 3 combobox, y 4 textbox, 1 botón para agregar las ventas, otro botón para ir a otro userform3 de modificar ventas y el botón salir.
Los dos checkbox están conectados a dos combobox de la siguiente manera:
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
ComboBox2.Enabled = True
CheckBox2.Enabled = False
ComboBox3.Enabled = False
ComboBox4.Enabled = True
cargaCodigo
Else
ComboBox2.Enabled = False
CheckBox2.Enabled = True
ComboBox2.Clear
End If
End Sub
Private Sub CheckBox2_Click()
If CheckBox2.Value = True Then
ComboBox3.Enabled = True
CheckBox1.Enabled = False
ComboBox2.Enabled = False
ComboBox4.Enabled = True
cargaCliente
Else
ComboBox3.Enabled = False
CheckBox1.Enabled = True
ComboBox3.Clear
End If
End Sub
Sub cargaCodigo()
ComboBox2.Clear
Sheets("BASE DE DATOS CLIENTES VINICOLA").Activate
Range("a1").Select
For i = 1 To 100
If ActiveCell.Offset(i, 0).Value "" Then
ComboBox2.AddItem ActiveCell.Offset(i, 0).Value
End If
Next
End Sub
Sub cargaCliente()
ComboBox3.Clear
Sheets("BASE DE DATOS CLIENTES VINICOLA").Activate
Range("C1").Select
For i = 1 To 100
If ActiveCell.Offset(i, 0).Value "" Then
ComboBox3.AddItem ActiveCell.Offset(i, 0).Value
End If
Next
End Sub
Private Sub ComboBox2_Change()
Dim var2 As String
If ComboBox2 = "" Then
Else
CommandButton1.Locked = False
Sheets("BASE DE DATOS CLIENTES VINICOLA").Activate
If ComboBox2 = Empty Then
MsgBox "Para modificar primero seleccione Cliente", vbInformation, "Almacen"
ComboBox2.ListIndex = 0
ComboBox2.SetFocus
End If
var2 = ComboBox2.Column(0)
Cells.Find(What:=ComboBox2.Value, After:=ActiveCell, LookIn:=xlFormulas, lookat:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
If var2 = ActiveCell.Value Then
TextBox1.Value = ActiveCell.Value
TextBox2 = ActiveCell.Offset(0, 1)
TextBox3 = ActiveCell.Offset(0, 2)
'TextBox4 = ActiveCell.Offset(0, 3)
'TextBox5 = ActiveCell.Offset(0, 4)
'TextBox6 = ActiveCell.Offset(0, 5)
'TextBox7 = ActiveCell.Offset(0, 6)
'TextBox8 = ActiveCell.Offset(0, 7)
'TextBox9 = ActiveCell.Offset(0, 8)
'TextBox10 = ActiveCell.Offset(0, 9)
'TextBox11 = ActiveCell.Offset(0, 10)
TextBox2.Locked = False
TextBox3.Locked = False
'TextBox4.Locked = False
'TextBox5.Locked = False
'TextBox6.Locked = False
'TextBox7.Locked = False
'TextBox8.Locked = False
'TextBox9.Locked = False
'TextBox10.Locked = False
'TextBox11.Locked = False
End If
End If
End Sub
Private Sub ComboBox3_Change()
If ComboBox3 = "" Then
Else
CommandButton1.Locked = False
Sheets("BASE DE DATOS CLIENTES VINICOLA").Activate
If ComboBox3 = Empty Then
MsgBox "Para modificar primero seleccione Cliente", vbInformation, "Almacen"
ComboBox3.ListIndex = 0
ComboBox3.SetFocus
End If
var3 = ComboBox3.Column(0)
Cells.Find(What:=ComboBox3.Value, After:=ActiveCell, LookIn:=xlFormulas, lookat:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
If var3 = ActiveCell Then
TextBox3 = ActiveCell
TextBox1 = ActiveCell.Offset(0, -2)
TextBox2 = ActiveCell.Offset(0, -1)
'TextBox4 = ActiveCell.Offset(0, 1)
'TextBox5 = ActiveCell.Offset(0, 3)
'TextBox6 = ActiveCell.Offset(0, 4)
'TextBox7 = ActiveCell.Offset(0, 5)
'TextBox8 = ActiveCell.Offset(0, 6)
'TextBox9 = ActiveCell.Offset(0, 7)
'TextBox10 = ActiveCell.Offset(0, 8)
'TextBox11 = ActiveCell.Offset(0, 9)
TextBox1.Locked = False
TextBox2.Locked = False
'TextBox4.Locked = False
'TextBox5.Locked = False
'TextBox6.Locked = False
'TextBox7.Locked = False
'TextBox8.Locked = False
'TextBox9.Locked = False
'TextBox10.Locked = False
'TextBox11.Locked = False
End If
End If
End Sub
Estos código me han funcionado bien, cargan la información a los textbox1, texbox2, textbox3, dentro de userform1 que es el de ventas.
Luego tengo un tercer combobox y un cuarto textbox4, los cuales deben combinarse para añadir las ventas, ya que este es el único parámetro que se va a modificar en este userform1. La base de datos de las ventas tiene código, nombre del vendedor, y nombre del cliente, a parte tiene los 12 meses del año, todo dispuesto de forma horizontal. Indagando por internet logro asociar el tercer combobox con el 4 textbox, de la siguiente manera:
Private Sub userform_initialize()
CheckBox1.Value = True
'sirve para agregar los datos alineados horizontalmente en un combobox
'ComboBox4.Clear
Sheets("VENTAS").Select
Range("d2").Select
Do While ActiveCell.Value ""
ComboBox4.AddItem ActiveCell
ActiveCell.Offset(0, 1).Select
Loop
End Sub
y logro agregarlo en la casilla correspondiente de cada mes con esta instrucción:
If ComboBox4.Text = "ENERO" Then
Range("D" & Rows.Count).End(xlUp).Offset(1, 0) = TextBox4.Value
End If
If ComboBox4.Text = "FEBRERO" Then
Range("E" & Rows.Count).End(xlUp).Offset(1, 0) = TextBox4.Value
End If
If ComboBox4.Text = "MARZO" Then
Range("F" & Rows.Count).End(xlUp).Offset(1, 0) = TextBox4.Value
End If
If ComboBox4.Text = "ABRIL" Then
Range("G" & Rows.Count).End(xlUp).Offset(1, 0) = TextBox4.Value
End If
If ComboBox4.Text = "MAYO" Then
Range("H" & Rows.Count).End(xlUp).Offset(1, 0) = TextBox4.Value
End If
If ComboBox4.Text = "JUNIO" Then
Range("I" & Rows.Count).End(xlUp).Offset(1, 0) = TextBox4.Value
End If
If ComboBox4.Text = "JULIO" Then
Range("J" & Rows.Count).End(xlUp).Offset(1, 0) = TextBox4.Value
End If
If ComboBox4.Text = "AGOSTO" Then
Range("K" & Rows.Count).End(xlUp).Offset(1, 0) = TextBox4.Value
End If
If ComboBox4.Text = "SEPTIEMBRE" Then
Range("L" & Rows.Count).End(xlUp).Offset(1, 0) = TextBox4.Value
End If
If ComboBox4.Text = "OCTUBRE" Then
Range("M" & Rows.Count).End(xlUp).Offset(1, 0) = TextBox4.Value
End If
If ComboBox4.Text = "NOVIEMBRE" Then
Range("N" & Rows.Count).End(xlUp).Offset(1, 0) = TextBox4.Value
End If
If ComboBox4.Text = "DICIEMBRE" Then
Range("O" & Rows.Count).End(xlUp).Offset(1, 0) = TextBox4.Value
End If
Lo que veo, es que debería agregar por mes o solamente agregaría el primer mes y los demás meses lo haría por modificación en el userform3.
Las preguntas son las siguientes, ¿Cómo puedo de otra manera enlazar el combobox3 al textbox4 para que pueda moverse en la matriz D2:O60, D2 es donde comienza Enero y O60 es donde termina DICIEMBRE, esto si quisiera ingresar de alguna forma algún de otro mes sin que fuera de manera consecutiva, es decir, que cargue primero enero, febrero, etc., sino, que pueda ingresar cualquier dato en el mes que corresponda y enlazado con la ubicación de los textbox1, texbox2, textbox3, porque si esa información se carga en la celda 10, y quiero ingresar las ventas de diciembre, pueda marcar el combobox3 y el textbox4 y que cargue en la celda D10 que corresponde con los datos de los 3 primero textbox?
La segunda pregunta es: ¿Cómo puedo modificar sólo las ventas y que quede enlazado con los datos ya cargados en las celdas de código, cliente y vendedor, es decir, elijo el código que se encuentra en la celda 25 y quiero modificar las ventas del mes de marzo, y marzo está en la columna E, requiero que se pueda modificar simplemente ese valor E10, poder hacer esto desde el userform3?
Espero puedan ayudarme,
Muchas Gracias.
Saludos Cordiales!!!
03/03/2017 a las 10:46 am
hola necesito hacer un programa que me saque de una lista todo lo que tengo en 0 y me lo arroje en un listBox.
por ejemplo tengo esto :
tuercas 12
tornillos 0
pijas 0
desarmadores 2
por ejemplo de esa lista que lo que esta en 0 me lo arroje en un listBox
ojala puedas ayudarme...
07/06/2017 a las 1:23 pm
Hola buenas tardes necesito ayuda; tengo un VBA y necesito su ayuda; quiero sacar la cantidad de productos que se vendió por fechas fecha inicio y fecha final y que al seleccionar el producto me arroje la cantidad entre esas fechas