Excel - Rangos y seleccion en VB

 
Vista:
Imágen de perfil de John

Rangos y seleccion en VB

Publicado por John (5 intervenciones) el 17/01/2018 17:49:32
Muy bue@os días/tardes/noches

El motivo del presente es para que me ayuden de alguna manera diciéndome si existe alguna manera de simplificar este código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Private Sub Workbook_Open()
Sheets("Fechas de pago").ScrollArea = "$D$5:$E$34"
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$5" Then Range("$E$5").ClearContents
If Target.Address = "$E$5" Then Range("$F$5").ClearContents
If Target.Address = "$D$6" Then Range("$E$6").ClearContents
If Target.Address = "$E$6" Then Range("$F$6").ClearContents
If Target.Address = "$D$7" Then Range("$E$7").ClearContents
If Target.Address = "$E$7" Then Range("$F$7").ClearContents
If Target.Address = "$D$8" Then Range("$E$8").ClearContents
If Target.Address = "$E$8" Then Range("$F$8").ClearContents
If Target.Address = "$D$9" Then Range("$E$9").ClearContents
If Target.Address = "$E$9" Then Range("$F$9").ClearContents
If Target.Address = "$D$10" Then Range("$E$10").ClearContents
If Target.Address = "$E$10" Then Range("$F$10").ClearContents
If Target.Address = "$D$11" Then Range("$E$11").ClearContents
If Target.Address = "$E$11" Then Range("$F$11").ClearContents
If Target.Address = "$D$12" Then Range("$E$12").ClearContents
If Target.Address = "$E$12" Then Range("$F$12").ClearContents
If Target.Address = "$D$13" Then Range("$E$13").ClearContents
If Target.Address = "$E$13" Then Range("$F$13").ClearContents
If Target.Address = "$D$14" Then Range("$E$14").ClearContents
If Target.Address = "$E$14" Then Range("$F$14").ClearContents
If Target.Address = "$D$15" Then Range("$E$15").ClearContents
If Target.Address = "$E$15" Then Range("$F$15").ClearContents
If Target.Address = "$D$16" Then Range("$E$16").ClearContents
If Target.Address = "$E$16" Then Range("$F$16").ClearContents
If Target.Address = "$D$17" Then Range("$E$17").ClearContents
If Target.Address = "$E$17" Then Range("$F$17").ClearContents
If Target.Address = "$D$18" Then Range("$E$18").ClearContents
If Target.Address = "$E$18" Then Range("$F$18").ClearContents
If Target.Address = "$D$19" Then Range("$E$19").ClearContents
If Target.Address = "$E$19" Then Range("$F$19").ClearContents
If Target.Address = "$D$20" Then Range("$E$20").ClearContents
If Target.Address = "$E$20" Then Range("$F$20").ClearContents
If Target.Address = "$D$21" Then Range("$E$21").ClearContents
If Target.Address = "$E$21" Then Range("$F$21").ClearContents
If Target.Address = "$D$22" Then Range("$E$22").ClearContents
If Target.Address = "$E$22" Then Range("$F$22").ClearContents
If Target.Address = "$D$23" Then Range("$E$23").ClearContents
If Target.Address = "$E$23" Then Range("$F$23").ClearContents
If Target.Address = "$D$24" Then Range("$E$24").ClearContents
If Target.Address = "$E$24" Then Range("$F$24").ClearContents
If Target.Address = "$D$25" Then Range("$E$25").ClearContents
If Target.Address = "$E$25" Then Range("$F$25").ClearContents
If Target.Address = "$D$26" Then Range("$E$26").ClearContents
If Target.Address = "$E$26" Then Range("$F$26").ClearContents
If Target.Address = "$D$27" Then Range("$E$27").ClearContents
If Target.Address = "$E$27" Then Range("$F$27").ClearContents
If Target.Address = "$D$28" Then Range("$E$28").ClearContents
If Target.Address = "$E$28" Then Range("$F$28").ClearContents
If Target.Address = "$D$29" Then Range("$E$29").ClearContents
If Target.Address = "$E$29" Then Range("$F$29").ClearContents
If Target.Address = "$D$30" Then Range("$E$30").ClearContents
If Target.Address = "$E$30" Then Range("$F$30").ClearContents
If Target.Address = "$D$31" Then Range("$E$31").ClearContents
If Target.Address = "$E$31" Then Range("$F$31").ClearContents
If Target.Address = "$D$32" Then Range("$E$32").ClearContents
If Target.Address = "$E$32" Then Range("$F$32").ClearContents
If Target.Address = "$D$33" Then Range("$E$33").ClearContents
If Target.Address = "$E$33" Then Range("$F$33").ClearContents
If Target.Address = "$D$34" Then Range("$E$34").ClearContents
If Target.Address = "$E$34" Then Range("$F$34").ClearContents
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveSheet.ScrollArea = "$D$5:$E$34" Then
If Target.Offset(, -1) = "" Then Target.Offset(-1).Select
End If
End Sub
Ya que es mucho tiempo en realizar uno por uno.

La idea es que las listas desplegables se borren si la anterior cambia, pero el problema es que están en tablas y los rangos no me funcionan bien, ademas si uso rangos de celdas estas pueden variar según se aumente o disminuya la tabla.

*Los valores de las listas desplegables dependen de otras tablas.

Esperando su ayuda.

Saludos.
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

Rangos y seleccion en VB

Publicado por JuanC (1237 intervenciones) el 17/01/2018 21:34:41
algo asi...

1
2
3
4
5
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D5:D34")) Is Nothing Then
   Target.Offset(, 1).ClearContents
End If
End Sub
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
Imágen de perfil de John

Rangos y seleccion en VB

Publicado por John (5 intervenciones) el 17/01/2018 22:14:38
Gracias me sirvió bastante y ya no tengo tanto código xD, ahora me podrías decir, si es posible poner el rango de una tabla, ejem, tabla X tiene 5 columnas pero solo necesito el rango de la columna 2?

Saludos.
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

Rangos y seleccion en VB

Publicado por JuanC (1237 intervenciones) el 17/01/2018 22:54:10
no me queda claro...
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
Imágen de perfil de John

Rangos y seleccion en VB

Publicado por John (5 intervenciones) el 17/01/2018 22:57:34
En el anterior ejemplo mis rangos son celdas es decir D5:D34, lo que pregunto es si habrá alguna manera de colocar una columna de una tabla como rango, ya que si pasa algo y se elimina una fila tendré que arreglarlo cosa que con una tabla no pasaria.
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

Rangos y seleccion en VB

Publicado por JuanC (1237 intervenciones) el 17/01/2018 23:04:49
no deberias tener problemas al eliminar una fila, podrías también usar Range("D:D") para toda la columna
o trabajar con rangos con nombres...
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