Como copiar tablas o cuadros de Word a Excel





Hoy te presento una macro que permite importar tablas de Word a una hoja de Excel, en varias oportunidades es posible que se haya tenido que pasar tablas de Word a Excel, si son pocas no es problema se copia y pega y listo, luego se le da formato deseado y problema solucionado, pero cuando son varias, ya toma un poco más de tiempo y mucho más si esto se debe hacer todos los días en forma repetitiva; te habrás preguntado como se puede realizar automáticamente, en este ejemplo enseño como pasar tablas o cuadro de Word a Excel con solo apretar un botón.


Otros post relacionados con macros que permiten manejar Word desde Excel:
Como crear un archivo de Word con Excel
Como abrir un archivo de Word con Excel
Como conectar Excel con Word crear archivo e insertar texto en Word
Como dar formato a texto de Word desde Excel 
Como abrir modificar e imprimir archivo de Word con macro desde Excel
Como modificar una plantilla de Word con macro de Excel
Como rellenar pagare con datos de Excel conectando con Word
Como crear cartas en Word con clientes listados en Excel
Como copiar tablas o cuadros de Word a Excel


Antes de continuar recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  


El ejemplo se puede descargar desde el link del final en forma GRATUITA, es un archivo comprimido donde hay un archivo de Excel con la Macro y un archivo de Word con las tablas de ejemplo que se importarán a Excel, se deben descromprimir los archivos y guardar los dos juntos en cualquier carpeta de la PC, pero juntos.

La macro que permite importar tablas de Word a Excel, en primero lugar abre el archivo de Word, luego se procede a recorrer todas las tablas de Word, en en ella todas las columnas y filas que componen la tablas, pasando los datos de Word a Excel; luego de haber importado los datos de Word, procede a dar formato a las celdas de Excel.

El procedimiento descripto lo hace con todas las tablas que hubiese en Word, al final sale un mensaje mostrando la cantidad de tablas importadas, en el vídeo encontrarás una explicación más detallada y gráfica del funcionamiento de la macro, el código completo del ejemplo se encuentra al final del post.

Suscribe a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.







Código que se inserta en un módulo




Public f, c
Sub ImportaTablaWord()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim objWord As Word.Application, wdDoc As Word.Document
Dim fila As Long, col As Long, cr As Long, conta As Integer, ti As Integer, tt As Integer
On Error Resume Next
Set a = Sheets(ActiveSheet.Name)
a.Cells.Clear
fila = 1
col = 1
conta = 0
nom = ActiveWorkbook.Name
pto = InStr(nom, ".")
nomarch = Left(nom, pto - 1)
ruta = ThisWorkbook.Path & "\" & nomarch & ".docx"
uf = a.Range("A" & Rows.Count).End(xlUp).Row
Set objWord = CreateObject("Word.Application")
objWord.DisplayAlerts = wdAlertsNone
objWord.Visible = True
Set wdDoc = objWord.Documents.Open(ruta)
With wdDoc
tt = wdDoc.Tables.Count
For x = 1 To tt
    With .Tables(x)
    For f = 1 To .Rows.Count
        For c = 1 To .Columns.Count
        a.Cells(fila, c) = WorksheetFunction.Clean(.Cell(f, c).Range.Text)
        Next c
    fila = fila + 1
    Next f
    End With
conta = conta + 1
fila = fila + 2
Call formato
Next x

End With
wdDoc.Close
MsgBox ("Se han importado " & conta & " tablas de Word a Excel"), vbInformation, "AVISO"
objWord.Quit
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub


Sub formato()
Dim pf As Long, uf As Long
Set a = Sheets(ActiveSheet.Name)
uf = a.Range("A" & Rows.Count).End(xlUp).Row

pf = a.Range("A" & uf).End(xlUp).Row
pc = a.Cells(f, c - c + 1).Address
pwc = Mid(pc, InStr(pc, "$") + 1, InStr(2, pc, "$") - 2)

uf = uf
uc = a.Cells(f, c - 1).Address
wc = Mid(uc, InStr(uc, "$") + 1, InStr(2, uc, "$") - 2)

