Visual Basic para Aplicaciones - Variar celdas a través de un range

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 18
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Variar celdas a través de un range

Publicado por Erik (7 intervenciones) el 19/10/2019 23:01:05
Tengo el siguiente código en diferentes hojas por dias de la semana:
1
2
3
4
5
6
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("C4,C6,C7,C9,C10,C12,C13,C15,C16,C18,C19,C21,C23,C24,C25,C26,C28")) Is Nothing Then
        UserForm1.Show
    Else
    End If
End Sub

La pregunta es si es posible que estas celdas cambien a través de un userform, ya que tengo lo sgte:
1
2
3
4
5
6
7
8
9
10
11
12
'Asigna cupos por horario
    '09:00, A
       If ComboBox3.Value = "" Then
            Range("B3:C100").ClearContents
            nfila = 3
       Else
            Range("B3:C100").ClearContents
            Range("B3") = "9:00 - 12:30"
            Range("C3") = "Nombre"
            celdaturnoA = Range("C4") 'AQUI SE ESTABLECEN LAS CELDAS PARA EL CÓDIGO DEL WORKSHEET
            nfila = 4 + ComboBox3.Value
       End If
La idea es que la cantidad de celdas cambien a partir de lo elegido en los ComboBox del userform. Desde ya gracias por sus respuestas.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Dirk
Val: 50
Ha aumentado 1 puesto en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Variar celdas a través de un range

Publicado por Dirk (20 intervenciones) el 07/11/2019 14:00:34
Hola Erick, lo que entiendo es que las celdas pueden cambiar cuando haces el Intersect, de ser así se me ocurren 2 soluciones:

1.- que lleves una lista de las celdas que necesitas evaluar y antes de hacer el Intersect quites los duplicados de la lista (que es una instrucción en vba y puedes usar la grabadora de macros) y llenas el Range concatenando lo valores de la lista.
2.- otra opción es que uses una variable para identificar el conjunto de celdas, por ejemplo Conj1={C1,C2,C3}, Conj2={C1,C2,C4} y luego en el Intersect verificas con IF Conj1=true then Intersect(target,range(C1,C2,C3) Else Intersect(target,range(C1,C2,C4) EndIF

Espero te sirva.

Salu2
Dirk
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de MIGUEL
Val: 424
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Variar celdas a través de un range

Publicado por MIGUEL (121 intervenciones) el 07/11/2019 17:24:31
Buenas Erik

Si no mal recuerdo tus hojas llegan hasta "C40 ", sera suficiente la siguiente modificacion
1
2
3
4
5
6
7
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Not Intersect(Target, Range("C4:C40")) Is Nothing Then
       If Target.Text = "" Then
        UserForm1.Show
       End If
 End If
End Sub
de esta forma no necesitas crear una variable que controle las celdas vacias para cada horario del dia..

hace tiempo te queria preguntar si solo vas a agregar un horario diferente por dia o pueden ser mas, tambien si es necesario que tengas las hojas de todos los dias de la semana creadas, lo que pasa es que se puede realizar solo con 3 hojas y si tienes que imprimir las hojas.

tuve mucho trabajo y no pude conectarme en un rato y te perdi la pista, si gustas te envio el archivo para que veas como quedo.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 18
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Variar celdas a través de un range

Publicado por Erik (7 intervenciones) el 17/01/2020 13:28:39
Muchas gracias por tu respuesta, has dado con la solución a mi problema, me parece que fue un problema de enfoque a la solución xD
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar