Reducir código vba en proyecto.

Para Dante Amor

Hola con respecto a mi proyecto de aplicación VAM creo que el código que llevo creado se podría reducir bastante y me gustaría le echaras un vistazo y me dijeras como podría hacerlo.

1 respuesta

Respuesta
1

H o l a:

Cuando tienes las mismas tareas en varios controles, lo puedes reducir creando un procedimiento general, por ejemplo, de esto que tienes:

Private Sub Op_Limpieza_Diaria_Click()
If Op_Limpieza_Diaria.Value = True Then
     Cmb_Denominacion1.Value = ""
     Cmb_Denominacion2.Value = ""
     Cmb_Denominacion3.Value = ""
     Cmb_Denominacion4.Value = ""
     Cmb_Denominacion5.Value = ""
     Cmb_Denominacion6.Value = ""
     Cmb_Denominacion1.Visible = True
     Cmb_Denominacion2.Visible = True
     Cmb_Denominacion3.Visible = True
     Cmb_Denominacion4.Visible = True
     Cmb_Denominacion5.Visible = True
     Cmb_Denominacion6.Visible = True
     Cmb_Denominacion1.List() = Range("Limpieza_Diaria").Value
     Cmb_Denominacion2.List() = Range("Limpieza_Diaria").Value
     Cmb_Denominacion3.List() = Range("Limpieza_Diaria").Value
     Cmb_Denominacion4.List() = Range("Limpieza_Diaria").Value
     Cmb_Denominacion5.List() = Range("Limpieza_Diaria").Value
     Cmb_Denominacion6.List() = Range("Limpieza_Diaria").Value
     End If
End Sub
Private Sub Op_Limpieza_Vam_Click()
If Op_Limpieza_Vam.Value = True Then
     Cmb_Denominacion1.Value = ""
     Cmb_Denominacion2.Value = ""
     Cmb_Denominacion3.Value = ""
     Cmb_Denominacion4.Value = ""
     Cmb_Denominacion5.Value = ""
     Cmb_Denominacion6.Value = ""
     Cmb_Denominacion1.Visible = True
     Cmb_Denominacion2.Visible = True
     Cmb_Denominacion3.Visible = True
     Cmb_Denominacion4.Visible = True
     Cmb_Denominacion5.Visible = True
     Cmb_Denominacion6.Visible = True
     Cmb_Denominacion1.List() = Range("Limpieza_Vam").Value
     Cmb_Denominacion2.List() = Range("Limpieza_Vam").Value
     Cmb_Denominacion3.List() = Range("Limpieza_Vam").Value
     Cmb_Denominacion4.List() = Range("Limpieza_Vam").Value
     Cmb_Denominacion5.List() = Range("Limpieza_Vam").Value
     Cmb_Denominacion6.List() = Range("Limpieza_Vam").Value
     End If
End Sub
Private Sub Op_Oficina_Diaria_Click()
If Op_Oficina_Diaria.Value = True Then
     Cmb_Denominacion1.Value = ""
     Cmb_Denominacion2.Value = ""
     Cmb_Denominacion3.Value = ""
     Cmb_Denominacion4.Value = ""
     Cmb_Denominacion5.Value = ""
     Cmb_Denominacion6.Value = ""
     Cmb_Denominacion1.Visible = True
     Cmb_Denominacion2.Visible = True
     Cmb_Denominacion3.Visible = True
     Cmb_Denominacion4.Visible = True
     Cmb_Denominacion5.Visible = True
     Cmb_Denominacion6.Visible = True
     Cmb_Denominacion1.List() = Range("Oficina_Diaria").Value
     Cmb_Denominacion2.List() = Range("Oficina_Diaria").Value
     Cmb_Denominacion3.List() = Range("Oficina_Diaria").Value
     Cmb_Denominacion4.List() = Range("Oficina_Diaria").Value
     Cmb_Denominacion5.List() = Range("Oficina_Diaria").Value
     Cmb_Denominacion6.List() = Range("Oficina_Diaria").Value
     End If
End Sub
Private Sub Op_Oficina_Vam_Click()
If Op_Oficina_Vam.Value = True Then
     Cmb_Denominacion1.Value = ""
     Cmb_Denominacion2.Value = ""
     Cmb_Denominacion3.Value = ""
     Cmb_Denominacion4.Value = ""
     Cmb_Denominacion5.Value = ""
     Cmb_Denominacion6.Value = ""
     Cmb_Denominacion1.Visible = True
     Cmb_Denominacion2.Visible = True
     Cmb_Denominacion3.Visible = True
     Cmb_Denominacion4.Visible = True
     Cmb_Denominacion5.Visible = True
     Cmb_Denominacion6.Visible = True
     Cmb_Denominacion1.List() = Range("Oficina_Vam").Value
     Cmb_Denominacion2.List() = Range("Oficina_Vam").Value
     Cmb_Denominacion3.List() = Range("Oficina_Vam").Value
     Cmb_Denominacion4.List() = Range("Oficina_Vam").Value
     Cmb_Denominacion5.List() = Range("Oficina_Vam").Value
     Cmb_Denominacion6.List() = Range("Oficina_Vam").Value
     End If
End Sub
Private Sub Op_Otros_Click()
If Op_Otros.Value = True Then
     Cmb_Denominacion1.Value = ""
     Cmb_Denominacion2.Value = ""
     Cmb_Denominacion3.Value = ""
     Cmb_Denominacion4.Value = ""
     Cmb_Denominacion5.Value = ""
     Cmb_Denominacion6.Value = ""
     Cmb_Denominacion1.Visible = False
     Cmb_Denominacion2.Visible = False
     Cmb_Denominacion3.Visible = False
     Cmb_Denominacion4.Visible = False
     Cmb_Denominacion5.Visible = False
     Cmb_Denominacion6.Visible = False
     Txt_Denominacion1.Visible = True
     Txt_Denominacion2.Visible = True
     Txt_Denominacion3.Visible = True
     Txt_Denominacion4.Visible = True
     Txt_Denominacion5.Visible = True
     Txt_Denominacion6.Visible = True
     End If
End Sub


Podría quedar así:

Private Sub OP_LIMPIEZA_DIARIA_Click()
'Por.Dante Amor
    rango = "LIMPIEZA_DIARIA"
    carga rango, True
End Sub
Private Sub OP_LIMPIEZA_VAM_Click()
    rango = "LIMPIEZA_VAM"
    carga rango, True
End Sub
Private Sub OP_OFICINA_DIARIA_Click()
    rango = "OFICINA_DIARIA"
    carga rango, True
End Sub
Private Sub OP_OFICINA_VAM_Click()
    rango = "OFICINA_VAM"
    carga rango, True
End Sub
Private Sub OP_OTROS_Click()
    carga "OFICINA_VAM", False
End Sub
Sub carga(rng, vis)
'Por.Dante Amor
    For i = 1 To 6
        Me.Controls("CMB_DENOMINACION" & i).Value = ""
        Me.Controls("CMB_DENOMINACION" & i).Visible = vis
        Me.Controls("CMB_DENOMINACION" & i).List() = Range(rng).Value
    Next
End Sub

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas