Intentaré solucionar cualquier problema que tengas con tus macros, solo detalla lo que necesitas y pega el código si lo tienes, pero si no lo tienes hechale imaginación al post, suerte.
Ya que si lo prefieres te puedo desarrollar la solución que necesitas con algo más, desarrollo para administrar inventario, hacer pedidos, registrar ordenes de compra y/o de venta, facturación, administrar personal, hablemos de costos, que en relidad son pequeños hasta 500 Pesos Mx por User Form y bueno en realidad, es lo mejor del mercado, el manual va por mi cuenta, la asistencia y modificaciones, facturada pero igual de bara.
Lo mejor es que si quieres lo puede hacer tu siguiendo el curso que estoy publicando
















13 users commented in " ¿Problemas con tu Macro? "
Follow-up comment rss or Leave a TrackbackEl código anterior lo puedes sustituir por este, le haces las modificaciones necesarias agregando tantas lineas como las que necesites y modificando los datos origen y destino
Es necesario que tengas en cuenta que la linea:
a = 0 ‘ Fila en la que empieza la verificación, 0 es la primera, 1 la segunda si tienes encabezados
Es la que nos dice que la hoja tiene encabezados y por tanto ponemos 1 que es la linea 2 pora el offset(a,#)
Sub verifica()
‘ Quita el formato cada vez que comienza la verificación
Sheets(Array(”Hoja1?, “Hoja2?)).Select
With ActiveSheet.Cells(1, 1).EntireColumn
.Font.ColorIndex = xlAutomatic
.Interior.Pattern = xlNone
End With
Sheets(”Hoja1?).Select
ActiveSheet.Range(”A1?).Select
‘-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
a = 0 ‘ Fila en la que empieza la verificación, 0 es la primera
1:
‘ Si la celda verificada es vacia entonces termina la macro
If ActiveCell.Offset(a, 0) = “” Then End
‘-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
‘ Asigna un valor de cuantas veces se encuentra la matricula en Hoja2
buscar = Application.CountIf(Sheets(”Hoja2?).Cells(1, 1).EntireColumn, ActiveCell.Offset(a, 0))
‘-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
‘ Si se encontro el valor, buscar es mayor que 0 y se le da formato a la celda si no _
entonces no se da farmato.
If buscar > 0 Then
‘ ActiveCell.Offset(a, 0).Font.ColorIndex = 3
‘_-*-_-*-_-*-_ ahora cambiaremos el formato por la extracción de datos _-*-_-*-_-*-_ _
Vamos a utilizar la función match para extraer la línea en la que se encontro buscar _
y la asignamos a la variable Lin, extraemos los datos entonces ordenandolos en las _
columnas que queramos
With Sheets(”Hoja2?)
Lin = Application.Match(ActiveCell.Offset(a, 0), Sheets(”Hoja2?).Cells(1, 1).EntireColumn, 0)
‘ Destino = Origen
ActiveCell.Offset(a, 1) = .Cells(Lin, 2)
ActiveCell.Offset(a, 2) = .Cells(Lin, 4)
End With
End If
‘-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
‘ Una vez que se da o no formato entonces cambia el valor a la fila fila siguiente es a la _
que el cursosr se desplaza Offset(fila, columan)
a = a + 1
‘-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
‘ Regresa a la verificación
GoTo 1
End Sub
Hola Gregorio:
Me funciona de maravilla la macro. He agregado que me copie de más columnas y funciona a la perfección. Muchas gracias. Ahora querría hacer otra cosa, tú dirás si es posible. Me interesa copiar contenidos de una hoja a otra, pero que sea a través de una orden mía. O sea quiero que teniendo una columna en la cual introducir por ejemplo una X toda la fila pase de la hoja 1 a la hoja 2. Claro que no se debe cumplir la condición del número de fila sino que se copie a continuación de la última fila ocupada en la hoja 2. Si quiere te puedo poner el ejemplo más claro y te lo envío al mail.
Gracias.
Adel
Adel gusto que este de nuevo por aquí.
Si se puede hacer lo que me comentas, me es necesario y creo que para los lectoes también lo será, que pongas la función y el código de la macro de la que me hablas y partiendo de ahí hacemos las modificaciones o si es el caso una nueva macro
Cuidate, hasta pronto
Hola Gregorio:
Necesito crear una macro que, dada una fecha, por ejemplo, 31/01/2007 me seleccione de un listado de ventas las ventas comprendidas de por ejemplo el siguiente mes o siguiente trimestre, o las ventas en un rango de dias concretos, por ejemplo entre el 21/04/2007 y el 23/04/2007 (si existieran, claro), que las selecciones y las copie automaticamente a otro sitio.
yokese01, si se puede hacer, solo que necesito me detalles la hoja en la que se encuentran las ventas(todas las columnas) y que columnas deseas extraer de ella a la otra hoja.
Ok, te envio por email un ejemplo.
Como veras, las celdas C4 y E4 delimitan el periodo a seleccionar de la columna A:A. Dependiendo del periodo que pongamos en C4 y E4 debe seleccionar de la columna A:A las ventas comprendidas entre esas dos fechas y copiarlas a las columnas F:F y G:G. En el ejemplo esta puesto en rojo lo que deberia hacer para las fechas que le he puesto en C4, E4.
Saludos!
Ok, te posteo una de las tantas soluciones que se pueden dar a este misma problematica, espero que te funcione y si no pues me dices en que le fallé y lo cambiamos, un placer ayudarte, hasta pronto.
Sub Reporte()
Application.ScreenUpdating = False
Dim Fecha_in As Date
Dim Fecha_fi As Date
Lin_Dat = 8
Lin_Rep = 8
Fecha_in = Cells(4, 3)
Fecha_fi = Cells(4, 5)
tot = 0
2:
If Format(Cells(Lin_Dat, 1), “dd/mm/yyyy”) >= Fecha_in And _
Format(Cells(Lin_Dat, 1), “dd/mm/yyyy”) <= Fecha_fi Then
Cells(Lin_Rep, 6) = Cells(Lin_Dat, 1)
Cells(Lin_Rep, 7) = Cells(Lin_Dat, 2)
tot = tot + Cells(Lin_Dat, 2)
Lin_Dat = Lin_Dat + 1
Lin_Rep = Lin_Rep + 1
Else
If Cells(Lin_Dat, 1) = “” Then GoTo Fin
Lin_Dat = Lin_Dat + 1
End If
GoTo 2
Fin:
Cells(Lin_Rep, 6) = “Total”
Cells(Lin_Rep, 7) = tot
Application.ScreenUpdating = True
End Sub
Muchisimas gracias Gregorio. Con varias modificaciones me ha servido para lo que buscaba. Saludos!
Hola de nuevo Gregorio.
Tengo una nueva duda. ¿Sabes si existe alguna funcion en el VBA de Excel para que te devuelva el promedio (average) de un rango seleccionado?
Algo asi como:
Dim ValorPromedio as double
Range(“A1:A30″).Select
ValorPromedio = Selection.Average
Es por evitarme tener que crear bucles para sumar los datos y luego dividirlo por el numero de datos para sacar el promedio, que supongo hacer esto seria mas lento luego en tiempo de procesador.
Hola de nuevo Gregorio,
Vaya broma, jejeje, justo enviar el mensaje voy y veo lo que buscaba, pero es que en el desplegable que sale cuando pones Application. no me sale el metodo Average ¿esta indocumentado???.
En fin, Lo pongo por si da la casualidad que alguien busca lo mismo, o asi lo sabe por si algun dia lo necesita:
ValorPromedio = Application.Average(Range(“A1:A30″))
Bueno, ya que estoy, aprovecho para preguntarte algun buen metodo, programa o algo asi que me ayude en estas busquedas de la funcion, metodo, propiedad, etc. correcto para realizar estas pequeñas tareas. Es que la ayuda de microsoft excel para estas cosas la veo muy pobre o muy liosa… mismamente esto de application.AVERAGE como ya digo ¡NO VIENE! (o no lo encuentro facilmente…)
Recuerdo que una vez encontre un programa que tenia 2000 (quiza mas…) pequeñas macros con su codigo y explicacion pero no doy con el, ¿usas tu algo similar o mejor que eso para saber que metodo, propiedad, etc. existe adecuada para cada tarea?
No, en realidad con eso de la ayuda en Excel estoy igual que tu, la solución a mis incognitas siempre es mediante el método prueba y error, así he sacado muchas dudas asi que si tienes más dudas solo dime y si lo tengo te lo paso y si no, pues le buscamos, hasta pronto y gracias por lo de application.averange
Hola de nuevo, Gregorio, ¿que tal?
He asignado imagenes a varios botones y a veces, sin venir a cuento, dichas imagenes no se me aplican a los botones, grabo la hoja con dichas imagenes y cuando la vuelvo a abrir la imagen no aparece sobre el boton. ¿A que puede ser debido este problema? ¿sabes en dónde guarda EXCEL las imágenes que asigné a un commandbutton? Lo digo por si la pudiera re-cargar desde ahí con algo así como:
CommandButton.Picture = LugarDondeExcelGuardaImagenAsignadaAbotones
Creo que con la propiedad Picture en VBA podría re-cargar la imagen de nuevo, ¿no? pero necesito saber donde fue guardada en la hoja excel o algo así.
En fin, a ver si tienes alguna idea de cual puede ser el problema o de como solucionarlo.
Gracias!
Mil disculpas por la tardanza pero tenía demaciado trabajo pero creo que asignando las imagenes en el código desde un directorio en donde se encuentren te funcionará.