La Macro no Reconoce una Variable que esta definida en una Celda

Estoy creando una Macro que busque en varios libros una palabra y la reemplace por otra. Para ello define las variables. Unas variables que serán los valores buscados y unas variables que serán los valores reemplazados. Los valores de las variables están definidos en Celdas. El problema es que cuando ejecuto la macro esta no reconoce el valor de la celda y por lo cual no realiza la función. Ademas quisiera saber si es posible que una macro realice búsquedas de acuerdo al color de la celda en todas las filas de una hoja.

Cabe destacar que no soy un experto, solo un aficionado, por lo cual me disculpo por cualquier error básico jeje!

Dim insertar1, insertar2, insertar3 As String

insertar1 = Range("b8")
insertar2 = Range("b9")
insertar3 = Range("b10")

ChDir "C:\Mis Concursos"
Workbooks.Open Filename:="C:\Mis Concursos\ProjectVBA1.xlsx", _
UpdateLinks:=0

Sheets(Array("Colores", "Hoja3")).Select
Sheets("Colores").Activate
Cells.Replace What:="&insertar1&", Replacement:="Black", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="insertar2", Replacement:="Black", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="Insertar3", Replacement:="Black", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

1 respuesta

Respuesta
2

[Hola

En VBA, así las variables estén en una sola línea, debe cada una tener su tipo:

Dim insertar1 As String, insertar2 As String, insertar3 As String

Si en el "Workbooks.Open" estás colocando la ruta completa del archivo, puedes obviar el "ChDir ", es decir, no es necesario usarlo.

Cuando colocas texto entre comillas, para el VBA (y otros lenguajes) significa que es una cadena de texto, es decir, literal estás buscando reemplazar las palabras "&insertar1&", "insertar2" e "insertar3", no las variables. Quítales las comillas (y los "&")

Cells.Replace What:= insertar2, Replacement:="Black" (etc.)

Saludos]

Abraham Valencia

Excelente amigo, muy agradecido por tu pronta respuesta, la macro funciono. Pero ahora me queda una gran duda tu excelente respuesta. Tengo varias macros con variables definidas y usadas con comillas y las macros funcionan. Por ejemplo:

Dim MesAn, MesCerrar As String

MesAn = Range("c18")
MesCerrar = Range("e18")

ChDir "D:\Bases 2018"
Workbooks.Open Filename:="D:\Bases 2018\" & MesAn & "\Facturable_LPD x Mercados.xls", _
UpdateLinks:=0
ChDir "D:\Bases 2018"
ActiveWorkbook.SaveAs Filename:= _
"D:\Bases 2018\" & MesCerrar & "\Facturable_LPD x Mercados.xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False

Ahora para estar claro, me gustaría saber cual es la diferencia. Porque aquí funciona? 

Gracias de antemano,

Saludos Cordiales.-

[Hola

Pues no, no están entre comillas:

El texto está entre comillas y las variables están entre "ampersand" ("&"), lo que concatena las variables al texto.

Ejemplo, tenemos la variable "Cadena" y le vamos a dar un valor:

Cadena = "mundo"

Luego vamos a armar una oración con esa variable:

"Hola " & Cadena & " cruel"

Como ya le dimos valor a la variables "Cadena", nuestra oración es:

Hola mundo cruel

Ya que hemos concatenado el texto y la variable.

¿Se entendió mejor?

Saludos]

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas