useform para capturar

polboy_mx

New Member
Joined
Oct 7, 2004
Messages
33
hola a todos tengo esta hoja donde deseo crear un USEFORM con varios COMBOBOX para ingresar los datos en la misma hoja, uso un "rango" en ROWSOURCE para jalar los datos a seleccionar pero me falta el detalle de como hacer para que "caigan" en la ultima linea de los registros, seria al final del USEFORM on COMMAND BUTTON donde acepte la entrada o pudiera regresar para corregir y generar un USEFORM en blanco
 

Excel Facts

How to create a cell-sized chart?
Tiny charts, called Sparklines, were added to Excel 2010. Look for Sparklines on the Insert tab.
la hoja
PRODUCTOS X CLIENTE v 1.01 MAYO 2006.xls
ABCDEFGH
1
2
3IDNOMBRECLIENTEPRODUCTOCANTMN.DLS.DATEFACT
4
50221MANUFACTURERADEROPASALTANI,S.A.DEC.V.ADHESIVATRANSTHERM1.93X1.50BC/I2TCOPPEL[2,000]7.535.0021-Jun-064488
60462PRODUCTOSMANUELJOSE,S.A.DEC.V.(CULIACAN)ETIQUETAI.P.S.TRAC21X12BC/IMP"BLANCAS"[1,000]4005.0004-May-064258
70927ALUMINIOCONESASA.DECV.ADHESIVATRANSTHERM2.00X4.00BCAC/IAMARILLA[1,000]264.0004-May-064257
80234ARTICULOSPOPULARESDELHOGARS.A.DEC.VADHESIVATERMICADIRECTA2.00X1.00BS/I[3,000]6024.2030-Abr-064248
90219UNIDADDEENSEANZAEINVESTIGACIONSANJAVIER,A.C.ADHESIVAPOLIESTER3.00X1.00TRANSPBOPP[3,000]10.0030-Abr-064246
100219UNIDADDEENSEANZAEINVESTIGACIONSANJAVIER,A.C.RIBBONELTRONCERA110MMS.X74MTS.23.8530-Abr-064246
110984PROMEDICAGARCIASA.DECV.ADHESIVATRANSTHERM2.00X1.00BCAS/I[2,000]1022.0028-Abr-064236
120984PROMEDICAGARCIASA.DECV.RIBBONELTRONCERA64MMS.X74MTS.52.5028-Abr-064236
130039HOSPITALSANJAVIER,S.A.DEC.V.ADHESIVATRANSTHERM1.97X0.59BCAS/I[4,000]843.0028-Abr-064234
140039HOSPITALSANJAVIER,S.A.DEC.V.RIBBONELTRONCERA110MMS.X74MTS.23.8528-Abr-064234
151063LEMUSRAMIREZMARISAADHESIVATRANSTHERM4.00X5.00BCAS/IC/PREC[500]5185.0028-Abr-064233
161063LEMUSRAMIREZMARISARIBBONELTRONCERA110MMS.X91MTS.542.0028-Abr-064233
170037GABRIELASKUTSCHDIAZAGUJAMETALICADENISSONSTANDARD1019.0028-Abr-064232
180037GABRIELASKUTSCHDIAZPLASTIFLECHA9.00"CANDADOLISO[5,000]1526.8028-Abr-064232
190037GABRIELASKUTSCHDIAZPLASTIFLECHADORAGENERICASTDHD-8S(AG/DEN/MET)1120.0028-Abr-064232
200803MERBATEXS.A.DEC.V.MAQUILAETIQUETAADHESIVA3065.0027-Abr-064230
pxk
 
Upvote 0
Bueno,

La forma más sencilla es encontrar la última celda y añadir. Eso no es gran cosa. La fuerza de usar un UserForm en vez del formulario que Excel ya ofrece en el menú de Datos es la habilidad de programar verificaciones, vínculos, etc. en el userform. Aquí le doy un ejemplo bien sencillo. Note que utilizo ENUM pero si los usuarios tienen Excel 97 hay que user CONST en vez de ENUM. El uso de ENUM (o CONST) no es exigido. Lo hago porque se hace la vida más fácil si cambia la estructura de la hoja. Si usted después decide insertar, mover o suprimir una columna es nada más de editar las definiciones de los constantes y ya. Pero si uno programs números de columnas dentro de los subroutines, hay que ir y buscar cada juepu** de ellos y no es muy divertido.

En el UserForm
Code:
Private Sub btnOK_Click()
      
    Dim lngNewRow As Long

    lngNewRow = MyLastCell.Row + 1
    With Me
        Cells(lngNewRow, ge_CustColDefs.Nombre) = .tbxNombre
        Cells(lngNewRow, ge_CustColDefs.Producto) = .cbxProducto.Text
        .Hide
    End With
End Sub

En un modulo normal
Code:
Option Explicit

Public Enum ge_CustColDefs
    NumID = 1
    Nombre
    Producto
End Enum

Sub ProbarUserForm()
    UserForm1.Show
    Unload UserForm1
End Sub

Public Function MyLastCell(Optional ws As Worksheet) As Range
    Dim LastRow&, LastCol%
    
    ' Error-handling is here in case there is not any
    ' data in the worksheet
    
    On Error Resume Next
    If ws Is Nothing Then Set ws = ActiveSheet
    
    With ws
    
        ' Find the real last row
        LastRow = .Cells.Find(What:="*", _
            SearchDirection:=xlPrevious, _
            SearchOrder:=xlByRows).Row
            
        ' Find the real last column
        LastCol = .Cells.Find(What:="*", _
            SearchDirection:=xlPrevious, _
            SearchOrder:=xlByColumns).Column
            
    End With
    
    Set MyLastCell = ws.Cells(Application.WorksheetFunction.Max(1, LastRow), _
                              Application.WorksheetFunction.Max(1, LastCol))
            
End Function
Note que MyLastCell no asegura que activesheet sea un worksheet. Si exist la posibilidad de que activesheet sea un chart sheet habrá que programar una verificación de tipo de hoja.
 
Upvote 0
Fue demasiado!!

Greg, muchas gracias por la respuesta pero la verdad fue demasiado para mi, estoy tratando de ligar un combobox para que con el "Id" del cliente me pase los datos "nombre del cliente" a un listbox, creo... hasta ahi me quede porque no he terminado mi useform , la verdad no manejo Vb a la perfeccion y me detengo a leer en el forum antes de preguntar pero solo vi como hacer que un combobox repita los datos de otro combobox
 
Upvote 0
Greg:

Private Sub btnOK_Click()
' agrego un comand button llamado OK?
Dim lngNewRow As Long

lngNewRow = MyLastCell.Row + 1
With Me
Cells(lngNewRow, ge_CustColDefs.Nombre) = .tbxNombre
' agrego un textbox Nombre?
Cells(lngNewRow, ge_CustColDefs.Producto) = .cbxProducto.Text
' agrego un combobox producto?

.Hide
End With
End Sub
 
Upvote 0
Polboy,

Eso que puse fue nada más un ejemplo. No puedo decirle qué poner o no poner dado que no sé qué es lo que desea hacer exactamente. Lo bonito de VBA es que usted puede construir el userform mientras aprendre como programar.

Acerca de los nombres de los controles, por lo general uso una versión de la Hungarian convention que describe Gregory Reddick aquí. Me parece que usted ya se ha dado cuenta con leer lo que escribí; con usar un sistema para eso se hace mucho más fácil comprender -- usted pudo adivinar qué tipo de control era cada objeto con solo ver el nombre.

Mientras desarrolla su userform -- especialmente sus primeros mientras anda aprendiendo -- no olvide del dicho sobre como uno come un elefante, «mordisco por mordisco». No hay que comerlo todo en una sola cena. Entonces hazlo paso por paso y si choca con algo que no puede resolver solo, pregunte aquí otra vez y uno de nosotros, los miembros, trata de ayudarle.

Saludos,
 
Upvote 0
De acuerdo Señor

Asi es Greg, como dices poco a poco aunque quienes no dominamos a fondo esto de la programacion, pues a veces quisieramos comernos el pastel a una sola mordida com dices, pero comparto tu idea de aprender haciendo lectura y ejercitando, ahora si que me la paso a prueba y error y asi me ha resultado bastante productivo al grado de dedicarle mas minutos cada dia a esto del vb...y gracias a todos los que postean sus preguntas y opiniones aprendemos mas cada vez...respecto a lo que buscaba en el foro y no pude encontrar es sobre como hacer que al seleccionar el ID con un combobox esta accion haga que el NOMBRE se registre en un (textbox o combobox)...seguire buscando...
 
Upvote 0
José,

No entiendo muy bien a qué refiere usted con «ventanita». ¿Pregunta usted cómo hace el usuario para salir de un control tipo "textbox"? Con una flecha o con teclar "tab". ¿O pregunta usted cómo hace el usario para cerrar el UserForm en sí? Con un botón, que generalmente dice "OK" [¿¿«aceptar»??]. Se puede usar código VBA para ver si el usario cerró el formulario con el botón "X" en la esquina superior derecha. O se puede poner otro botón «cancelar». Los botones diciendo algo como:
Code:
Private Sub btnOK_Click()
    Me.Hide
    g_booCancelar = False
End Sub

Private Sub btnCancel_Click()
    Me.Hide
    g_booCancelar = True
End Sub

Donde g_booCancelar es un variable público de tipo 'boolean' definido en un "standard module".

Atte,
 
Upvote 0
Greg,

Mi pregunta estuvo mal estipulada.
En realidad es: How do I get to produce a pop-up window (userform) and link it to a macro?
¿Cómo puedo hacer que salga la userform pop-up window ("ventanita"), y que los botones que tenga corran una macro?

Estoy muy perdido aquí..

:oops:
 
Upvote 0

Forum statistics

Threads
1,223,958
Messages
6,175,629
Members
452,661
Latest member
Nonhle

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top