# Macro con IF y Then



## alexoigres (Jul 19, 2006)

Hola a todos 

Tengo un problema con un macro que quiero crear y nadie me ha podido ayudar. No tengo mucho experiencia en Macros por lo cual les pido sean un poco de pacientes con mis preguntas. A lo mejor y es algo simple pero pues para mi es algo que no he podido lograr y muchas personas en el foro de ingles tampoco han logrado hacerlo...

Mi caso es:

Tengo un archivo en excel con un macro ya corriendo a la perfieccion, pero quiero agregar un modulo nuevo para que tener dos macros en el mismo archivo de excel....

Lo que quiero es que el macro pueda distinguir una celda y si la celda concuerda con la funcion entonces borre alguna informacion.... 
Este es mi intento de Codigo:


```
Option Explicit
Dim bookCode As String
 
Sub FormatRPO()
 
Dim LastRow As Long
Dim iRow As Long
 
LastRow = Range("C65536").End(xlUp).Row
 
For iRow = 2 To LastRow
bookCode = Cells(iRow, "C")
GENNPO
Next iRow
msgbox "Format RPO Complete"
End Sub
 
Private Sub GENNPO()
 
If (InStr(bookCode, "RJ") <> 0) Then
Call RPORJ
 
End If
 
End Sub
 
 
Private Sub RPORJ()
 
Call RPO1
 
End Sub
 
Private Sub RPO1()
 
With Columns("AK")
.Replace What:="02L", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows
End With
End Sub
```
******************
Lo que quiero es que si tengo RJ en la columna C llame a RPORJ, para que borre el codigo "02L" de la columna AK.

Se que suena facil pero este es sola la idea ya que tengo RT,2T, RV etc y cada uno de ellos tienen como 1000 codigos que debo borrar.

Tengo un archivo nuevo cada semana por lo que me gustaria crear un macro solo para eliminarlos en un instante y asi ahorrarme mucho trabajo

Muchas Gracias por la ayuda

SG


----------



## Greg Truby (Jul 19, 2006)

¿Siempre hay que buscar "RJ" en la columna C:C y donde encontrado, reemplazar código "XYZ" en columna AK con ""? ¿O es que hay parejas como?

"buscar «RJ» en C:C y reemplazar (borrar) los «02L» en AK"
"buscar «RT» en C:C y reemplazar (borrar) los «2T» en AK"
"buscar «RV» en C:C y reemplazar (borrar) los «ABC» en AK"


----------



## alexoigres (Jul 20, 2006)

Hola Greg,

Mira en mi columna C siempre voy a tener o RJ, o RV, o 2T, o RT puedo tener 100 renglones de RJ y uno de 2T depende mucho del archivo o puedo tener 100 de cada uno... o solamente 200 de un solo codigo...com decia antes puede variar.

Lo que yo quiero eliminar esta en mi columna "AK" y en la columna tengo algo asi:

&EXP&RHD&A32&DG2&5QD&W6N&81I-B19/L91

De este renglon quiero eliminar algunos codigos por ejemplo:

Si tengo en mi columna "C" el codigo RT entonces quiero eliminar W6N
y quiero que me quede asi:

&EXP&RHD&A32&DG2&5QD&81I-B19/L91

Pero asi como quiero eliminar W6N de RT hay otros 900 que tambien tengo que eliminar. Al igual tengo que eliminar codigos diferentes para RV,RJ y 2T.

Mi otro problema que me di cuenta es que necesito eliminar el simbolo que esta antes del codigo, a veces puedo tener &W6N o /W6N...... estos codigos estan divididos en positivos y negativos y mi problema es que si corro el macro y elimina el simbolo antes del codigo, cuando este sea negativo por ejemplo -B19... si lo quiero eliminar el codigo /L91 pasaria al lado de los positivos... ya que elimine el codigo -B19 con si simbolo negativo....

