Condicion en Macro

02/04/2005 - 20:51 por Oscar | Informe spam
Hola grupo, buen dia:

Tengo un codigo, el cual me funciona bien, solo necesita
el ultimo ajuste, y por eso recurro a ustdes...

La historia: Tengo un rango ("A4:A100) en el cual realizo
una busqueda, y de acuerdo a esa busqueda me realiza una
serie de instrucciones.

La trama: Ya declare las variables, que son 6, pero solo
pongo uno de ejemplo, en este caso el de Canc que esta
entre 3 asteriscos en la segunda linea de codigo. En
algunos casos puede no existir esta variable Canc - de
acuerdo a la base que tenga, la cual puede variar.

Mi pregunta es: Que tendria que agregar a este codigo para
que en caso de no encontrar esa variable, no me aparezca
FInalizar Depurar, sino que siguiera con el que sigue.

Mil gracias...

El codigo...

For Each R In Selection

Selection.Find(What:=***Canc***, After:=ActiveCell,
LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:=False).Activate
ActiveCell.Select
ActiveCell.Next.Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
ActiveSheet.Previous.Select
Range("B50").Select
Selection.PasteSpecial Paste:=xlValues,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveSheet.Next.Select
Range("A4:A100").Select

Preguntas similare

Leer las respuestas

#1 KL
02/04/2005 - 21:09 | Informe spam
Oscar,

?Te importaria poner el codigo entero por favor? Tal como formateas las
lineas hay que esforzarse para entender la logica del codigo y aun mas
cuando estan algunas instrucciones cortadas por la mitad.

Saludos,
KL

"Oscar" wrote in message
news:146501c537b5$00034630$

Hola grupo, buen dia:

Tengo un codigo, el cual me funciona bien, solo necesita
el ultimo ajuste, y por eso recurro a ustdes...

La historia: Tengo un rango ("A4:A100) en el cual realizo
una busqueda, y de acuerdo a esa busqueda me realiza una
serie de instrucciones.

La trama: Ya declare las variables, que son 6, pero solo
pongo uno de ejemplo, en este caso el de Canc que esta
entre 3 asteriscos en la segunda linea de codigo. En
algunos casos puede no existir esta variable Canc - de
acuerdo a la base que tenga, la cual puede variar.

Mi pregunta es: Que tendria que agregar a este codigo para
que en caso de no encontrar esa variable, no me aparezca
FInalizar Depurar, sino que siguiera con el que sigue.

Mil gracias...

El codigo...

For Each R In Selection

Selection.Find(What:=***Canc***, After:=ActiveCell,
LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:=False).Activate
ActiveCell.Select
ActiveCell.Next.Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
ActiveSheet.Previous.Select
Range("B50").Select
Selection.PasteSpecial Paste:=xlValues,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveSheet.Next.Select
Range("A4:A100").Select

Respuesta Responder a este mensaje
#2 Fernando Arroyo
02/04/2005 - 21:14 | Informe spam
Si te refieres a saber si el contenido de la variable Canc se encuentra o no en el rango en que estás buscando, una posibilidad sería usar un objeto Range para almacenar el resultado de la búsqueda, algo como:

Dim rngEncontrado As Range

Set rngEncontrado = ... aquí iría la instrucción que se encarga de la búsqueda (sin el .Activate)

If Not rngEncontrado Is Nothing Then
'
'Instrucciones para el caso de que se haya encontrado
'
Else
'
'Instrucciones para el caso de que no se haya encontrado (si fueran necesarias)
'
End If

Un saludo.


Fernando Arroyo
MS MVP - Excel


"Oscar" escribió en el mensaje news:146501c537b5$00034630$

Hola grupo, buen dia:

Tengo un codigo, el cual me funciona bien, solo necesita
el ultimo ajuste, y por eso recurro a ustdes...

La historia: Tengo un rango ("A4:A100) en el cual realizo
una busqueda, y de acuerdo a esa busqueda me realiza una
serie de instrucciones.

La trama: Ya declare las variables, que son 6, pero solo
pongo uno de ejemplo, en este caso el de Canc que esta
entre 3 asteriscos en la segunda linea de codigo. En
algunos casos puede no existir esta variable Canc - de
acuerdo a la base que tenga, la cual puede variar.

Mi pregunta es: Que tendria que agregar a este codigo para
que en caso de no encontrar esa variable, no me aparezca
FInalizar Depurar, sino que siguiera con el que sigue.

Mil gracias...

El codigo...

For Each R In Selection

Selection.Find(What:=***Canc***, After:=ActiveCell,
LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:=False).Activate
ActiveCell.Select
ActiveCell.Next.Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
ActiveSheet.Previous.Select
Range("B50").Select
Selection.PasteSpecial Paste:=xlValues,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveSheet.Next.Select
Range("A4:A100").Select

Respuesta Responder a este mensaje
#3 Oscar
02/04/2005 - 22:21 | Informe spam
Una duda Fernando, no se si sea el caso, pero no tengo
claro lo siguiente, en cuanto a la redaccion, segun leo y
entiendo, que claro a comparacion de uds se poquito :)

Donde dice "Instrucciones para el caso de que se haya
encontrado" porque en el codigo dice "If Not rngEncontrado
Is Nothing Then"

Es solo una duda, y en un momento mas te digo si me
funciono o no
ok
Gracias

Si te refieres a saber si el contenido de la variable


Canc se encuentra o no en el rango en que estás buscando,
una posibilidad sería usar un objeto Range para almacenar
el resultado de la búsqueda, algo como:

Dim rngEncontrado As Range

Set rngEncontrado = ... aquí iría la instrucción que


se encarga de la búsqueda (sin el .Activate)

If Not rngEncontrado Is Nothing Then
'
'Instrucciones para el caso de que se haya


encontrado
'
Else
'
'Instrucciones para el caso de que no se haya


encontrado (si fueran necesarias)
'
End If

Un saludo.


Fernando Arroyo
MS MVP - Excel


"Oscar" escribió en


el mensaje news:146501c537b5$00034630$

Hola grupo, buen dia:

Tengo un codigo, el cual me funciona bien, solo




necesita
el ultimo ajuste, y por eso recurro a ustdes...

La historia: Tengo un rango ("A4:A100) en el cual




realizo
una busqueda, y de acuerdo a esa busqueda me realiza




una
serie de instrucciones.

La trama: Ya declare las variables, que son 6, pero




solo
pongo uno de ejemplo, en este caso el de Canc que esta
entre 3 asteriscos en la segunda linea de codigo. En
algunos casos puede no existir esta variable Canc - de
acuerdo a la base que tenga, la cual puede variar.

Mi pregunta es: Que tendria que agregar a este codigo




para
que en caso de no encontrar esa variable, no me




aparezca
FInalizar Depurar, sino que siguiera con el que sigue.

Mil gracias...

El codigo...

For Each R In Selection

Selection.Find(What:=***Canc***, After:=ActiveCell,
LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:=False).Activate
ActiveCell.Select
ActiveCell.Next.Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
ActiveSheet.Previous.Select
Range("B50").Select
Selection.PasteSpecial Paste:=xlValues,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveSheet.Next.Select
Range("A4:A100").Select



.

Respuesta Responder a este mensaje
#4 Fernando Arroyo
03/04/2005 - 09:58 | Informe spam
Al crear la variable rngEncontrado (usando la instrucción Dim), dicha variable toma automáticamente el valor Nothing. Si la búsqueda que va antes de la instrucción

If Not rngEncontrado Is Nothing Then

no ha tenido éxito, entonces la variable rngEncontrado no estará asignada a ninguna celda (seguirá en su estado inicial, es decir, Nothing), y esto lo averigua la instrucción.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Oscar" escribió en el mensaje news:0bf201c537c1$7dd9d1d0$

Una duda Fernando, no se si sea el caso, pero no tengo
claro lo siguiente, en cuanto a la redaccion, segun leo y
entiendo, que claro a comparacion de uds se poquito :)

Donde dice "Instrucciones para el caso de que se haya
encontrado" porque en el codigo dice "If Not rngEncontrado
Is Nothing Then"

Es solo una duda, y en un momento mas te digo si me
funciono o no
ok
Gracias
Respuesta Responder a este mensaje
#5 Oscar
04/04/2005 - 19:37 | Informe spam
Hola Fer...

Te mande a tu mail el archivo para que lo pudieras ver, y
talvez no entretenerte demasiado, imaginando como puede
ser el archivo..

Me indicas si te llego

Gracias

Al crear la variable rngEncontrado (usando la instrucción


Dim), dicha variable toma automáticamente el valor
Nothing. Si la búsqueda que va antes de la instrucción

If Not rngEncontrado Is Nothing Then

no ha tenido éxito, entonces la variable rngEncontrado no


estará asignada a ninguna celda (seguirá en su estado
inicial, es decir, Nothing), y esto lo averigua la
instrucción.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Oscar" escribió en


el mensaje news:0bf201c537c1$7dd9d1d0$

Una duda Fernando, no se si sea el caso, pero no tengo
claro lo siguiente, en cuanto a la redaccion, segun leo y
entiendo, que claro a comparacion de uds se poquito :)

Donde dice "Instrucciones para el caso de que se haya
encontrado" porque en el codigo dice "If Not


rngEncontrado
Is Nothing Then"

Es solo una duda, y en un momento mas te digo si me
funciono o no
ok
Gracias


.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida