Saltar al contenido

como podria resumir este if


Recommended Posts

publicado

buenas, estoy tratando de reducir el tamaño del siguiente código

If InStr(1, c, "Out") Or InStr(1, c, "out") Then c.Value = "NS" Else c.Value = c.Value
        If InStr(1, c.Offset(0, 1), "Out") Or InStr(1, c.Offset(0, 1), "out") Then c.Offset(0, 1).Value = "NS" Else c.Offset(0, 1).Value = c.Offset(0, 1).Value
        If InStr(1, c.Offset(0, 2), "Out") Or InStr(1, c.Offset(0, 2), "out") Then c.Offset(0, 2).Value = "NS" Else c.Offset(0, 2).Value = c.Offset(0, 2).Value
        If InStr(1, c.Offset(0, 3), "Out") Or InStr(1, c.Offset(0, 3), "out") Then c.Offset(0, 3).Value = "NS" Else c.Offset(0, 3).Value = c.Offset(0, 3).Value

básicamente es reemplazar texto de una celda y hacer lo mismo en las 3 siguientes a la derecha, pero no se como poder juntar todo en una sola linea de código

 

 

por otra parte estoy tratando de hacer algo similar con replace

c.Replace What:="Hola", Replacement:="Adios"

pero me pasa que, cuando la celda no contiene el texto "Hola" excel me arroja un error que dice lo siguiente:

Cita

no hemos encontrado nada que reemplazar

nota: es posible que los datos que intentas cambiar se encuentren en una hoja protegida. excel no puede cambiar datos de hojas protegidas

 

espero que se entienda lo que trato de hacer

 

desde ya agradezco su ayuda

 

saludos!

publicado
Hace 11 horas, Galactico dijo:

espero que se entienda lo que trato de hacer

No. Sube tu archivo de ejemplo. ¿Porque le dices que remplace Hola si sabes que hay celdas que no la tienen? :huh:

publicado

Como dice el bueno de Haplox, "Está claro que no está claro".

Te dejo lo del If con lo que he entendido:

For y = 0 To 3
   Select Case True
      Case InStr(1, LCase(c.Offset(0, y)), "out"): c.Offset(0, y) = "NS"
   End Select
Next

 

publicado
En 21/1/2021 at 14:49 , Antoni dijo:

Como dice el bueno de Haplox, "Está claro que no está claro".

Te dejo lo del If con lo que he entendido:


For y = 0 To 3
   Select Case True
      Case InStr(1, LCase(c.Offset(0, y)), "out"): c.Offset(0, y) = "NS"
   End Select
Next

 

disculpen, me exprese mal, pero la respuesta de antoni sirvió a la perfección, muchas gracias es un genio

 

otra consulta, por ejemplo, en el for, si fuera de 0 a 100 el valor de y, como podría ingresar algo para que se me guarde la hoja cuando y valga 50, y luego al finalizar (con 100)

 

muchas gracias de nuevo

Archivado

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

×
×
  • 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.