Contador en una macro

Hola experto tengo dudas...
¿prove un código de un contador que me mandaron pero no remplaza todos porque sera?
Me remplaza partes de cada bloque
Este código ya lo adapte al contador que me mandaron espero que me puedas ayudar
Dim s As Integer
s = 0
fecha1 = InputBox("Fecha que desea sustituir?", "ORIGEN", Now())
If fecha1 = Empty Then Exit Sub 'mejorar con revisión validez fecha
fecha2 = InputBox("Fecha nueva?", "DESTINO", Now())
If fecha2 = Empty Then Exit Sub 'mejorar con revisión fecha
'Le preguntarás al usuario por las fechas a sustituir y la nueva, y
Do While True
On Error GoTo salida
Cells.Find(What:=Format(UCase(Format(fecha1, "MMMM")) & "_" & Format(fecha1, "yyyy") & "_" & Format(fecha1, "dd")), After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Replace What:="[MORELOS_" & UCase(Format(fecha1, "MMMM")) & "_" & Format(fecha1, "yyyy") & "_" & Format(fecha1, "dd"), Replacement:="[MORELOS_" & UCase(Format(fecha2, "MMMM")) & "_" & Format(fecha2, "yyyy") & "_" & Format(fecha2, "dd"), LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
s = s + 1
On Error GoTo salida
Cells.Find(What:=Format(UCase(Format(fecha1, "MMMM")) & "_" & Format(fecha1, "yyyy") & "_" & Format(fecha1, "dd")), After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Replace What:="[Rep_Subd_Prod_" & UCase(Format(fecha1, "MMMM")) & "_" & Format(fecha1, "yyyy") & "_" & Format(fecha1, "dd"), Replacement:="[Rep_Subd_Prod_" & UCase(Format(fecha2, "MMMM")) & "_" & Format(fecha2, "yyyy") & "_" & Format(fecha2, "dd"), LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
s = s + 1
On Error GoTo salida
Cells.Find(What:=Format(UCase(Format(fecha1, "yyyy")) & "_" & Format(fecha1, "MMMM") & "_" & Format(fecha1, "dd")), After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Replace What:="[CAPTURA_" & UCase(Format(fecha1, "yyyy")) & "_" & Format(fecha1, "MMMM") & "_" & Format(fecha1, "dd"), Replacement:="[CAPTURA_" & UCase(Format(fecha2, "yyyy")) & "_" & Format(fecha2, "MMMM") & "_" & Format(fecha2, "dd"), LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
s = s + 1
On Error GoTo salida
Cells.Find(What:=Format(UCase(Format(fecha1, "MMMM")) & "_" & Format(fecha1, "yyyy") & "_" & Format(fecha1, "dd")), After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Replace What:="[Rep_Subd_Prod_" & UCase(Format(fecha1, "MMMM")) & "_" & Format(fecha1, "yyyy") & "_" & Format(fecha1, "dd"), Replacement:="[Rep_Subd_Prod_" & UCase(Format(fecha2, "MMMM")) & "_" & Format(fecha2, "yyyy") & "_" & Format(fecha2, "dd"), LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
s = s + 1
On Error GoTo salida
Cells.Find(What:=Format(UCase(Format(fecha1, "MMMM")) & "_" & Format(fecha1, "dd")), After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Replace What:="[FAX_CPI_" & UCase(Format(fecha1, "MMMM")) & "_" & Format(fecha1, "dd"), Replacement:="[FAX_CPI_" & UCase(Format(fecha2, "MMMM")) & "_" & Format(fecha2, "dd"), LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
s = s + 1
On Error GoTo salida
Cells.Find(What:=Format(fecha1, "ddmmyy"), After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Replace What:="[DIARIO" & Format(fecha1, "ddmmyy"), Replacement:="[DIARIO" & Format(fecha2, "ddmmyy"), LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
s = s + 1
On Error GoTo salida
Cells.Find(What:=Format(fecha1, "ddmmyy"), After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Replace What:="[BALANCE " & Format(fecha1, "ddmmyy"), Replacement:="[BALANCE " & Format(fecha2, "ddmmyy"), LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
s = s + 1
Loop
salida:
MsgBox ("se reemplazaron: " & s & " celdas")
End Sub

1 respuesta

Respuesta
1
<div>vamos a ver el contador que tienes puesto tan solo va sumando 1 cada vez que lee esa linea de codigo, modifica el valor de "s" en +1 y ese es el resultado final, si lo ha leido 4 veces el valor de "s" sera = 4 pero por si solo no hace nada más, el contador no reemplaza ni hace más función que contar. Si el código que tienes entre los contadores no reemplaza al contador le da lo mismo, al leer su linea suma 1 y listo. Si además cuando se produce los reemplazos ( si da error porque no encuentra) le mandas a Salida: pues no leerá ninguna vez más el contador, y no te dará ningún valor.</div>
<div></div>
<div>Vamos a ver con tu insistencia en que te cuente los reemplazos, así no sirve tu código estas diciendo en él que en un rango completo busque y reemplace y si da error que se vaya al final y el Loop te vuelve a mandar al principio pero todas las demás lineas no las ha leido, así que todas las demás hojas no las lee. Se va del principio al final y vuelve al principio, tienes que hacer Do While y Loop por cada hoja y al final poner un contador en cada hoja y uno para el total, pongamos estopara cada hoja:</div>
<div></div>
<div>Dim s As Integer
fecha1 = InputBox("Fecha que desea sustituir?", "ORIGEN", Now())
If fecha1 = Empty Then Exit Sub 'mejorar con revisión validez fecha
fecha2 = InputBox("Fecha nueva?", "DESTINO", Now())
If fecha2 = Empty Then Exit Sub 'mejorar con revisión fecha
'Le preguntarás al usuario por las fechas a sustituir y la nueva, y
Do While True</div>
<div>s = 0
On Error GoTo salida
Cells.Find(What:=Format(UCase(Format(fecha1, "MMMM")) & "_" & Format(fecha1, "yyyy") & "_" & Format(fecha1, "dd")), After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Replace What:="[MORELOS_" & UCase(Format(fecha1, "MMMM")) & "_" & Format(fecha1, "yyyy") & "_" & Format(fecha1, "dd"), Replacement:="[MORELOS_" & UCase(Format(fecha2, "MMMM")) & "_" & Format(fecha2, "yyyy") & "_" & Format(fecha2, "dd"), LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False</div>
<div>s = s + 1</div>
<div>Loop</div>
<div>Salida</div>
<div></div>
<div>Ahora la siguiente y así hasta el final en el final pones la suma de los contadores con otra variable que tienes que declarar al igual que tus contadores todas son Integer</div>
<div></div>
<div>Total=s+m+n+z ( en cada Loop utiliza un nombre diferente para el contador) y al final pones el MsgBox con el valor de esa variable:</div>
<div>MsgBox ("se reemplazaron: " & Total & " celdas")</div>
<div></div>
<div>>Un saludo</div>
<div>>Julio</div>
<div></div>
<div></div>
<div></div>
<div></div>
Hola experto
Coloque en cada bloque de código un
do while y loop
Pero el programa se bloquea
Me imagino
por que se cicla en cada uno,
ademas nadamas puse un do while y un loop
Y de todas maneras se bloquea
Y los tuve que quitar
Para que pudiera realizar los remplazos..
Espero me puedas ayudar
Saludos cordiales
El Do While no le pongas valor de True, ponle que haga el ciclo hasta que encuentre celda vacía Do While<>"" y así terminará cuando ya no encuentre celda con datos.
>Un saludo
>Julio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas