Excel que comando usar para no usar muchos if

Para Luis, hoy te pedí ayuda para la copia de una hoja a otra y me funciono muy bien la otra cosa que te voy a pedir es que tengo que hacer comparaciones con if si recuerdas nombre a una hoja 9APHF esta es la clave de un trabajador, pero si no es el el que capture los datos lo hará otra persona y a cada persona le hice una hoja con su clave y necesito preguntar su clave para que los datos se cargen en su hoja correspondiente.

Sub EJEMPLO()

Sheets("hoja1").Select

If Range("C2") = "9APHF" Then

Range("C7:G" & Range("C65000").End(xlUp).Row).Copy

Sheets("9APHF").Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues Application.CutCopyMode = False

Else

If Range("C2") = "93094"

Then Range("C7:G" & Range("C65000").End(xlUp).Row).Copy

Sheets("93094").Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues Application.CutCopyMode = False

End If

End If

End Sub

Como lo vez aquí son dos claves solamente pero necesito agregar como 12 claves entonces hay una forma de no poner muchos if o con otro comando Gracias

1 Respuesta

Respuesta
1

En ese caso esta es la nueva macro que tienes que usar para hacer tu trabajo:

Con esta macro no es necesario tener ningún if solo escribe la hoja destino en la celda C2 de la hoja1 y listo!

Sub ejemplo()
'por luismondelo
On Error GoTo salida
Sheets("hoja1").Select
MsgBox "se copiarán los datos a la hoja: " & Range("c2").Value
Range("C7:G" & Range("C65000").End(xlUp).Row).Copy
Sheets(Range("c2").Value).Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
Exit Sub
salida:
MsgBox "ha ocurrido un error, asegúrese de que existe la hoja para copiar...", vbCritical
End Sub

no olvides finalizar la consulta

Que tal Luis la macro que me mandaste si funciono como quería BIEN por ti 100 calificación

nada mas un detallito; al momento que se ejecuta la macro me aparece

MsgBox "se copiarán los datos a la hoja: " & Range("c2").Value

los copia, al regresar a la hoja origen me deja los datos copiados con una recuadro con guiones cuando haces una copia normal, seleccionas un rango y le das ctl-c y te pone un marco con güines asi me los deja después de hacer la copia y tengo que pulsar la tecla ESC para quitar esos recuadros no se podrán quitar solo sin dar ESC

gracias

Ok, entonces esta es tu nueva macro:

Sub ejemplo()
'por luismondelo
On Error GoTo salida
Sheets("hoja1").Select
MsgBox "se copiarán los datos a la hoja: " & Range("c2").Value
Range("C7:G" & Range("C65000").End(xlUp).Row).Copy
Sheets(Range("c2").Value).Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Exit Sub
salida:
MsgBox "ha ocurrido un error, asegúrese de que existe la hoja para copiar...", vbCritical
End Sub

no olvides finalizar la consulta

gracias luis si funciono.- en la primera vez que te mande mis comentarios donde ponía los if hay dos claves una que tiene letras y números y la otra puros números lo probé con la nueva macro que me mandaste y funciona con la clave que tiene números y letras y con la que tiene puros número me manda el error

MsgBox "ha ocurrido un error, asegúrese de que existe la hoja para copiar

La hoja existe, modifico la clave poniéndole una letra y funciona y se la quito y me manda el error ya me revolví mas

estoy usando tu macro que me mandaste osea esta

Sub EJEMPLO()

On Error GoTo salida

Sheets("hoja1").Select

MsgBox "Se copiaron los datos del Trabajador: " & Range("C2").Value

Range("C7:G" & Range("C65000").End(xlUp).Row).Copy

Sheets(Range("C2").Value).Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues

Application.CutCopyMode = False

Exit Sub

salida:

MsgBox ("Ha ocurrido un error, asegúrese de que exista la Base de Datos"), vbCritical

End Sub

Gracias por todo y por mis necedades.

Gracias por tu ayuda Luis por todas las aclaraciones que te pedí.

Si por la ultima aclaración tal vez me falta algo de todas maneras todo tu apoyo me sirvió bastante.

Gracias Luis por tu aportación.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas