Jump to content

Alterar a fonte e o tamanho de letra dentro de uma combobox


Recommended Posts

Os controlos de formulário, como o nome indica, devem ser utilizados nos formulários.

Os formulários a que me refiro não são os forms criados pelo Editor de VBA, mas aqueles criados em folha do Excel, apenas presentes para compatibilidade com as versões antigas(muito antigas - office 3.1).

Nesses controlos não é possivel mudar as propriedades relativas à formatação do texto, excepto o botão de comando (sendo no formulário não é possivel).

Os controlos dos forms criados no Editor VBA são diferentes e possuem mais propriedades, são os Controlos Activex.

Usa esses são melhores. Tem ligação a muitos Events, os outros apenas usam uma.

Para os modificares tens colocar em modo estrutura.

O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Link to comment
Share on other sites

Olá, agora já percebi essa parte vou passar a usar as activex mas agora não sei como fazer para aparecer uma lista dentro destas combobox. Com as outras combobox  de formulário associava a seguinte macro

Sub Dropdown1_Alteração()
Select Case Folha1.Shapes("Drop Down 1").ControlFormat.ListIndex
Case 1
MsgBox "Macro1"
Case 2
MsgBox "Macro2"
Case 3
MsgBox "Macro3"
Case Else
End Select
End Sub

com estas não sei como fazer.

Link to comment
Share on other sites

Olá, agora já percebi essa parte vou passar a usar as activex mas agora não sei como fazer para aparecer uma lista dentro destas combobox.

Vais às propriedades, colocas a lista em ListFillRange, e a célula que vai receber o valor selecionado em LinkedCell.

O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Link to comment
Share on other sites

Esse texto está correcto. indica que foi criado um objecto.

O nome da combo está na propriedade '(name)', e serve para em vba acederes a essa combo.

Por defeito deve estar 'ComboBox1'

Mas para te aparecer na combo a lista de valores tens de colocar na propriedade ListFillRange "A2:A4" em vez de "dd"

Depois muda para modo execução clicando no botão Modo de Estrutura da barra de ferramentas programador, de modo a ficar desligado.

Seguindo o teu código acima mencionado, deves escolher o evento Change() e trocar a instrução:

Select Case Folha1.Shapes("Drop Down 1").ControlFormat.ListIndex

por:

Select Case ComboBox1.Value

Atenção: Este código deves estar na Folha1, se estiver num modulo diferente não irá funcionar.

O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Link to comment
Share on other sites

Já perbecebi obrigadooooooo 😁 a partir de agora só vou usar estas combox 😄 .

se não for pedir muito tenho outra questão relacionada com as combobox que é a seguinte: A lista que eu quero que apareça na combobox  está na coluna A e que vai aumentando diariamente e que contem muitos valores repetidos o que eu gostaria de fazer era que só me aparecesse  na combo valores unicos, existe alguma maneira de fazer isto?

Link to comment
Share on other sites

Olá, encontrei este código na net que me vai acrescentando valores a combobox conforme a lista que está na coluna [A] vai crescendo agora só queria que alguem me ajudasse a modificar o código para os valores repetidos só aparecerem uma unica vez na combobox.

Private Sub ComboBox1_GotFocus()
Dim List    As Worksheet
Dim ostA    As Long

Set List = ThisWorkbook.Worksheets("List")
ostA = List.Range("A1").End(xlDown).Row
Me.OLEObjects("ComboBox1").ListFillRange = "List!A1:A" & ostA
Set List = Nothing

End Sub
Link to comment
Share on other sites

Nunca fiz uma filtragem dessas, porque prefiro usar o Access para esse tipo de trabalhos.

Mas podes através de formulas criar noutro local da folha ou noutra folha, uma lista baseada nessa, à qual retiras os items repetidos.

Vê neste ARTIGO como podes fazer isso.

O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Link to comment
Share on other sites

Uma única vez e ordenados:

Private Sub ComboBox1_GotFocus()
CargarCombo
End Sub

Sub CargarCombo()
    Dim Fila As Long, i As Long
    Folha1.ComboBox1.Clear
    Fila = 2
    Do While Len(Folha1.Cells(Fila, 1))
        CargarList Folha1.ComboBox1, Folha1.Cells(Fila, 1).Value
        Fila = Fila + 1
    Loop
End Sub
Private Function CargarList(ByVal List As Variant, ByVal Dato As String)
Dim i As Integer
    For i = 0 To List.ListCount - 1
        If List.List(i) = Dato Then Exit Function
        If List.List(i) > Dato Then Exit For
    Next
    List.AddItem Dato, i
End Function
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.