9. UserForm – Controles Dinâmicos

LISTBOX: Concatenando valores

Exemplo 1: Básico

Private Sub Button_Click()
dados = ""
primeiro = True

For i = 0 To ltDados.ListCount - 1

dados = dados + ", " + ltDados.Column(0, i)
Next
MsgBox dados
End Sub

Exemplo 2: Corrigindo erro

Private Sub Button_Click()
  dados = ""
  primeiro = True
  
    For i = 0 To ltDados.ListCount - 1

        If primeiro = True Then
            dados = dados + "" + ltDados.Column(0, i)
        Else
            dados = dados + ", " + ltDados.Column(0, i)
        End If

    Next
    MsgBox dados
    
End Sub

Exemplo 3: Somente selecionados

Private Sub Button_Click()
  
  dados = ""
  primeiro = True
 
    For i = 0 To ltDados.ListCount - 1
    
        If primeiro = True And ltDados.Selected(i) Then
            dados = dados + "" + ltDados.Column(0, i)
            primeiro = False
        ElseIf ltDados.Selected(i) = True Then
            dados = dados + ", " + ltDados.Column(0, i)
        End If
        
    Next
    
    MsgBox dados
End Sub

COMBOBOX: Carregando dados de uma planilha

* txMarca e txCor são combobox


Private Sub UserForm_Initialize()
    
    Call carregaMarcas
    Call carregaCor

End Sub

Sub carregaMarcas()
    Dim marcas, marca As Range
    Set marcas = Sheets("MARCA").Range("A1:A100")
    
    For Each marca In marcas
        If marca <> "" Then
            'Exit For
             txMarca.AddItem marca
        End If
    Next marca
End Sub

Sub carregaCor()
    Dim cores, cor As Range
    Set cores = Sheets("COR").Range("A1:A100")
    
    For Each cor In cores
        If cor <> "" Then
            'Exit For
             txCor.AddItem cor
        End If
    Next cor
End Sub

IMAGE – Carregando a partir de um botão

* Image1 faz referencia ao controle Image

Private Sub CommandButton1_Click()

    Dim strCaminhoImagem As String 

    strCaminhoImagem = Application.GetOpenFilename("*.jpg,*.jpg,*.bmp,*.bmp")
    Image1.Picture = LoadPicture(strCaminhoImagem)
 
End Sub

IMAGE – Carregando uma imagem para uma pasta

Private Sub btnImagem_Click()
    
    Dim strCaminhoImagem As String
    
    strCaminhoImagem = Application.GetOpenFilename("*.jpg,*.jpg,*.bmp,*.bmp")
    lblUrl.Caption = strCaminhoImagem
    Image1.Picture = LoadPicture(strCaminhoImagem)
End Sub

Private Sub btnLoad_Click()
    
    Range("IDIMAGEM") = Range("IDIMAGEM") + 1
    ID = Range("IDIMAGEM")

    strCaminhoDestino = CStr(ThisWorkbook.Path) & "\imagens\" & ID & ".jpg"
    FileCopy lblUrl.Caption, strCaminhoDestino

End Sub

Efetuando uma busca por Identificador único

Private Sub CommandButton1_Click()

Dim busca As String
busca = txNome.Text

With Worksheets("Plan2").Range("a1:a19")

    Set c = .Find(busca, LookIn:=xlValues)

    If Not c Is Nothing Then
    
        nRow = c.Row
        
        txEmail = Cells(nRow, 3)
        txTelefone = Cells(nRow, 2)
        
    Else
        MsgBox "Não encontrado"
    End If
    
End With

End Sub

Busca com Exclusão

Private Sub btnBusca_Click()

Dim i As Integer
Dim busca As String
i = 1

busca = txNome.Text

With Worksheets("Plan2").Range("a1:a19")

    Set c = .Find(busca, LookIn:=xlValues)

    If Not c Is Nothing Then
    
        nRow = c.Row
        
        txEmail = Cells(nRow, 3)
        txTelefone = Cells(nRow, 2)
        btnExcluir.Visible = True
        
    Else
    btnExcluir.Visible = False
        MsgBox "Não encontrado"
    End If
    
End With

End Sub



Private Sub btnExcluir_Click()

Dim busca As String


busca = txNome.Text

With Worksheets("Plan2").Range("a1:a19")

    Set c = .Find(busca, LookIn:=xlValues)

    If Not c Is Nothing Then
    
        'nRow = c.Row
        
        Range(c.Address).EntireRow.Delete
        btnExcluir.Visible = False
        
    Else
        MsgBox "Não encontrado"
    End If
    
End With
End Sub