Saltar al contenido

Novato y macro seleccion


Recommended Posts

publicado

hola amigos estoy empezando con esto de los macros y no lo he hecho con buen pie

estoy intentando crear una macro que me selecciones todas las celdas desde la b4 todas las celdas que tengan algo escrito y lo hago tal que asi

sub seleccion()
[b4].currentregion.select
end sub[/CODE]

pero como en b2 y por ahi hay cosas tambien me lo selecciona

como puedo hacer que seleccione solo desde b4 a la derecha y hacia abajo las celdas que tengan algo?

no subo el archivo por que es para hacerlo en una hoja que empiezo en blanco

publicado

pues no tiene sentido si es para hacerlo en una hoja que comienzas en blanco!!!!

directo desde la grabadora de macros

Sub Macro1()

Range("B4").Select
Range(Selection, Selection.End(xlDown)).Select
End Sub[/CODE]

suerte

publicado
pues no tiene sentido si es para hacerlo en una hoja que comienzas en blanco!!!!

directo desde la grabadora de macros

Sub Macro1()

Range("B4").Select
Range(Selection, Selection.End(xlDown)).Select
End Sub[/CODE]

suerte

se que asi explicado no tiene sentido pero muchas gracias has dado en el clavo

lo digo que es para una hoja en blando por que yo recivo datos en otro excel y lo pego a una hoja en blanco y se que siempre tengo que copiar desde b4 por eso lo digo que me vale para todos los trabajos que hago si tengo mas dudas aki las posteare

publicado

seguimos para bingo ya he solucionado que me copie los valores que yo le pido pero ahora no me lo pega en la hoja2 en la primera celda activa he modificado el archivo original (que adjunto al post) para que seleccione solo de las columnas a a la d solo las que esten completas en la A y me lo selecciona bien pero a la hora de pegarlo en la primera cerda vacia de la hoja 2 me da error en tiempo de ejecucion

tambien estoy viendo como puedo hacer que compruebe datos y no copia duplicados

me ayudais?

por ahora voy asi


Sub macri1()
Range("a4:d4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("bolsa").Select
Range("b4").Select
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Wend
ActiveSheet.Paste
Application.CutCopyMode = False
Range("b4").Select
End Sub
[/CODE]

como veis me tiene que copiar las columnas a,b,c y d de la hoja uno si es na columna a hay datos y pegarlos en la hoja dos en la primera celda vacia

Plantilla_semaforo1.xls

publicado

Amigo @[uSER=167650]hipomenes[/uSER], cambia tu macro por esta otra

Sub macri1()
Worksheets("DIARIO").Select
ActiveSheet.Range("A4:D4").Select
ActiveSheet.Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("bolsa").Select
ActiveSheet.Range("b4").Select
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Wend
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveSheet.Range("b4").Select
End Sub[/CODE]

si revisas, lo unico que hice fue colocar ActiveSheet. en las líneas de seleccion; tu macro funciona bien (la seleccion) en la hoja DIARIO pero NO en la hoja BOLSA, porque?, no se, a veces excel da estos problemas y por lo menos yo no logro entender el motivo, simplemente hay que buscarle la vuelta; yo particularmente siempre coloco explicitamente el nombre de la hoja en las sentencias, por ejemplo en vez de colocar RANGE("A1").Select, coloco Worksheets("x").Range("A1").Select (o en su defecto el ActiveSheet), suerte

  • 2 weeks later...
publicado

Hola muy buenas a tod@s dsd Sevilla.....aquí otro novato no...lo siguiente.....Llevo como 10 dias intentando entender macros y me pierdo... :( ....yo necesito que las casillas donde están las fechas para el aviso, me lance avisos a través de outlook como tareas pendientes. Es decir el 10/02, el 01/10, etc.etc....así por cada fecha. No sé si las fechas me las envía la macro que se crea o las he de poner manualmente en el calendario de outlook...Esta es sola una hoja de un libro con unas 20 hojas todas con mismo formato y que deben saltar cada una en su fecha...adjunto el archivo. Estoy desesperado con esto.

Gracias de antemano.

Copia de Prueba de control maquinaria.xls

publicado

amigo @[uSER=167958]Pierre no doy una[/uSER], debes crear tu propio tema para tus dudas, no uses el tema de otro usuario, de otra forma será dificil que consigas ayuda, recuerda leer las normas y reglas del foro, suerte

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      29

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    2    1

  • Crear macros Excel

  • Mensajes

    • Que tal nuevamente,  adjunto una solución alternativa: =MAX(A:.A)-BYROW(F4:.AK20,LAMBDA(r,BUSCAR(2,1/(r=0),F3:.AK3))) Cabe mencionar que esta solución requiere funciones nuevas como RECORTAR.RANGO. CONTADOR FINAL (Solucion).xlsb
    • Buenos días,  espero se encuentren bien de salud compañeros, Favor me podrían ayuda con lo siguientes como se podría hacer cuando tengo una tabla dinámica que  amedida que se aumente las columnas fechas con data un formula que se coloco al final busque o analice siempre la ultima fila y columna de la fecha. Coloco un ejemplo
    • @JSDJSD Excelentes, GRACIAS POR TU SOPORTE , me ayudo demasiado es exactamente lo que quería. 5 ESTRELLAS
    • 'Opción 1 Sub FiltrarSKUPorFecha(): Application.ScreenUpdating = False Dim ultimaFila As Long, fila As Long Dim diccionarioSKU As Object Dim listaEliminar As Object Dim fechaActual As String, fechaSiguiente As String Dim f As Variant With Sheets("Consolidado") ultimaFila = .Cells(.Rows.Count, 1).End(xlUp).Row ' Crear diccionarios para comparar SKU y almacenar filas a eliminar Set diccionarioSKU = CreateObject("Scripting.Dictionary") Set listaEliminar = CreateObject("Scripting.Dictionary") ' Recorrer desde la primera fila hasta la penúltima For fila = 2 To ultimaFila - 1 fechaActual = .Cells(fila, 1).Value fechaSiguiente = .Cells(fila + 1, 1).Value ' Solo comparar la fecha actual con la siguiente (inmediatamente superior) If fechaActual <> fechaSiguiente Then diccionarioSKU.RemoveAll ' Limpiar el diccionario antes de llenarlo ' Guardar los SKU de la fecha siguiente (solo de la siguiente) For f = fila + 1 To ultimaFila If .Cells(f, 1).Value <> fechaSiguiente Then Exit For diccionarioSKU(.Cells(f, 2).Value) = 1 Next f ' Revisar los SKU de la fecha actual y marcar los que deben eliminarse For f = fila To 2 Step -1 If .Cells(f, 1).Value <> fechaActual Then Exit For ' Solo eliminar si el SKU no está en la fecha siguiente If Not diccionarioSKU.exists(.Cells(f, 2).Value) Then listaEliminar(f) = 1 ' Marcar fila para eliminar después End If Next f ' Ya no es necesario seguir buscando después de comparar la primera y la siguiente fecha Exit For End If Next fila ' Eliminar las filas marcadas sin afectar el bucle principal For Each f In listaEliminar.keys .Rows(f).Delete Next End With MsgBox "Completado correctamente.", vbInformation End Sub 'Opción 2 Sub FiltrarSKUPorFecha1(): Application.ScreenUpdating = False Dim ultimaFila As Long, fila As Long Dim listaEliminar As Collection Dim fechaActual As String, fechaSiguiente As String Dim f As Variant, i As Long Dim SKUExiste As Boolean With Sheets("Consolidado") ultimaFila = .Cells(.Rows.Count, 1).End(xlUp).Row ' Inicializar la colección para marcar las filas a eliminar Set listaEliminar = New Collection ' Recorrer desde la primera fila hasta la penúltima For fila = 2 To ultimaFila - 1 fechaActual = .Cells(fila, 1).Value fechaSiguiente = .Cells(fila + 1, 1).Value ' Solo comparar la fecha actual con la siguiente (inmediatamente superior) If fechaActual <> fechaSiguiente Then ' Revisar los SKU de la fecha actual y marcar los que deben eliminarse For f = fila To 2 Step -1 If .Cells(f, 1).Value <> fechaActual Then Exit For ' Comprobar si el SKU está en la fecha siguiente SKUExiste = False For i = fila + 1 To ultimaFila If .Cells(i, 1).Value <> fechaSiguiente Then Exit For If .Cells(i, 2).Value = .Cells(f, 2).Value Then SKUExiste = True Exit For End If Next i ' Si el SKU no se encuentra en la fecha siguiente, marcar para eliminar If Not SKUExiste Then listaEliminar.Add f ' Marcar fila para eliminar después End If Next f ' Ya no es necesario seguir buscando después de comparar la primera y la siguiente fecha Exit For End If Next fila ' Eliminar las filas marcadas sin afectar el bucle principal For Each f In listaEliminar .Rows(f).Delete Next f End With MsgBox "Completado correctamente.", vbInformation End Sub   TABLA ELIMINAR.xlsm
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.