a.Range(pwc & pf & ":" & wc & uf).Borders(xlInsideHorizontal).LineStyle = xlContinuous
a.Range(pwc & pf & ":" & wc & uf).Borders(xlInsideVertical).LineStyle = xlContinuous
a.Range(pwc & pf & ":" & wc & pf).Borders(xlEdgeLeft).LineStyle = xlContinuous
a.Range(pwc & pf & ":" & wc & pf).Borders(xlEdgeLeft).Weight = xlMedium
a.Range(pwc & pf & ":" & wc & pf).Borders(xlEdgeTop).LineStyle = xlContinuous
a.Range(pwc & pf & ":" & wc & pf).Borders(xlEdgeTop).Weight = xlMedium
a.Range(pwc & pf & ":" & wc & pf).Borders(xlEdgeBottom).LineStyle = xlContinuous
a.Range(pwc & pf & ":" & wc & pf).Borders(xlEdgeBottom).Weight = xlMedium
a.Range(pwc & pf & ":" & wc & pf).Borders(xlEdgeRight).LineStyle = xlContinuous
a.Range(pwc & pf & ":" & wc & pf).Borders(xlEdgeRight).Weight = xlMedium


a.Range(pwc & pf + 1 & ":" & wc & uf).Borders(xlEdgeLeft).LineStyle = xlContinuous
a.Range(pwc & pf + 1 & ":" & wc & uf).Borders(xlEdgeLeft).Weight = xlMedium
a.Range(pwc & pf + 1 & ":" & wc & uf).Borders(xlEdgeTop).LineStyle = xlContinuous
a.Range(pwc & pf + 1 & ":" & wc & uf).Borders(xlEdgeTop).Weight = xlMedium
a.Range(pwc & pf + 1 & ":" & wc & uf).Borders(xlEdgeBottom).LineStyle = xlContinuous
a.Range(pwc & pf + 1 & ":" & wc & uf).Borders(xlEdgeBottom).Weight = xlMedium
a.Range(pwc & pf + 1 & ":" & wc & uf).Borders(xlEdgeRight).LineStyle = xlContinuous
a.Range(pwc & pf + 1 & ":" & wc & uf).Borders(xlEdgeRight).Weight = xlMedium

a.Range(pwc & uf & ":" & wc & uf).Borders(xlEdgeLeft).LineStyle = xlContinuous
a.Range(pwc & uf & ":" & wc & uf).Borders(xlEdgeLeft).Weight = xlMedium
a.Range(pwc & uf & ":" & wc & uf).Borders(xlEdgeTop).LineStyle = xlContinuous
a.Range(pwc & uf & ":" & wc & uf).Borders(xlEdgeTop).Weight = xlMedium
a.Range(pwc & uf & ":" & wc & uf).Borders(xlEdgeBottom).LineStyle = xlContinuous
a.Range(pwc & uf & ":" & wc & uf).Borders(xlEdgeBottom).Weight = xlMedium
a.Range(pwc & uf & ":" & wc & uf).Borders(xlEdgeRight).LineStyle = xlContinuous
a.Range(pwc & uf & ":" & wc & uf).Borders(xlEdgeRight).Weight = xlMedium

'a.Range("D" & pf + 1 & ":" & wc & uf).NumberFormat = "#,##0.00;-#,##0.00"
a.Range(pwc & pf & ":" & wc & pf).HorizontalAlignment = xlCenter
a.Range(pwc & pf & ":" & wc & pf).VerticalAlignment = xlCenter
a.Range(pwc & pf & ":" & wc & pf).Font.Size = 10
a.Range(pwc & pf & ":" & wc & pf).Font.Bold = True
a.Range(pwc & pf).RowHeight = 15

'a.Cells(uf, pwc) = "Total"
'a.Range(pwc & uf & ":" & wc & uf).Font.Bold = True

'For j = 4 To 11
'a.Cells(uf, j) = Application.WorksheetFunction.Sum(a.Range(Cells(pf + 1, j), Cells(uf - 1, j)))
'Next j

a.Range(pwc & pf & ":" & wc & pf).EntireColumn.AutoFit
End Sub



Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Crear Cartas en Word desde Excel





Seguramente en varias oportunidades se ha tenido la necesidad de mandar una carta en serie a un listado del clientes que se tiene en una hoja de Excel, es bastante tedioso tener que estar haciéndolo uno por uno, hoy te presentó una macro que permite enviar una carta a un listado de personas que se tiene en una hoja de Excel utilizando Word; es decir la macro conecta Excel con Word y crea una carta o postal para cada uno de las personas listadas en Excel, ello presionando simplemente un botón.


