codigo for each macro

Solo consultas sobre macros y código VBA Excel.

Reglas del Foro
1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!
Compartir en:
     

codigo for each macro

Notapor mariano » 22 Nov 2004 13:23

8) 8) hola amigos de exceluciones: necesito ayuda con una macro que me avise si tengo un codigo o numero repetido en una columna una vez que estan volcados los datos. Creo que se hace con for each pero como no tengo un gran conocimiento de vbasic no puede hacerla.
A proposito de macros vi que estan preparando un libro en español Será posible adquirirlo desde Argentina?? Adjunto archivo aver si me pueden ayudar Gracias y saludos
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mariano
Miembro Frecuente
Miembro Frecuente
 
Registrado: 20 Sep 2004 14:51
Ubicación: santa fe, argentina

Re: codigo for each macro

Notapor Adrian » 22 Nov 2004 14:53

Te devuelveo el xls con una fórmula para identificar repetidos.

Te reomiendo que veas las demos de nuestros complementos (como dice la firma) existen funciones variadas y íšTILES.

Atte.
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Adrian
Moderator
Moderator
 
Registrado: 13 Jun 2004 17:24
Ubicación: Chamical La Rioja ARG

Re: codigo for each macro

Notapor opermty » 04 Ago 2006 01:02

Hola anexo codigo para lo que necesitas :)

Sub repetidos()
Application.ScreenUpdating = False
Range("a2").Select
fila = 2
Do Until ActiveCell = Empty
Cells(fila, 1).Select
midir = ActiveCell.Address
paso = ActiveCell.Value
Range(ActiveCell.Offset(1, 0), Selection.End(xlDown)).Select
For Each x In Selection
If paso = x Then x.Offset(0, 1).Value = "Repetido" & midir ': MsgBox "Repetidos"
Next x
fila = fila + 1
Loop
Range("a2").Select
Application.ScreenUpdating = True
End Sub


8)
Saludos
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
opermty
Miembro Frecuente
Miembro Frecuente
 
Registrado: 29 Abr 2006 04:11
Ubicación: MONTERREY NL MX

Notapor opermty » 04 Ago 2006 01:03

anotra ademas la direccion del primer dato que se repite :)
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
opermty
Miembro Frecuente
Miembro Frecuente
 
Registrado: 29 Abr 2006 04:11
Ubicación: MONTERREY NL MX

Re: codigo for each macro

Notapor KL » 06 Ago 2006 17:58

A ver esto
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
KL
Miembro Frecuente
Miembro Frecuente
 
Registrado: 18 Mar 2006 13:57
Ubicación: Madrid

Re: codigo for each macro

Notapor KL » 06 Ago 2006 19:52

Lo siento - los tiempos de recalculo para los macros estan mal en el anexo de mi mensaje anterior. Aqui va la version corregida.
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
KL
Miembro Frecuente
Miembro Frecuente
 
Registrado: 18 Mar 2006 13:57
Ubicación: Madrid

Re: codigo for each macro

Notapor opermty » 07 Ago 2006 02:09

No cabe duda que nunca terminamos de aprender :!:

Dim Unicos As New Collection
Unicos.Add c.Address, c.Text

With ws
Set rng = .Range(.Cells(2, col), _
.Cells(.Rows.Count, col).End(xlUp)) _
.SpecialCells(xlCellTypeConstants)
End With

Solo un dato que me parece curioso en esta parte del codigo:

For Each ws In ThisWorkbook.Worksheets
On Error GoTo Salida

Esta parte nos obliga a salir del bucle si la hoja se encuentra vacia o las celdas no contienen datos haciendo caso omiso de las hojas consecutivas.

Pero como siempre acertado en sus comentarios

Saludos
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
opermty
Miembro Frecuente
Miembro Frecuente
 
Registrado: 29 Abr 2006 04:11
Ubicación: MONTERREY NL MX

Re: codigo for each macro

Notapor opermty » 07 Ago 2006 03:02

Hola :)

Buscando mas detalles sobre el codigo expuesto anteriormente me tope de casualidad con esto:

La función .SpecialCells(xlCellTypeBlanks) de VBA no funciona como se espera en Excel
http://support.microsoft.com/kb/832293/es

Sí­ntomas
Cuando crea una macro de Microsoft Visual Basic para Aplicaciones ( VBA ) que selecciona varios rangos no contiguos de un libro de Microsoft Excel que utiliza una expresión de VBA que es similar a las acciones siguientes que sólo se deberí­an producir en no contiguo, las celdas se producen en cada celda de la selección original en la hoja de cálculo:

expresión.SpecialCells(XlCellType).expresión XlCellType

Puede ser cualquier uno de los siguientes:
• xlCellTypeAllFormatConditions
• xlCellTypeAllValidation
• xlCellTypeBlanks
• xlCellTypeComments
• xlCellTypeConstants
• xlCellTypeFormulas
• xlCellTypeSameFormatConditions
• xlCellTypeSameValidation
• xlCellTypeVisible


Causa
Este comportamiento se produce si selecciona más de 8192 celdas no contiguas con su macro. Excel sólo admite un máximo de 8192 celdas no contiguas a través de macros de VBA.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
opermty
Miembro Frecuente
Miembro Frecuente
 
Registrado: 29 Abr 2006 04:11
Ubicación: MONTERREY NL MX

Re: codigo for each macro

Notapor KL » 07 Ago 2006 05:12

opermty";p="29718 escribió:Solo un dato que me parece curioso en esta parte del codigo:

For Each ws In ThisWorkbook.Worksheets
On Error GoTo Salida

Esta parte nos obliga a salir del bucle si la hoja se encuentra vacia o las celdas no contienen datos haciendo caso omiso de las hojas consecutivas.


Gracias opermty, tienes razon. A ver este codigo corregido:

Código: Seleccionar todo
Sub Repetidos2()
    Dim Unicos As New Collection
    Dim ws As Worksheet
    Dim c As Range, rng As Range
    Dim col As String
   
    col = "A"
    Application.ScreenUpdating = False
    For Each ws In ThisWorkbook.Worksheets
        On Error Resume Next
        With ws
            Set rng = .Range(.Cells(2, col), _
                .Cells(.Rows.Count, col).End(xlUp)) _
                    .SpecialCells(xlCellTypeConstants)
        End With
        On Error GoTo 0
        If Not rng Is Nothing Then
            For Each c In rng
                On Error Resume Next
                Unicos.Add c.Address, c.Text
                If Err.Number <> 0 Then c.Offset(, 1) = "Repetido " _
                    & rng.Find(c, rng(1), , xlWhole).Address
            Next c
            Set Unicos = Nothing
            Set rng = Nothing
            i = 0
        End If
    Next ws
    Application.ScreenUpdating = True
End Sub
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
KL
Miembro Frecuente
Miembro Frecuente
 
Registrado: 18 Mar 2006 13:57
Ubicación: Madrid

Re: codigo for each macro

Notapor KL » 07 Ago 2006 05:19

Hola opermty,

opermty";p="29719 escribió:La función .SpecialCells(xlCellTypeBlanks) de VBA no funciona como se espera en Excel
http://support.microsoft.com/kb/832293/es


Buen comentario. Es cierto - este es un problema (o limitacion) conocido de SpecialCells, aunque es bastante infrecuente el intentar trabajar con 8192 celdas no contiguas. Como ejemplo, en una columna donde las celdas llenas se alternan con las vacias (llena, vacia, llena, vacia, etc.) haria falta 16.384 filas para alcanzar el limite. En las situaciones reales esta distribucion tan perfecta es posible, pero poco probable especialmente cuando se trata de bases de datos donde el codigo (ID) es obligatorio.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
KL
Miembro Frecuente
Miembro Frecuente
 
Registrado: 18 Mar 2006 13:57
Ubicación: Madrid

Re: codigo for each macro

Notapor jbf99 » 07 Ago 2006 08:55

Aqui voy yo , preparar la muñeca chochona que ahora si que me la llevo 8) o me estrello como el Raikkonen que todo es posible 8).
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
jbf99
Miembro Frecuente
Miembro Frecuente
 
Registrado: 15 Jul 2005 07:50

Re: codigo for each macro

Notapor KL » 07 Ago 2006 16:25

Hola jbf99,

Lo de siempre - dos noticias: una buena y otra no tanto...
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
KL
Miembro Frecuente
Miembro Frecuente
 
Registrado: 18 Mar 2006 13:57
Ubicación: Madrid

Notapor jbf99 » 08 Ago 2006 04:20

Vaya , me han fallado los neumaticos de lluvia.

El rangecalc ese me daba que la UDF tenia una velocidad de recalculo era similar a la formula normal , se me habria escacharrao el cuentakilometros.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
jbf99
Miembro Frecuente
Miembro Frecuente
 
Registrado: 15 Jul 2005 07:50

Notapor KL » 08 Ago 2006 05:54

Hola jbf99,
jbf99";p="29769 escribió:El rangecalc ese me daba que la UDF tenia una velocidad de recalculo era similar a la formula normal


No sera que ejecutas el rangecalc en modo de recalculo en Automatico? Si el recalculo esta en automatico, las formulas no volatiles (que es el caso de todas las que se han propuesto) no recalculan y dan un tiempo demasiado bueno :-) Prueba poner el recalculo en manual.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
KL
Miembro Frecuente
Miembro Frecuente
 
Registrado: 18 Mar 2006 13:57
Ubicación: Madrid

Notapor LUIS MIGUEL LOPEZ OSORIO » 09 Ago 2006 01:06

SEÑOR MARIANO,
CON KL USTED TIENE LA SOLUCIí“N PECFECTA CUANDO DE MACROS DE TRATA

RECOMIENDO SU APLICABILIDAD EN EL TEMA
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
LUIS MIGUEL LOPEZ OSORIO
Miembro Frecuente
Miembro Frecuente
 
Registrado: 16 May 2005 22:57
Ubicación: Córdoba


Compartir en:
     

  • Anuncio
Manual Excel avanzado

Volver a Macros

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 11 invitados