Como cambiar el nombre todas imagenes o shapes de Excel





En este post se muestra como cambiar el nombre a todas las imágenes, fotos o shapes que se encuentran en el Libro Excel, quizás sea útil también como copiar gráficos de Excel a Word con macro.

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 vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo Recorre fila buscando y comparando datos de dos columnas en hojas distintasbuscar en listbox mientras escribes en textbox, como crear una factura o sale invoice y grabar guardar PDF XLS y enviar por mailconectar Excel con Access y muchos ejemplos más.







  


El archivo de ejemplo se puede descargar desde el link del final en forma gratuita, considera aportar para sostener el sitio, al descargar el fichero se podrá observar un botón denominado ejecutar, presionando se puede ver la macro en acción.

En un primer momento la macro copia como imagen el Rango A1:E11, luego se le da la tamaño a la imagen en base a la dimensión del rango para ello se toma las propiedades Top, Left, Width, Height.


⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
Quizás también sea útil:

Como abrir otro libro copiar o exportar datos del libro actual

Como buscar datos y cargar imagen de catalogo en formulario

Como insertar imagen en comentario de Excel

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛

Básicamente lo que hace la macro es un bucle, recorriendo todas la fotos, imágenes o shapes existentes en el libro, luego va renombrando dichas imágenes con la palabra ID más el número de imagen que le bucle recorre en ese momento, se hace con el siguiente código.

For x = 1 To ActiveSheet.Shapes.Count
nv = ActiveSheet.Shapes(x).Name

ActiveSheet.Shapes(x).Name = "[PID" & x & "] "

Desde el link del final se podrpa descargar el ejemplo como cambiar el nombre de todas la imágenes o shapes del libro Excel. En el caso que puedas considera aportar para sostener el sitio y según incorporando nuevos ejemplos que podrás descargar en forma gratuita, en caso que no puedas solicitó compartas el conocimiento con tus amigos en redes sociales. 


Código que se inserta en un módulo


Sub CrearIDImagen()
On Error Resume Next
Range("H:I").ClearContents
Cells(1, "H") = "Non Viejo"
Cells(1, "I") = "Non Nuevo"
For x = 1 To ActiveSheet.Shapes.Count
nv = ActiveSheet.Shapes(x).Name
ActiveSheet.Shapes(x).Name = "[PID" & x & "] "
nn = ActiveSheet.Shapes(x).Name
Cells(x + 1, "H") = nv
Cells(x + 1, "I") = nn
Next x
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      

Como crear una imagen de un rango de celdas de Excel





En este post se presenta una macro que permite crear una imagen o foto de un rango de datos, guardando el rango de datos como una una imagen JPG, es útil cuando posteriormente se necesite copiar ese rango en un archivo Word por ejemplo, pero cada lector encontrará la utilidad adecuada, fíjate en el link como se puede copiar gráficos de Excel a Word con macro.

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 vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo Recorre fila buscando y comparando datos de dos columnas en hojas distintasbuscar en listbox mientras escribes en textbox, como crear una factura o sale invoice y grabar guardar PDF XLS y enviar por mailconectar Excel con Access y muchos ejemplos más.










  


El archivo de ejemplo se puede descargar desde el link del final en forma gratuita, considera aportar para sostener el sitio, al descargar el fichero se podrá observar un botón denominado ejecutar, presionando se puede ver la macro en acción.

En un primer momento la macro copia como imagen el Rango A1:E11, luego se le da la tamaño a la imagen en base a la dimensión del rango para ello se toma las propiedades Top, Left, Width, Height.


⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
Quizás interese también:

Como buscar datos y cargar imagen de catalogo en formulario

Como insertar imagen en comentario de Excel

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛

Lo expresado se hace con el código:

Range("A1:E11").CopyPicture

Con este código se carga en variables el tamaño del rango:
With Range("A1:E11")
Izq = .Left
Arr = .Top
Ancho = .Width
Alto = .Height
End With