Otros post relacionados con macros que permiten manejar Word desde Excel:
Como crear un archivo de Word con Excel
Como abrir un archivo de Word con Excel
Como conectar Excel con Word crear archivo e insertar texto en Word
Como dar formato a texto de Word desde Excel 
Como abrir modificar e imprimir archivo de Word con macro desde Excel
Como modificar una plantilla de Word con macro de Excel
Como rellenar pagare con datos de Excel conectando con Word
Como crear cartas en Word con clientes listados en Excel


Antes de continuar recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  


Invito a bajar el archivo comprimido (está la macro y plantilla con la carta en Word), desde el link del final, es totalmente gratuito y tiene el código abierto es decir se puede usar sin ninguna restricción, lo que permitirá comprender mejor el funcionamiento de la macro; también en el vídeo a continuación hay una explicación más detallada y visual del funcionamiento de esta macros que conectan Excel con Word y permite crear cartas automáticamente.

La macro en primer lugar abre una plantilla de Word que es donde se encuentra la carta propiamente dicha, luego crea un archivo para cada una de las cartas que va creando la macro, personalizada con cada una de las personas listadas en la hoja de Excel; para ello crea un bucle desde la primer fila con datos hasta la última fila con datos; posteriormente la macro recorre cada campo en Word reemplazando por los datos correspondientes que se encuentran en Excel; por último guarda el archivo con el nombre establecido previamente.

La macro de ejemplo tomará los datos del cliente que esta en la fila 3 de la hoja de Excel e incorporará en la carta que esta en una plantilla de Word, la fecha el destinatario en en este primer caso será "Dayra Sol Tomy Lee", luego la dirección, localidad, fecha de reunión, dirección de reunión, hora de reunión y por último el remitente, con esos datos se arma la carta y guarda un archivo en Word por cada carta creada; permitiendo esta macro denominada Crear cartas en Word desde Excel con datos incluidos en una hoja de Excel, realizar un sin números de cartas en forma automática en segundos con un solo click.

Suscribe a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.






Código que se inserta en un módulo




Sub ManejaWordConfeccionaCarta()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim objWord As Word.Application, wdDoc As Word.Document
Dim datos(0 To 1, 0 To 9) As String
On Error Resume Next
Set a = Sheets(ActiveSheet.Name)
nom = ActiveWorkbook.Name
pto = InStr(nom, ".")
nomarch = Left(nom, pto - 1)
ruta = ThisWorkbook.Path & "\" & nomarch & ".docx"
uf = a.Range("A" & Rows.Count).End(xlUp).Row
Set objWord = CreateObject("Word.Application")
objWord.DisplayAlerts = wdAlertsNone
objWord.Visible = True
For j = 3 To uf
Set wdDoc = objWord.Documents.Open(ruta)
nomfic = nomarch & " Desti " & a.Cells(j, "B")
rutainf = ThisWorkbook.Path & "\" & nomfic & ".docx"

'Asignamos a variables que se debe buscar y el texto por que se debe reemplazar
datos(0, 0) = "[Campo_Fecha]"
datos(1, 0) = Format(a.Cells(j, "A"), "dd ""de"" mmmm ""de"" yyyy")
datos(0, 1) = "[Campo_Destinatario]"
datos(1, 1) = a.Cells(j, "B")
datos(0, 2) = "[Campo_Direccion]"
datos(1, 2) = a.Cells(j, "B")
datos(0, 3) = "[Campo_Localidad]"
datos(1, 3) = a.Cells(j, "D")
datos(0, 4) = "[Campo_NombreDestinatario]"
datos(1, 4) = a.Cells(j, "E")
datos(0, 5) = "[Campo_FechaEncuentro]"
datos(1, 5) = Format(a.Cells(j, "F"), "dd ""de"" mmmm ""de"" yyyy")
datos(0, 6) = "[Campo_Objeto]"
datos(1, 6) = a.Cells(j, "G")
datos(0, 7) = "[Campo_DireccionOficina]"
datos(1, 7) = a.Cells(j, "H")
datos(0, 8) = "[Campo_Hora]"
datos(1, 8) = Format(a.Cells(j, "I"), "HH:MM")
datos(0, 9) = "[Campo_Remitente]"
datos(1, 9) = a.Cells(j, "J")
For I = 0 To UBound(datos, 2)
textobuscar = datos(0, I)
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=textobuscar
While objWord.Selection.Find.Found = True
objWord.Selection.Text = datos(1, I) 'texto a reemplazar
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=textobuscar
Wend
Next I

