Forums Últimos mensajes - Powered by IBM
 

Cambiar una macro

19/05/2008 - 09:04 por Cecilia | Informe spam
Hola a todos
Tengo una macro con la que al escoger en la celda b1 se ejecuta. Ahora
quiero que no se ejecute solo con la celda b1 si no que haya que
escoger la celda b2 también para que se ejecute. Con esta, solo
seleccionando b1 me filtraba los datos que yo quería para cada
sección, ahora lo que quiero es que seleccionando b1+b2 me filtre por
sección (b1) y por responsable (b2), es decir que no se ejecute la
macro si no se han seleccionado las dos celdas.
La macro es la siguiente:
Private Sub Worksheet_Change(ByVal target As Range)
Application.ScreenUpdating = False
Select Case (ActiveSheet.Range("b1").Value)
Case "FRESCOS": Call restablecerhoja
Call ordena1
Rows("4:454").Select
Selection.EntireRow.Hidden = False
Range("C6:e6").Select
Call filtroareas
Range("b1").ClearContents
Range("A4").Select
Case "FRUTA": Call restablecerhoja
Call ordena2
Rows("457:907").Select
Selection.EntireRow.Hidden = False
Range("C459:E459").Select
Call filtroareas
Range("b1").ClearContents
Range("A457").Select
Case "CARNE": Call restablecerhoja
Call ordena3
Rows("910:1360").Select
Selection.EntireRow.Hidden = False
Range("C912:E912").Select
Call filtroareas
Range("b1").ClearContents
Range("A910").Select
Case "CHARCUTERIA": Call restablecerhoja
Call ordena4
Rows("1363:1813").Select
Selection.EntireRow.Hidden = False
Range("C1365:E1365").Select
Call filtroareas
Range("b1").ClearContents
Range("A1363").Select
Case "PAN": Call restablecerhoja
Call ordena5
Rows("1816:2266").Select
Selection.EntireRow.Hidden = False
Range("C1818:E1818").Select
Call filtroareas
Range("b1").ClearContents
Range("A1816").Select
Case "PESCA": Call restablecerhoja
Call ordena6
Rows("2269:2719").Select
Selection.EntireRow.Hidden = False
Range("C2271:E2271").Select
Call filtroareas
Range("b1").ClearContents
Range("A2269").Select
Case "COMIDA PREPARADA": Call restablecerhoja
Call ordena7
Rows("2722:3172").Select
Selection.EntireRow.Hidden = False
Range("C2724:E2724").Select
Call filtroareas
Range("b1").ClearContents
Range("A2722").Select
End Select
Application.ScreenUpdating = True
End Sub
Muchas gracias por vuestra atención y ayuda.
Un saludo
Cecilia
 

Leer las respuestas

#1 Héctor Miguel
19/05/2008 - 14:54 | Informe spam
hola, Cecilia !

Tengo una macro con la que al escoger en la celda b1 se ejecuta.
Ahora quiero que... haya que escoger la celda b2 tambien para que se ejecute.
Con esta, solo seleccionando b1 me filtraba los datos que yo queria para cada seccion
ahora lo que quiero es que seleccionando b1+b2 me filtre por seccion (b1) y por responsable (b2)
es decir que no se ejecute la macro si no se han seleccionado las dos celdas...



1) el codigo que expones se ejecuta NO SOLO por "seleccionar" la celda B1...
sino por CADA CAMBIO que sucede EN CUALQUIER CELDA de la hoja
y la parte del codigo (Select Case...) que se ejecuta es segun el contenido de B1
aunque B1 NO haya sido modificada (me explico):

si B1 contiene PAN (en mayusculas) y modificas cualquier otra celda (no necesariamente B1)...
se ejecuta (repetida y constantemente) el -> Case "PAN": Call restablecerhoja (etc. etc. etc.)

2) por que no expones (de forma general) lo que hacen las macros que llamas en cada caso ?
(es probable que se trate de codigos "repetitivos" que sean sujetos de "cirugia") :))
y comenta tambien porque es "necesario" SELECCIONAR algunas filas y desocultarlas -?-
SIN olvidar comentar cuales son las condicionantes (ahora) para la celda B2 -?-
(supongo que se trata del titulo para autofiltros o filtros avanzados, pero... de cual columna ?)

saludos,
hector.

__ el codigo expuesto __
Private Sub Worksheet_Change(ByVal target As Range)
Application.ScreenUpdating = False
Select Case (ActiveSheet.Range("b1").Value)
Case "FRESCOS": Call restablecerhoja
Call ordena1
Rows("4:454").Select
Selection.EntireRow.Hidden = False
Range("C6:e6").Select
Call filtroareas
Range("b1").ClearContents
Range("A4").Select
Case "FRUTA": Call restablecerhoja
Call ordena2
Rows("457:907").Select
Selection.EntireRow.Hidden = False
Range("C459:E459").Select
Call filtroareas
Range("b1").ClearContents
Range("A457").Select
Case "CARNE": Call restablecerhoja
Call ordena3
Rows("910:1360").Select
Selection.EntireRow.Hidden = False
Range("C912:E912").Select
Call filtroareas
Range("b1").ClearContents
Range("A910").Select
Case "CHARCUTERIA": Call restablecerhoja
Call ordena4
Rows("1363:1813").Select
Selection.EntireRow.Hidden = False
Range("C1365:E1365").Select
Call filtroareas
Range("b1").ClearContents
Range("A1363").Select
Case "PAN": Call restablecerhoja
Call ordena5
Rows("1816:2266").Select
Selection.EntireRow.Hidden = False
Range("C1818:E1818").Select
Call filtroareas
Range("b1").ClearContents
Range("A1816").Select
Case "PESCA": Call restablecerhoja
Call ordena6
Rows("2269:2719").Select
Selection.EntireRow.Hidden = False
Range("C2271:E2271").Select
Call filtroareas
Range("b1").ClearContents
Range("A2269").Select
Case "COMIDA PREPARADA": Call restablecerhoja
Call ordena7
Rows("2722:3172").Select
Selection.EntireRow.Hidden = False
Range("C2724:E2724").Select
Call filtroareas
Range("b1").ClearContents
Range("A2722").Select
End Select
Application.ScreenUpdating = True
End Sub

Preguntas similares