Alguna idea o sugerencia?
Espero y puedas ayudarme la verdad...

Debe existir una forma de hacer esto mas facil por que yo tenia pensado escribir esto tres veces... una para simbolos con / y otra para simbolo con & y otra para que solo quitara el codigo.

```
.Replace What:="/02L", Replacement:="", LookAt:=xlPart, _ 
        SearchOrder:=xlByRows 
.Replace What:="&02L", Replacement:="", LookAt:=xlPart, _ 
        SearchOrder:=xlByRows 
.Replace What:="02L", Replacement:="", LookAt:=xlPart, _ 
        SearchOrder:=xlByRows
```
 
Ahora imaginate que tengo 1000 para RJ, otros mil para RV etc... mi macro seria enorme.

MUCHAS GRACIAS


----------



## Greg Truby (Jul 20, 2006)

Si todo me va bien hoy en el trabajo tal vez tenga un poco de tiempo para pensar en esto.  ¿Me puede hacer un favorcito y copiar una muestra de unos treinta o cuarenta ringlones de datos para usar en pruebas/desarrollo?


----------



## alexoigres (Jul 20, 2006)

te puedo enviar el archivo en excel el cual estoy usando con unas 30 rengolnes de informacion....

pero no encuentro a que mail enviarlo....me dices a que mail te lo puedo mandar?

Lo que pasa es que hacer copy paste aqui de un renglon va hacer que se pierda el formato

Saludos y gracias de antemano

SG


----------



## Greg Truby (Jul 20, 2006)

Bueno, aquí en la parte inferior de cada discusión hay un vínculo que dice «Colo's HTML Maker utility for displaying your Excel Worksheet on the board.»  Un ejemplo de lo que hace _HTML Maker_Lists of Special Program Parts.xlsABCD1Part NumberProgramFlag2A1603611AOptical BlockTRUE3A1603624AOptical BlockTRUE4A1606006AOptical BlockTRUE5A1606008AOptical BlockTRUE6A1606010AOptical BlockTRUE7A1606039AOptical BlockTRUESpecial Program Parts

También en el foro para preguntas en inglés hay un «sticky» que dice «Recommended Add-ins and Links».  Si sigue el vínculo, se ve otro vínculo para _ASAP Utilities._  ASAP Utilities también ofrece una herramienta para convertir celdas a HTML para poner aquí.  Pero si usa ASAP, vea lo que escribí aquí que es una rutina para suprimir líneas en el HTML.  Sin hacer eso se pone demasiados líneas en blanco.

Un ejemplo de lo que hace ASAP:<table width="200" border="1" bordercolor="#C0C0C0"  bordercolordark="#FFFFFF" cellspacing="0" cellpadding="2"><tr valign="top" style="white-space:nowrap;"><th align="center" valign="bottom"><font face="Monospace" size="1"*Part Number*</font></th><th align="center" valign="bottom"><font face="Monospace" size="1"*Program*</font></th><th align="center" valign="bottom"><font face="Monospace" size="1"*Flag*</font></th></tr><tr valign="top" style="white-space:nowrap;"><td align="center" valign="bottom"><font face="Monospace" size="1">A1603611A</font></td><td align="center" valign="bottom"><font face="Monospace" size="1">Optical Block</font></td><td align="center" valign="bottom"><font face="Monospace" size="1">TRUE</font></td></tr><tr valign="top" style="white-space:nowrap;"><td align="center" valign="bottom"><font face="Monospace" size="1">A1603624A</font></td><td align="center" valign="bottom"><font face="Monospace" size="1">Optical Block</font></td><td align="center" valign="bottom"><font face="Monospace" size="1">TRUE</font></td></tr><tr valign="top" style="white-space:nowrap;"><td align="center" valign="bottom"><font face="Monospace" size="1">A1606006A</font></td><td align="center" valign="bottom"><font face="Monospace" size="1">Optical Block</font></td><td align="center" valign="bottom"><font face="Monospace" size="1">TRUE</font></td></tr><tr valign="top" style="white-space:nowrap;"><td align="center" valign="bottom"><font face="Monospace" size="1">A1606008A</font></td><td align="center" valign="bottom"><font face="Monospace" size="1">Optical Block</font></td><td align="center" valign="bottom"><font face="Monospace" size="1">TRUE</font></td></tr><tr valign="top" style="white-space:nowrap;"><td align="center" valign="bottom"><font face="Monospace" size="1">A1606010A</font></td><td align="center" valign="bottom"><font face="Monospace" size="1">Optical Block</font></td><td align="center" valign="bottom"><font face="Monospace" size="1">TRUE</font></td></tr><tr valign="top" style="white-space:nowrap;"><td align="center" valign="bottom"><font face="Monospace" size="1">A1606039A</font></td><td align="center" valign="bottom"><font face="Monospace" size="1">Optical Block</font></td><td align="center" valign="bottom"><font face="Monospace" size="1">TRUE</font></td></tr></table>


Sería mejor poner los datos aquí por que asi cualquier otro también puede ayudarle, no solamente yo.


----------



## alexoigres (Jul 20, 2006)

Sorry I can't Remove the blanck space..... i've been trying all day..... : (
Can you tell me what to do to remove it...
Thanks
*********************
*************************
******************************
BORRE ESTE CODIGO Y LO VOY A TRATAR DE HACER DE NUEVO SOLO PEGANDO COLUMNAS C Y AK.... GRACIAS POR TODO Y PERDON LA MOLESTIA
SG


----------



## Greg Truby (Jul 20, 2006)

Bueno, mejor editar ese post para que no contenga nada y vaya a la salón de pruebas hasta que aprende como hacer lo bien.

El problem viene de los "line feeds" que hace _ASAP._  Por ejemplo, para formar el siguiente:

<table width="200" border="1" bordercolor="#C0C0C0"  bordercolordark="#FFFFFF" cellspacing="0" cellpadding="2">   <tr valign="top" style="white-space:nowrap;">     <th bgcolor="#CCFFCC" valign="bottom"><font face="Monospace" size="1"*Part Nbr*</font></th>     <th bgcolor="#CCFFCC" valign="bottom"><font face="Monospace" size="1"*Part Desc*</font></th>   </tr>   <tr valign="top" style="white-space:nowrap;">     <td valign="bottom"><font face="Monospace" size="1">A1058689A</font></td>     <td valign="bottom"><font face="Monospace" size="1">Q BOX ASSY ’AUTH NEEDED’</font></td>   </tr>   <tr valign="top" style="white-space:nowrap;">     <td valign="bottom"><font face="Monospace" size="1">A1348038A</font></td>     <td valign="bottom"><font face="Monospace" size="1">D COMPLETE</font></td>   </tr></table>

_ASAP_ va a escribir:
	
	
	
	
	
	



```
<table width="200" border="1" bordercolor="#C0C0C0"  bordercolordark="#FFFFFF" cellspacing="0" cellpadding="2">
   <tr valign="top" style="white-space:nowrap;">
     <th bgcolor="#CCFFCC" valign="bottom"><font face="Monospace" size="1"*Part Nbr*</font></th>
     <th bgcolor="#CCFFCC" valign="bottom"><font face="Monospace" size="1"*Part Desc*</font></th>
   </tr>
   <tr valign="top" style="white-space:nowrap;">
     <td valign="bottom"><font face="Monospace" size="1">A1058689A</font></td>
     <td valign="bottom"><font face="Monospace" size="1">Q BOX ASSY ’AUTH NEEDED’</font></td>
   </tr>
   <tr valign="top" style="white-space:nowrap;">
     <td valign="bottom"><font face="Monospace" size="1">A1348038A</font></td>
     <td valign="bottom"><font face="Monospace" size="1">D COMPLETE</font></td>
   </tr>
</table>
```

El problema es que el software de MrExcel.com quiere hacer una línea nueva por cada "line feed" entonces hay que suprimir esos caracteres para que el text se ve asi:
	
	
	
	
	
	



```
<table width="200" border="1" bordercolor="#C0C0C0"  bordercolordark="#FFFFFF" cellspacing="0" cellpadding="2">   <tr valign="top" style="white-space:nowrap;">     <th bgcolor="#CCFFCC" valign="bottom"><font face="Monospace" size="1"*Part Nbr*</font></th>     <th bgcolor="#CCFFCC" valign="bottom"><font face="Monospace" size="1"*Part Desc*</font></th>   </tr>   <tr valign="top" style="white-space:nowrap;">     <td valign="bottom"><font face="Monospace" size="1">A1058689A</font></td>     <td valign="bottom"><font face="Monospace" size="1">Q BOX ASSY ’AUTH NEEDED’</font></td>   </tr>   <tr valign="top" style="white-space:nowrap;">     <td valign="bottom"><font face="Monospace" size="1">A1348038A</font></td>     <td valign="bottom"><font face="Monospace" size="1">D COMPLETE</font></td>   </tr></table>
```

Si usted copia la rutina en ese vínculo que proveí arriba al cuaderno en uso o a su cuarderno _Personal.xls_ (si tiene uno) una vez de correr la utilidad de ASAP, haces _Ctrl+F8_ y corres ese otra macro mío.  [Note que para que funcione el macro mío, se necesita una referencia a la biblioteca de _Forms._  La manera más fácil de hacer eso es interar un _UserForm_ al proyecto y después suprimir el UserForm.  La referencia a _Forms_ siempre queda en el proyecto.  O se puede hacer a mano en el VBE con Tools | References... y hacer un cheq para _Microsoft Forms 2.0 Object Library._]


----------



## Greg Truby (Jul 20, 2006)

Otro comentario... para poder ayudarle mejor con hacer pruebas mejor copiar solamente el contenido de columnas C y AK a otra hoja y pegar eso aquí.  No necesitaríamos los datos de todos esas otras columnas.


----------



## alexoigres (Jul 21, 2006)

*EJEMPLOS*

Aqui pongo los ejemplos de mas o menos algunos codigos...Espero y me puedas ayudar con alguna idea.... gracias...

<table border="1" bordercolor="#C0C0C0" bordercolordark="#FFFFFF" cellspacing="0" cellpadding="2"> <tr> <th valign="bottom"><font face="Tahoma" size="2"><nobr>book_cd</nobr></font></th> <th align="center" valign="bottom"><font face="Tahoma" size="2"><nobr>GM_OPT</nobr></font></th> </tr> <tr> <td align="center" valign="bottom"><font face="Tahoma" size="2"><nobr>RJ</nobr></font></td> <td align="center" valign="bottom"><font face="Tahoma" size="2"><nobr>&L79&MG4/MLK&NQT/NQP/NT2-L91</nobr></font></td> </tr> <tr> <td align="center" valign="bottom"><font face="Tahoma" size="2"><nobr>RJ</nobr></font></td> <td align="center" valign="bottom"><font face="Tahoma" size="2"><nobr>&L79&MG4/MLK&NT3</nobr></font></td> </tr> <tr>
 <td align="center" valign="bottom"><font face="Tahoma" size="2"><nobr>2T</nobr></font></td> <td align="center" valign="bottom"><font face="Tahoma" size="2"><nobr>&L79&MG4/MLK-E09&L51</nobr></font></td> </tr> <tr> <td align="center" valign="bottom"><font face="Tahoma" size="2"><nobr>RV</nobr></font></td> <td align="center" valign="bottom"><font face="Tahoma" size="2"><nobr>&L79/L34&MG4/MLK/MFE</nobr></font></td>
 </tr> </table>


----------