Posteriormente la macro crea un objeto gráfico asignado las dimensiones del rango tomadas anteriormente, en dicho objeto gráfico se pega la imagen copiada en el primer paso, luego de ello la macro exporta el objeto gráfico que contiene la imagen el rango como un archivo JPG, luego borra el objeto gráfico creado en la celda B23 y termina la macro emitiendo un mensaje sobre su fiscalización.

Se adiciona un objeto chart:

ActiveSheet.Shapes.AddChart

Con el objeto chart se da la dimensión a la imagen, se pega la imagen del rango copiada en el objeto chart y se exporta la imagen, previamente en la variable myfile se guardo el la dirección o URL de la imagen en la PC.

With Selection
.Width = Ancho
.Height = Alto
.Chart.Paste
.Chart.Export myfile
.Delete
End With

Invito a analizar el ejemplo denominado como crear una imagen de un rango de celdas de Excel, para ello luego de descargarlo desde el link del final, ingresar al editor de VBA y ejecutar la macro paso a paso con F8 para ir observando que hace la macro con cada uno de los códigos que la componen. En el caso que puedas considera aportar para sostener el sitio y según incorporando nuevos ejemplos que podrás descargar en forma gratuita, en caso que no puedas solicitó compartas el conocimiento con tus amigos en redes sociales. 


Código que se inserta en un módulo


Sub CrearImagenRango()
Dim she As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Set a = Sheets("Hoja1")
myfile = ActiveWorkbook.Path & "\myimag.jpg"
Range("A1:E11").CopyPicture
With Range("A1:E11")
Izq = .Left
Arr = .Top
Ancho = .Width
Alto = .Height
End With
Range("b23").Select
ActiveSheet.Shapes.AddChart
ActiveSheet.ChartObjects(1).Select
With Selection
.Width = Ancho
.Height = Alto
.Chart.Paste
.Chart.Export myfile
.Delete
End With
MsgBox ("El archivo de imagen con extensión JPG se guardró en " & myfile), vbInformation, "AVISO"
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      

Como saber y cambiar el nombre de un grafico de Excel





En este post se muestra una macro que permite saber y cambiar el nombre de un gráfico de Excel, la utilidad básica es saber el nombre para luego conectar con Word e indicar en Word el nombre del gráfico que se desea pegar o insertar, cada uno le encontrará otra utilidad, pero renombrado de los gráficos de Excel, sabiendo su nombre insertar un marcador con el nombre del gráfico en Word, para luego copiar gráficos de Excel a Word, en el link que sigue encontrarás una macro que copia los gráficos de Excel a Word.
principalmente es automatizar el

Antes de seguir 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 vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo Recorre fila buscando y comparando datos de dos columnas en hojas distintasbuscar en listbox mientras escribes en textbox, como crear una factura o sale invoice y grabar guardar PDF XLS y enviar por mailconectar Excel con Access y muchos ejemplos más.











  


Al descargar el archivo se puede observar dos botones uno renombre los gráficos y agrega el nombre en el titulo de cada gráfico, el otro botón quita el nombre del gráfico del titulo del gráfico, al presionar los botones se puede observar que la macro realiza los descripto.

La macro va a recorrer cada uno de los gráficos que existan en la hoja de Excel y los va a renombrar así "ID más el número del gráfico recorrido por el bucle", es decir quedará ID1, ID2 y así sucesivamente con todos los gráficos que existan en la hoja.

Agregará en el titulo del gráfico su nombre para su mejor identificación, cuando no sea necesario presionando el otro botón quita el nombre del gráfico del titulo del mismo.

Para determinar el nombre del gráficos se puede cargar en una variable su nombre como por ejemplo, en el siguiente caso se le asigna a la variable xx el nombre del gráfico que recorre actualmente el bucle.

xx = ActiveSheet.ChartObjects(x).Name

Para cambiar el nombre del gráfico se utiliza la siguiente codificación:

ActiveSheet.ChartObjects(x).Name = "ID" & x

Por último la macro establece si el gráfico tiene titulo, en caso de tener titulo concatena o une el nombre del gráfico con el del titulo que tiene actualmente el gráfico, en caso de no tener titulo le agrega uno con el nombre del gráfico, esto se hace con la siguiente codificación:

If tit = Empty Then ActiveChart.SetElement (msoElementChartTitleAboveChart)
ActiveChart.ChartTitle.Text = "[ID" & x & "] " & tit

Desde el link del final se puede descargar el archivo del ejemplo de macro que se ha denominado como saber y cambiar el nombre de un gráfico en Excel, recuerda que desde el link que sigue se muestra como copiar los gráficos de Excel a Word.

En el caso que puedas considera aportar para sostener el sitio y según incorporando nuevos ejemplos que podrás descargar en forma gratuita, en caso que no puedas solicitó compartas el conocimiento con tus amigos en redes sociales. 


Código que se inserta en un módulo


Sub CrearID()
On Error Resume Next

'Seleccionar todos los objetos chart o graficos
ActiveSheet.ChartObjects.Select

For x = 1 To ActiveSheet.ChartObjects.Count

'Para saber nombre grafico
xx = ActiveSheet.ChartObjects(x).Name

ActiveSheet.ChartObjects(x).Name = "ID" & x
ActiveSheet.ChartObjects(x).Activate
'para saber nombre grafico activado
hh = ActiveChart.Name
tit = ActiveChart.ChartTitle.Text
If Mid(tit, 1, 3) = "[ID" Then GoTo salta:
'Para crear un titulo al gráfico si no tiene
If tit = Empty Then ActiveChart.SetElement (msoElementChartTitleAboveChart)
ActiveChart.ChartTitle.Text = "[ID" & x & "] " & tit
tit = Empty
salta:
Next x
Cells(17, "I").Select
End Sub


Sub QuitaID()
On Error Resume Next
For x = 1 To ActiveSheet.ChartObjects.Count
ActiveSheet.ChartObjects(x).Name = "ID" & x
ActiveSheet.ChartObjects(x).Activate
tit = ActiveChart.ChartTitle.Text

If Mid(tit, 1, 3) = "[ID" Then
lug = InStr(tit, " ")
tit = Mid(tit, lug + 1)
ActiveChart.ChartTitle.Text = tit
tit = Empty
End If
Next x
Cells(17, "I").Select
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      

Como copiar un Grafico de Excel a Word conectando Excel con Word





El ejemplo de macro que se presenta a continuación se enseña como copiar un Gráfico de Excel a Word, esta macro nos permite conectar Excel con Word, pudiendo desde Excel manejar o manipular Word, es muy común que si se deben presentar informes de ventas u otro tipo relacionados con datos numéricos, se necesite presentar un gráfico para una comprensión más facil del tema tratado.
En el link que sigue muestro como determinar y cambiar el nombre de los gráficos para poder insertar en Word el nombre del gráfico que se requiere insertar.

Si los informes son repetitivos, es decir tienen el mismo esquema variando los datos, lo cual se debe hacer en forma repetitiva, quizás mensual,  semanal, diaria o en el mas tedioso de los casos cada hora, esta macro permite copiar gráficos de Excel a Word y ayudará a confeccionar dicho informe.

Antes de seguir 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 vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo Recorre fila buscando y comparando datos de dos columnas en hojas distintasbuscar en listbox mientras escribes en textbox, como crear una factura o sale invoice y grabar guardar PDF XLS y enviar por mailconectar Excel con Access y muchos ejemplos más.









   


El archivo de ejemplo, como sucede en esta web, se podrá descargar en forma gratuita desde el link del final del post, su uso es libre pudiendo ser adaptado a las necesidades de cada uno.

Al descargar el archivo comprimido, se podrán observar dentro de éste dos archivos uno con la macro y otro archivo de Excel que es la plantilla o informe en el cual se copiarán los gráficos, al abrir el archivo de Excel, existe un botón del cual se ejecutará la macro y se observan varios gráficos que son los que se copiarán a Word.