'Guarda el archivo con el nombre asignado
wdDoc.SaveAs Filename:=rutainf, FileFormat:=wdFormatXMLDocument
wdDoc.Close
Next j

MsgBox ("Las cartas se generaron con éxito para todos los destinatarios"), vbInformation, "AVISO"
wdDoc.Quit
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub






Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Rellenar Pagaré conectando Excel con Word





Si requieres aprender a rellenar un Pagare o cualquier otro documento con datos que están disponibles en Excel utilizando Word, en este pos aporto una macro que permite aprende como rellenar pagare con datos de Excel manipulando Word desde Excel, podrás realizar lo que requieras con los datos que estén en la base de datos de Excel enviándolos a Word para ser usados en una plantilla de Word y su posterior impresión, todo al alcance de un solo click desde Excel.


Otros post relacionados con macros que permiten manejar Word desde Excel:
Como crear un archivo de Word con Excel
Como abrir un archivo de Word con Excel
Como conectar Excel con Word crear archivo e insertar texto en Word
Como dar formato a texto de Word desde Excel 
Como abrir modificar e imprimir archivo de Word con macro desde Excel
Como modificar una plantilla de Word con macro de Excel
Como rellenar pagare con datos de Excel conectando con Word


Recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  


Para comprender en forma fácil el ejemplo aconsejo descargar el archivo, desde el final del link lo podrás hacer, es gratuito y el código esta abierto como todas las macros publicadas en esta Web; al abrir el fichero verás un botón el cual permite ejecutar la macro; además existen una serie de datos que serán usados para rellenar un pagare de ejemplo; es decir en Word se incorporarán todos los datos que están en la base de datos de Excel, en este caso en el rango B2:B15.

En el vídeo a continuación podrás observar una explicación más detallada y visual del funcionamiento de la macro, recomiendo invertir unos minutos y observar el mismo, lo cual será de utilidad para comprender el funcionamiento de esta macros que conectan Excel con Word.

El ejemplo de macro que permite Conectar Excel con Word y rellenar un pagare; básicamente toma los datos de Excel, Abre una plantilla de Word, incorpora los datos en la plantilla, guardando el archivo con un nombre compuesto por el número del pagaré, por último cierra la plantilla sin modificarla para que permita futuros usos.

Suscribe a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.




Código que se inserta en un módulo




Sub ManejarWordRellenarPagare()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim objWord As Word.Application, wdDoc As Word.Document
Dim datos(0 To 1, 0 To 12) As String
On Error Resume Next
Set a = Sheets(ActiveSheet.Name)
nom = ActiveWorkbook.Name
pto = InStr(nom, ".")
nomarch = Left(nom, pto - 1)
ruta = ThisWorkbook.Path & "\" & nomarch & ".docx"
Set objWord = CreateObject("Word.Application")
objWord.DisplayAlerts = wdAlertsNone
objWord.Visible = True
Set wdDoc = objWord.Documents.Open(ruta)
nomfic = nomarch & " Num " & a.Range("B2") & " " & a.Range("B6")
rutainf = ThisWorkbook.Path & "\" & nomfic & ".docx"

'Asignamos a variables que se debe buscar y el texto por que se debe reemplazar
datos(0, 0) = "[Campo_Numero]"
datos(1, 0) = a.Range("B2")
datos(0, 1) = "[Campo_FechaEmision]"
datos(1, 1) = Format(a.Range("B3"), "dd ""de"" mmmm ""de"" yyyy")
datos(0, 2) = "[Campo_ImporteNumero]"
datos(1, 2) = Format(a.Range("B4"), "#,##0.00;-#,##0.00")
datos(0, 3) = "[Campo_FechaPago]"
datos(1, 3) = Format(a.Range("B5"), "dd ""de"" mmmm ""de"" yyyy")
datos(0, 4) = "[Campo_Beneficiario]"
datos(1, 4) = a.Range("B6")
datos(0, 5) = "[Campo_ImporteLetras]"
datos(1, 5) = a.Range("B7")
datos(0, 6) = "[Campo_Especie]"
datos(1, 6) = a.Range("B8")
datos(0, 7) = "[Campo_DomicilioPago]"
datos(1, 7) = a.Range("B9") & " " & a.Range("B10")
datos(0, 8) = "[Campo_NombreDeudor]"
datos(1, 8) = a.Range("B11")
datos(0, 9) = "[Campo_Cedula]"
datos(1, 9) = a.Range("B12")
datos(0, 10) = "[Campo_DomicilioDeudor]"
datos(1, 10) = a.Range("B13")
datos(0, 11) = "[Campo_Localidad]"
datos(1, 11) = a.Range("B14")
datos(0, 12) = "[Campo_Telefono]"
datos(1, 12) = a.Range("B15")
'Creamos un bucle que va desde el primero al último número de la matriz
For I = 0 To UBound(datos, 2)
textobuscar = datos(0, I)
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=textobuscar
'Bucle para reemplazar todo el texto que encuentre y solo el primero que encuentre
While objWord.Selection.Find.Found = True
objWord.Selection.Text = datos(1, I) 'texto a reemplazar
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=textobuscar
Wend
Next I

'Guarda el archivo con el nombre asignado
wdDoc.SaveAs Filename:=rutainf, FileFormat:=wdFormatXMLDocument
'wdDoc.Close
MsgBox ("El documento se relleno y guardó con éxito"), vbInformation, "AVISO"
wdDoc.Activate
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub





Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

How to fill combobox which depends on another combobox and fill listbox






In filling listbox depending on another listbox and combobox, fill combobox and search data are among other post are related to the present example called Combobox depends on another combobox and fill listbox, there are also others where they are exposed macros on how to walk the rows with macro and are: rows searching and comparing data, scroll rows and count cells with data, scroll rows and copy from column A to B, there are several examples you will find here.

Need to read an excellent book on Excel that will help operate the spreadsheet, click here, if you want to learn about Excel, in Spanish, then you must click here. If what you need is to learn or deepen about programming macros with VBA, this is one of the best courses on line I've seen on the internet.


  

The example that can be downloaded FREE from the end of the page is to fill a combobox depending on another combobox and this combobox depends on a listbox. When you load the form, a list of products is loaded in the first combobox, which filters them to produce only single products and avoid duplicates; Depending on the data selected in this combobox is filled the second combobox turn the data selected in the second combobox is filled a listbox.

The macro example that fills in combobox depending on another combobox and in turn controls the data of a listbox, can be downloaded from the link at the end of this post, once downloaded the example is pressed the button that says "Run Macro" Executes the macro doing the filling of the first combobox, after the second combobox based on those selected in the first combobox; Finally the listbox depends on the selected in the previous combobox.

Subscribe to our You Tube channel to receive explanatory videos in your mail about interesting macros, such as a form that creates a list of all the sheets to be able to select them, search in listbox while typing in textbox, order excel sheets by name, Connect Excel with Access and many more examples.





Code that is inserted into a module

Sub Botón1_Haga_clic_en()
UserForm2.Show
End Sub



Code that is inserted into a userform

Public dir
Private Sub ComboBox1_Change()
Dim fila As Integer
Dim uf As Integer
Dim d1, d2 As String
fila = 2
uf = Sheets("hoja2").Range("A" & Rows.Count).End(xlUp).Row
ComboBox2.Clear
While Sheets("hoja2").Cells(fila, 1) <> Empty
d1 = ComboBox1
d2 = Sheets("hoja2").Cells(fila, 1)
If d1 = d2 Then
ComboBox2.AddItem Sheets("hoja2").Cells(fila, 4)
End If
fila = fila + 1
Wend

End Sub
Private Sub ComboBox2_Change()
Application.ScreenUpdating = False
Dim fila, a As Integer
Dim dato, var As String
'On Error Resume Next
'Borra datos del listbox
ListBox1.Clear
ListBox1.ColumnCount = 6

a = 0
fila = 2
While Sheets("hoja2").Cells(fila, 4) <> Empty
      dato = ComboBox2
'Si el dato de la fila coincide con textbox carga los datos al listbox
  var = Sheets("hoja2").Cells(fila, 4)
   If var = dato Then
        dir = Sheets("hoja2").Cells(fila, 4).Address(False, False)
        
        a = ListBox1.ListCount
        ListBox1.AddItem
        ListBox1.List(a, 0) = Sheets("hoja2").Cells(fila, 1)
        ListBox1.List(a, 1) = Sheets("hoja2").Cells(fila, 2)
        ListBox1.List(a, 2) = Sheets("hoja2").Cells(fila, 3)
        ListBox1.List(a, 3) = Sheets("hoja2").Cells(fila, 4)
        ListBox1.List(a, 4) = Sheets("hoja2").Cells(fila, 5)
        ListBox1.List(a, 5) = Sheets("hoja2").Cells(fila, 6)
   End If


fila = fila + 1
Wend


Application.ScreenUpdating = True
End Sub

Private Sub CommandButton2_Click()
If ComboBox3 = Empty Then
MsgBox ("Debe cargar fecha de salida"), vbCritical, "AVISO"
ComboBox3.SetFocus
Exit Sub
End If
Sheets("hoja2").Range(dir).Offset(0, 2) = ComboBox3
ComboBox1.Clear
ComboBox2.Clear
ListBox1.Clear
ComboBox1.SetFocus
MsgBox ("El registro se guardó con éxito"), vbInformation, "AVISO"
ComboBox3.Clear
End Sub

Private Sub CommandButton3_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
Dim sd As New Collection
Dim celda As Range
Dim dato
Dim r As String
Dim uf As Integer
Application.ScreenUpdating = False
On Error Resume Next
ComboBox1.Clear
Sheets("hoja2").Select
Range("A2").Select
uf = Range("A" & Rows.Count).End(xlUp).Row
r = "A2:A" & uf
For Each celda In Range(r)
sd.Add celda.Value, CStr(celda.Value)
Next celda
For Each dato In sd
ComboBox1.AddItem dato
Next dato
Application.ScreenUpdating = True
End Sub



Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

How to fill multi-column listbox






With this VBA macro for Excel, VBA procedure or Excel VBA macro, as it is usually called, is shown fill a listbox that has several columns, with the complication that the data is not in a continuous range but rather arise from a Search data, which depends on the value that is entered in the combobox, ie a value is selected in the combo box, based on that data is obtained, once they were found they are loaded into the listbox, it has Several columns in the case of example 5; Click at the end of the post to download the example.

The example presented here has a close relationship with the macro VBA for Excel, published in my other post that deals with filling a listbox depending on another listbox and combobox.

Need to read an excellent book on Excel that will help operate the spreadsheet, click here, if you want to learn about Excel, in Spanish, then you must click here. If what you need is to learn or deepen about programming macros with VBA, this is one of the best courses on line I've seen on the internet.


  

The code below must be entered in a form that in the case of the example is named userform1, downloading the example you can see it working, analyze, modify and adapt to what you are doing the code is open without any restriction.

Subscribe to our You Tube channel to receive explanatory videos in your mail about interesting macros, such as a form that creates a list of all the sheets to be able to select themsearch in listbox while typing in textboxorder excel sheets by nameConnect Excel with Access and many more examples.






Code that is inserted into a module




Private Sub Combobox1_Change()
Application.ScreenUpdating = False
Dim fila, a As Integer
On Error Resume Next
'Borra datos del listbox
ListBox1.Clear
a = 0
fila = 2
While Sheets("hoja1").Cells(fila, 5) <> Empty
      dato = Combobox1
  Var = Sheets("hoja1").Cells(fila, 5)
   If Sheets("hoja1").Cells(fila, 5) = dato Then

         a = ListBox1.ListCount
        ListBox1.AddItem
        ListBox1.List(a, 0) = Sheets("hoja1").Cells(fila, 1)
        ListBox1.List(a, 1) = Sheets("hoja1").Cells(fila, 2)
        ListBox1.List(a, 2) = Sheets("hoja1").Cells(fila, 3)
        ListBox1.List(a, 3) = Sheets("hoja1").Cells(fila, 4)
        ListBox1.List(a, 4) = Sheets("hoja1").Cells(fila, 5)
   End If
  

fila = fila + 1
Wend

Application.ScreenUpdating = True
End Sub

Private Sub UserForm_Initialize()
Label2.Caption = Sheets("hoja1").Cells(1, 1)
Label3.Caption = Sheets("hoja1").Cells(1, 2)
Label4.Caption = Sheets("hoja1").Cells(1, 3)
Label5.Caption = Sheets("hoja1").Cells(1, 4)
Label6.Caption = Sheets("hoja1").Cells(1, 5)



Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends