Visual Basic - QUIERO QUE LAS CELDAS ACTIVAS SE PINTEN

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

QUIERO QUE LAS CELDAS ACTIVAS SE PINTEN

Publicado por PABLO (2 intervenciones) el 21/02/2019 13:50:52
hola buenas.
tengo la siguiente problema.
quiero que en una fila determinada solo se pinten las celdas que estén dentro de un rango de inicio y termino de una hora y tambien una opcion para pintar solo las celdas activas en una fila osea solo las que tengan datos en su interior y el resto se mantengan igual.
muchas gracias por su ayuda y perdón si no me expreso bien.


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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
Private Sub cmdIng2_Click()
Dim h, m, columnaI, columnaF As Integer
    With Worksheets("Hoja1")
        hi = txtHITA.Text
        mi = txtMITA.Text
        mf = txtMFTA.Text
        hf = txtHFTA.Text
 
        ' REFERENCIA HORAS hi y hf
        Select Case hi
            Case 8
                columnaI = 3
            Case 9
                columnaI = 7
            Case 10
                columnaI = 11
            Case 11
                columnaI = 15
            Case 12
                columnaI = 19
            Case 13
                columnaI = 23
            Case 14
                columnaI = 27
            Case 15
                columnaI = 31
            Case 16
                columnaI = 35
            Case 17
                columnaI = 39
            Case 18
                columnaI = 43
            Case 19
                columnaI = 47
 
            End Select
 
            Select Case hf
            Case 8
                columnaF = 3
            Case 9
                columnaF = 7
            Case 10
                columnaF = 11
            Case 11
                columnaF = 15
            Case 12
                columnaF = 19
            Case 13
                columnaF = 23
            Case 14
                columnaF = 27
            Case 15
                columnaF = 31
            Case 16
                columnaF = 35
            Case 17
                columnaF = 39
            Case 18
                columnaF = 43
            Case 19
                columnaF = 47
 
            End Select
        'End If
 
        'REFERENCIA MINUTOS mi y mf
        Select Case mi
            Case 0 To 15
                mi = columnaI
            Case 16 To 30
                mi = columnaI + 1
            Case 31 To 45
                mi = columnaI + 2
            Case 46 To 60
                mi = columnaI + 3
        End Select
 
        Select Case mf
            Case 0 To 15
                mf = columnaF
            Case 16 To 30
                mf = columnaF + 1
            Case 31 To 45
                mf = columnaF + 2
            Case 46 To 60
                mf = columnaF + 3
        End Select
 
        'ESCRIBIR EN LA CELDA HORA INICIAL
        .Cells(8, mi) = "[" & txtHITA.Text & ":" & txtMITA.Text
        .Cells(8, mi + 1) = "-"
        .Cells(9, mi + 1) = txtCanTA.Text
 
        'ESCRIBIR EN LA CELDA HORA FINAL
        Cells(8, mf) = txtHFTA.Text & ":" & txtMFTA.Text & "]"
 
 
 
    End With
 
End Sub


-
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 Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

QUIERO QUE LAS CELDAS ACTIVAS SE PINTEN

Publicado por Antoni Masana (558 intervenciones) el 22/02/2019 11:15:23
Así el código es más agradable de leer:

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
Private Sub cmdIng2_Click()
    Dim h, m, columnaI, columnaF As Integer
    With Worksheets("Hoja1")
        hi = txtHITA.Text
        mi = txtMITA.Text
        mf = txtMFTA.Text
        hf = txtHFTA.Text
 
        ' --- REFERENCIA HORAS hi y hf
        ColumnaI = 3 + ((hi-8)*4)
        ColumnaF = 3 + ((hf-8)*4)
 
        ' --- REFERENCIA MINUTOS mi y mi
        Select Case mi
            Case 0 To 15:  mi = columnaI
            Case 16 To 30: mi = columnaI + 1
            Case 31 To 45: mi = columnaI + 2
            Case 46 To 60: mi = columnaI + 3
        End Select
 
        Select Case mf
            Case 0 To 15:   mf = columnaF
            Case 16 To 30:  mf = columnaF + 1
            Case 31 To 45:  mf = columnaF + 2
            Case 46 To 60:  mf = columnaF + 3
        End Select
 
        ' --- ESCRIBIR EN LA CELDA HORA INICIAL
        .Cells(8, mi) = "[" & txtHITA.Text & ":" & txtMITA.Text
        .Cells(8, mi + 1) = "-"
        .Cells(9, mi + 1) = txtCanTA.Text
 
        ' --- ESCRIBIR EN LA CELDA HORA FINAL
        Cells(8, mf) = txtHFTA.Text & ":" & txtMFTA.Text & "]"
    End With
End Sub

No se si funciona ni donde esta el error.
Si saber que contienen los TextBox ni que celdas son las que debe pintar poco te podemos ayudar.
Sabemos lo que dices que haces pero no lo que realmente haces porque no sabemos si escribes en el sitio correcto y en otra parte.

Para que entiendas lo que te quiero decir: es como si me explicas como disparas una flecha y después me preguntas si le diste en la diana.

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
sin imagen de perfil
Val: 37
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

QUIERO QUE LAS CELDAS ACTIVAS SE PINTEN

Publicado por seba64 (26 intervenciones) el 26/02/2019 03:42:03
Antoni: de verdad que se entiende más, se agradece.

Pablo:

Si tu duda es el que las celdas activas se pinten, por activas se entiende la selección, eso se hace escribiendo
selection.interior.color= vbyellow (o el color que quieras)

Para que selection sea el rango de celdas que se encuentra entre dos horas, puedes hacer un filtro. Graba una macro haciendo un filtro para uno de los casos. Revisa el código y cópialo y adáptalo para cada uno de los casos.
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