IMPORTANTE: para que la macro funcione sin problemas, de debe descomprimir el archivo ZIP, guardando en el mismo directorio el archivo Excel con la macro y Word con la plantilla, no importa el directorio lo que si se debe respetar es que estén juntos, la explicación es que la macro buscará en el mismo directorio donde está el archivo con la macro el archivo de Word que utiliza para pegar los gráficos copiados en Excel.

La macro en un primer momento crea el nombre del archivo con que guardará el documento de Word con los gráficos, de esta manera deja intacta la plantilla, el nombre esta compuesto por el nombre de la plantilla más la fecha actual, lo mencionado se hace con el código que se muestra a continuación.


nom = ActiveWorkbook.Name
pto = InStr(nom, ".")
nomarch = Left(nom, pto - 1)
ruta = ThisWorkbook.Path & "\" & nomarch & ".docx"

El nombre del fichero nuevo se determina con estos códigos:

nomfic = nomarch & " " & Format(Date, "dd-mm-yyyy")
rutainf = ThisWorkbook.Path & "\" & nomfic & ".docx"

Posteriormente se abre el archivo de Word que utilizamos de plantilla, por eso es importante que el archivo de la macro y de Word se encuentren en el mismo directorio, ya que buscará ahí el fichero con la plantilla.

Luego la macro realiza un bucle recorriendo desde el primer al último gráfico que se encuentra en la hoja de Excel, dando un nombre igual al identificador o campo que está previamente establecido en Word, por cada gráfico buscará donde se encuentra el respectivo identificador en Word y ahí pegará el gráfico copiado en Excel, la siguiente codificación realiza lo mencionado.

For x = 1 To ActiveSheet.ChartObjects.Count
ActiveSheet.ChartObjects(x).CopyPicture
xx = Selection.Name

ts = "[ID" & x & "]"
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=ts
While objWord.Selection.Find.Found = True
objWord.Selection.Paste ' False, True, False
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=ts
can = can + 1
Wend
Next x

Por último la macro guardará el archivo de Word con el nuevo nombre creado y que está compuesto por el nombre de la plantilla más la fecha actual, saliendo un mensaje al final de la macro avisando su finalización; para ello se usa este código.

wdDoc.SaveAs Filename:=rutainf, FileFormat:=wdFormatXMLDocument
MsgBox ("Se copiaron " & can & " gráficos de Excel a Word"), vbInformation, "AVISO"

Si es preciso se puede cerrar el archivo de Word y la instancia de Word, con los siguientes códigos, el primero cierra el archivo de Word y el segundo la Instancia d Word.


wdDoc.Close

wdDoc.Quit

En el ejemplo los códigos anteriores aparecen comentados, es decir están con un apostrofe al inicio lo que le indica a la macro que no lo debe tomar como código; la macro no se cierra el archivo a los fines prácticos para poder mostrar como quedan copiados los gráficos en Word cuando finaliza la macro, pero si es preciso ustedes pueden hacer que la macro directamente cierre Word, no viendo absolutamente nada del proceso que realiza la macro, para ello se debe solamente quitar el apostrofe del código mencionado.

Sugiero descargar el fichero y ejecutar paso a paso la macro para que sea más fácil entender la programación del formulario, ejemplo de macro que se ha denominado como copiar un Gráfico de Excel a Word conectando Excel co Word

En el caso que puedas considera aportar para sostener el sitio y según incorporando nuevos ejemplos que podrás descargar en forma gratuita, en caso que no puedas solicitó compartas el conocimiento con tus amigos en redes sociales. 


Código que se inserta en un módulo


Sub CopiaGraficoAWord()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim objWord As Word.Application, wdDoc As Word.Document
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 & " " & Format(Date, "dd-mm-yyyy")
rutainf = ThisWorkbook.Path & "\" & nomfic & ".docx"

For x = 1 To ActiveSheet.ChartObjects.Count
ActiveSheet.ChartObjects(x).CopyPicture
xx = Selection.Name

ts = "[ID" & x & "]"
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=ts
While objWord.Selection.Find.Found = True
objWord.Selection.Paste ' False, True, False
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=ts
can = can + 1
Wend
Next x

wdDoc.SaveAs Filename:=rutainf, FileFormat:=wdFormatXMLDocument
'wdDoc.Close
MsgBox ("Se copiaron " & can & " gráficos de Excel a Word"), 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      

Como eliminar dato seleccionado del listbox y libro excel con enter





Este ejemplo elimina datos de listbox y de la base de datos al presionar enter, en el listbox se muestra una serie de compañías aseguradoras, que podrán ser eliminadas del listbox al presionar enter; se complementa con otro presentado anteriormente que permitía eliminar datos del listbox y de la base de datos mediante doble click en el registro, considera analizar también este último ejemplo y aplicar el que mas se ajuste a los usuarios finales del proyecto.

En los links siguientes se muestran otros ejemplos con listbox, cuyos ejemplos se pueden descargar en forma gratuita desde esta web.


1) Como pasar datos de listbox a otro listbox con enter
2) Pasar datos de listbox multiselect a hoja excel con enter
3) Crear factura de venta eligiendo cliente desde listbox
4) Como cargar datos en textbox y pasarlos a listbox
5) Pasar item de listbox a hoja de Excel
6) Como mostrar suma, cuenta, promedio en el mismo listbox
7) Buscar datos en listbox mientras se escribe en textbox

Antes de seguir 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 vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo Recorre fila buscando y comparando datos de dos columnas en hojas distintasbuscar en listbox mientras escribes en textbox, como crear una factura o sale invoice y grabar guardar PDF XLS y enviar por mailconectar Excel con Access y muchos ejemplos más.







   


Puedes descargar el ejemplo que se presenta en este post desde el enlace de descarga del final, el formulario que se muestra al presionar el botón, tiene adicionado un buscador de datos en el listbox mientras se escribe en el textbox, específicamente el tema tratado en este post de eliminación de datos seleccionados en el textbox, se encuentra en el evento keypress del listbox.

Cuando se presiona una tecla encontrándose seleccionado un ítem en listbox, la macro detecta si el la tecla presionada es la tecla ENTER, para ello establece cual es el código ascii de la tecla presionada, en caso de ser igual a 13 (que es el número que representa a la tecla ENTER en la tabla de código ascii).


If KeyAscii = 13 Then

If ListBox1.ListIndex > 0 Then

El código anterior detecta en primer lugar si la tecla presionada es la tecla ENTER, en caso de ser positivo, se establece si el dato que se pretende eliminar es distinto a la cabecera o header, que son los datos de la primer fila del listbox, en caso que se pretenda eliminar la primer fila directamente se termina la macro, porque no permite eliminar la cabecera, header o nombres de las columnas.

Es de destacar y advertir que al eliminar datos del listbox automáticamente se elimina el registro de la base de datos, si lo que se requiere es eliminar solamente el dato del textbox sin eliminar el registro de la base de datos, lee el siguiente post: como eliminar datos del listbox con ENTER.

Para que la macro sepa que registro eliminar de la base de datos, se busca el dato seleccionado en el textbox en la base de datos, una vez encontrado la macro procede a eliminarlo del textbox y de la base de datos, para ello se utiliza el siguiente código:


fila = ListBox1.ListIndex
cod = UserForm1.ListBox1.List(fila, 1)
ListBox1.RemoveItem (ListBox1.ListIndex)
Set codigo = a.Range("B2:B" & filaedit).Find(cod, LookIn:=xlValues, LookAt:=xlWhole)
If Not codigo Is Nothing Then
Dire = codigo.Row

En la variable fila se carga el valor del número de fila del listbox, para luego cargar en la variable cod el valor que se encuentra en el textbox que coincide con el número de fila seleccionada y la columna 1, ese dato se busca en la base de datos, una vez encontrado, se carga la fila en la variable Dire que luego se utiliza para eliminar el registro en la base de datos con el siguiente código:


a.Cells(Dire, "A").EntireRow.Delete

Invito a descargar el archivo y mirar ejecutar paso a paso la macro para que sea más fácil entender la programación del formulario, ejemplo que se ha denominado como eliminar dato seleccionado del listbox y libro de Excel al presionar ENTER.

En el caso que puedas considera aportar para sostener el sitio y según incorporando nuevos ejemplos que podrás descargar en forma gratuita, en caso que no puedas solicitó compartas el conocimiento con tus amigos en redes sociales. 


Código que se inserta en un módulo


Sub muestra1()
UserForm1.Show
End Sub


Código que se inserta en un formulario
Private Sub CommandButton3_Click()
Unload UserForm1
End Sub

Private Sub ListBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
On Error Resume Next

If KeyAscii = 13 Then
If ListBox1.ListIndex > 0 Then
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set a = Sheets("Hoja1")
filaedit = a.Range("B" & Rows.Count).End(xlUp).Row
fila = ListBox1.ListIndex
cod = UserForm1.ListBox1.List(fila, 1)
ListBox1.RemoveItem (ListBox1.ListIndex)
Set codigo = a.Range("B2:B" & filaedit).Find(cod, LookIn:=xlValues, LookAt:=xlWhole)
If Not codigo Is Nothing Then
Dire = codigo.Row
a.Cells(Dire, "A").EntireRow.Delete
End If
Else
Exit Sub
End If
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End If
End Sub

Private Sub TextBox1_Change()
On Error Resume Next
Set b = Sheets("Hoja2")
uf = b.Range("A" & Rows.Count).End(xlUp).Row
If Trim(TextBox1.Value) = "" Then
Me.ListBox1.RowSource = Clear
'Adiciona un item al listbox reservado para la cabecera
UserForm1.ListBox1.AddItem

For i = 2 To uf
       Me.ListBox1.AddItem b.Cells(i, 1)
       Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = b.Cells(i, 2)
Next i

'Carga los datos de la cabecera en listbox
For ii = 0 To 8
UserForm1.ListBox1.List(0, ii) = Sheets("Hoja2").Cells(1, ii + 1)
Next ii
   Exit Sub
End If

b.AutoFilterMode = False
Me.ListBox1.Clear
Me.ListBox1.RowSource = Clear
'Adiciona un item al listbox reservado para la cabecera
UserForm1.ListBox1.AddItem
For i = 2 To uf
   strg = b.Cells(i, 2).Value
   If UCase(strg) Like UCase(TextBox1.Value) & "*" Then
       Me.ListBox1.AddItem b.Cells(i, 1)
       Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = b.Cells(i, 2)
   End If
Next i

'Carga los datos de la cabecera en listbox
For ii = 0 To 7
UserForm1.ListBox1.List(0, ii) = Sheets("Hoja2").Cells(1, ii + 1)
Next ii

Me.ListBox1.ColumnWidths = "30 pt;150pt"
End Sub


Private Sub UserForm_Initialize()
Dim fila As Long
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Set b = Sheets("Hoja2")
uf = b.Range("A" & Rows.Count).End(xlUp).Row
With Me.ListBox1
    .ColumnCount = 2
    .ColumnWidths = "30 pt;150pt"
End With

'Adiciona un item al listbox reservado para la cabecera
UserForm1.ListBox1.AddItem
For i = 2 To uf
       Me.ListBox1.AddItem b.Cells(i, 1)
       Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = b.Cells(i, 2)
Next i
'Carga los datos de la cabecera en listbox
For ii = 0 To 8
UserForm1.ListBox1.List(0, ii) = Sheets("Hoja2").Cells(1, ii + 1)
Next ii

Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
On Error GoTo Fin
If CloseMode <> 1 Then Cancel = True
Fin:
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