Visual Basic para Aplicaciones - modificar rango

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

modificar rango

Publicado por Andres (3 intervenciones) el 26/04/2017 06:21:37
Hola

queria saber si hay un metodo para modificar un rango en un codigo...

para ambientarlos, les cuento que el codigo ya lo habia terminado y consta de la programacion de aprox 750 contadores.

por motivos de diseño en el archivo de excell me solicitador insertar una columna con un nuevo dato.

lo que provoca es que la celda en la que el contador toma el dato que opera, se ha desplazado una a la derecha.

ejemplo

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
71
72
73
74
75
76
If Range("C8") = "BDA00101" Then
 
        If Range("B8") = "FAT" Then
 
            If Range("D8") = "U01" Then
            DATO = Sheets("CONTADORES").Range("B2")
            CONTADOR = DATO - Range("E8").Value
            Sheets("CONTADORES").Range("B2").Value = CONTADOR
            End If
            If Range("D8") = "U02" Then
            DATO = Sheets("CONTADORES").Range("B3")
            CONTADOR = DATO - Range("E8").Value
            Sheets("CONTADORES").Range("B3").Value = CONTADOR
            End If
            If Range("D8") = "U03" Then
            DATO = Sheets("CONTADORES").Range("B4")
            CONTADOR = DATO - Range("E8").Value
            Sheets("CONTADORES").Range("B4").Value = CONTADOR
            End If
            If Range("D8") = "U04" Then
            DATO = Sheets("CONTADORES").Range("B5")
            CONTADOR = DATO - Range("E8").Value
            Sheets("CONTADORES").Range("B5").Value = CONTADOR
            End If
            If Range("D8") = "U05" Then
            DATO = Sheets("CONTADORES").Range("B6")
            CONTADOR = DATO - Range("E8").Value
            Sheets("CONTADORES").Range("B6").Value = CONTADOR
            End If
            If Range("D8") = "U06" Then
            DATO = Sheets("CONTADORES").Range("B7")
            CONTADOR = DATO - Range("E8").Value
            Sheets("CONTADORES").Range("B7").Value = CONTADOR
            End If
            If Range("D8") = "U07" Then
            DATO = Sheets("CONTADORES").Range("B8")
            CONTADOR = DATO - Range("E8").Value
            Sheets("CONTADORES").Range("B8").Value = CONTADOR
            End If
            If Range("D8") = "U08" Then
            DATO = Sheets("CONTADORES").Range("B9")
            CONTADOR = DATO - Range("E8").Value
            Sheets("CONTADORES").Range("B9").Value = CONTADOR
            End If
            If Range("D8") = "U09" Then
            DATO = Sheets("CONTADORES").Range("B10")
            CONTADOR = DATO - Range("E8").Value
            Sheets("CONTADORES").Range("B10").Value = CONTADOR
            End If
            If Range("D8") = "U10" Then
            DATO = Sheets("CONTADORES").Range("B11")
            CONTADOR = DATO - Range("E8").Value
            Sheets("CONTADORES").Range("B11").Value = CONTADOR
            End If
            If Range("D8") = "U11" Then
            DATO = Sheets("CONTADORES").Range("B12")
            CONTADOR = DATO - Range("E8").Value
            Sheets("CONTADORES").Range("B12").Value = CONTADOR
            End If
            If Range("D8") = "U12" Then
            DATO = Sheets("CONTADORES").Range("B13")
            CONTADOR = DATO - Range("E8").Value
            Sheets("CONTADORES").Range("B13").Value = CONTADOR
            End If
            If Range("D8") = "U13" Then
            DATO = Sheets("CONTADORES").Range("B14")
            CONTADOR = DATO - Range("E8").Value
            Sheets("CONTADORES").Range("B14").Value = CONTADOR
            End If
            If Range("D8") = "U14" Then
            DATO = Sheets("CONTADORES").Range("B15")
            CONTADOR = DATO - Range("E8").Value
            Sheets("CONTADORES").Range("B15").Value = CONTADOR
            End If
 
        End If



aca relaciono algunos contadores, basicamente en la linea
1
CONTADOR = DATO - Range("E8").Value
debo cambiar "E8" y poner "F8", el incomveniente es que como les dije tengo programados unos 750 contadores.

Lo puedo hacer de forma abreviada, o debo hacer el cambio uno por uno en las 750 lineas???
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

modificar rango

Publicado por JuanC (565 intervenciones) el 26/04/2017 12:19:49
para salir del paso podrías usar Reemplazar... (en el editor VBA)
para mejorar el código tendrías que publicarlo completo (código o libro)
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 Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

modificar rango

Publicado por Antoni Masana (409 intervenciones) el 26/04/2017 21:42:06
Esta parte del código que repites 15 veces y marca una secuencia

1
2
3
4
5
If Range("D8") = "U01" Then
   DATO = Sheets("CONTADORES").Range("B2")
   CONTADOR = DATO - Range("E8").Value
   Sheets("CONTADORES").Range("B2").Value = CONTADOR
End If

Podrias simplificarlo asi:

1
2
3
4
5
6
7
For a=101 to 114
    If Range("D8") = "U"+Left$(str(a),2) Then
       DATO = Sheets("CONTADORES").Range("B"+str(a-99)
       CONTADOR = DATO - Range("E8").Value
       Sheets("CONTADORES").Range("B"+str(a-99).Value = CONTADOR
    End If
Next

En 7 lineas de código haces lo mismo que en 60 o 750 y parte de tu problema se soluciona solo.

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