Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

.: Vitrine

Carregando artigos...

Views

Mostrando postagens com marcador userform. Mostrar todas as postagens
Mostrando postagens com marcador userform. Mostrar todas as postagens

VBA Excel - Populando Listbox com Multi-Colunas - Multi-column List


O Listbox pode conter múltiplas colunas de dados.

Usaremos a propriedade .ColumnWidths para configurar a largura individual das colunas.

Configurar como largura zero,ocultará a coluna que não desejamos que apareça.

Neste exemplo abaixo o listbox mostrará o nome completo do estado, sendo que a segunda coluna ficará oculta contendo as abreviações dos estados. O usuário visualizará e escolherá o seu estados, mas o resultado final no documento será a abreviação do estado.





Segue o código:

Option Explicit
Private Sub UserForm_Initialize()
Dim arrStateName() As String
Dim arrStateAbbv() As String
Dim i As Long

  Use a função Split para retornar um array unidimensional. 
  Let arrStateName = Split("Select State|Alabama|Alaska|Arizona|" _
             & "Arkansas|California|Connecticut|Etc.", "|")
  Let arrStateAbbv = Split(" |AL|AK|AZ|AR|CA|CT|Etc", "|")

  'Use a propriedade .ColumnWidth para ajustar a largura das colunas.  O 0 as esconde.

  Let ListBox1.ColumnWidths = "60;0"
  For i = 0 To UBound(arrStateName)
    ' Use o método .AddItem para adicionar multicolunas em cada linha da matriz.
    ListBox1.AddItem
    'Use o método .List para registrar os dados nas linhas e colunas específicas.
    Let ListBox1.List(i, 0) = arrStateName(i)
    Let ListBox1.List(i, 1) = arrStateAbbv(i)
  Next i
lbl_Exit:
  Exit Sub
End Sub

Private Sub CommandButton1_Click()
   Dim oRng As Word.Range
   Dim oBM As Bookmarks

  Set oBM = ActiveDocument.Bookmarks
  Set oRng = oBM("Address").Range
  Let oRng.Text = TextBox1.Text
  oBM.Add "Address", oRng
  Set oRng = oBM("City").Range
  Let oRng.Text = TextBox2.Text
  oBM.Add "City", oRng
  Set oRng = oBM("State").Range

  'Use the listbox hidden column data. Note columns are indexed starting with 0.

  Let oRng.Text = ListBox1.Column(1)
  oBM.Add "State", oRng
  Set oRng = oBM("Zip").Range
  Let oRng.Text = TextBox3.Text
  oBM.Add "Zip", oRng
  Me.Hide
  Set oRng = Nothing
  Set oBM = Nothing

lbl_Exit:
  Exit Sub
End Sub




brazilsalesforceeffectiveness@gmail.com

✔ Brazil SFE®Author´s Profile  Google+   Author´s Professional Profile   Pinterest   Author´s Tweets

VBA Excel - Populando Listbox - userform listbox

O objetivo deste post é ensinar o modo básico de incluirmos dados em um LISTBOX

Certamente espero que já tenha aprendido a criar um formulário (USERFORM).

Neste exemplo teremos um listbox com as opções sim e não:



Geralmente, mas não é regra, colocamos estes código para popular um listbox no evento Inicializar (Initialize) do nosso formulário.

O método AddItem é o responsável pelo inclusão, através de um pequeno código:



O método AddItem pode tornar-se pesado se a lista for muito grande. Por exemplo, a lista de estados que compõem os EUA e as respectivas abreviações dos distritos de Columbia requeririam 51 linhas separadas de código para populamos o listbox.

Aconselho que utilize algo mais versátil, como o método List
 e uma série de dados para simplificar o trabalho:


Sub UserForm_Initialize()

Dim myArray() As String

  'Use a função Split para retornar um array unidimensional baseado. 

  Let myArray = Split( _
                "AL|AK|AZ|AR|CA|CO|CT|DE|DC|FL|" _

             & "GA|HI|ID|IL|IN|IA|KS|KY|LA|ME|MD|" _

             & "MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|" _

             & "NY|NC|ND|OH|OK|OR|PA|RI|SC|SD|TN|" _

             & "TX|UT|VT|VA|WA|WV|WI|WY", "|")

  'Use .List method to populate listbox.

  Let ListBox1.List = myArray

lbl_Exit:

  Exit Sub

End Sub


Deixe os seus comentários! Envie este artigo, divulgue este link na sua rede social...


Tags: VBA, Excel, Listbox, userform, populate popular, 



Excel Tips - Interações com APIs - UserForms With Windows API Functions


Disponibilizar diversas funcionalidades que propiciem interferência nos formulários que criamos no MS Excel através de chamadas as suas APIs é muito prático ,rápido e funcional.

Bem, como sempre, estou usando um exemplo simples como o de fazer um botão aparecer e sumir num formulário criado por nós mesmos no MS Excel. Mas veja esta como uma oportunidade para aprender a utilizar códigos de terceiros dentro das suas aplicações VBA.

O que é uma API?
API, é o acrônimo, sim, mais prá nossa coleção, de Application Programming Interface (ou Interface de Programação de Aplicativos) é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades através de aplicativos que não pretendem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços.

De modo geral, a API é composta por uma série de funções acessíveis somente por programação, as quais nos permitem utilizarmos características de software menos evidentes aos programadores mais tradicionais.

Por exemplo, um sistema operacional possui uma grande quantidade de funções na API, que permitem ao programador criar janelas, acessar arquivos, criptografar dados etc. Mas as APIs dos sistemas operacionais costumam ser dissociadas de tarefas mais essenciais, como a manipulação de blocos de memória e acesso a dispositivos. Essas tarefas são atributos do núcleo (kernel) de sistema e raramente são programáveis. Outro exemplo são os programas de desenho geométrico que possuem uma API específica para criar automaticamente entidades de acordo com padrões definidos pelo utilizador.

Mais recentemente, o uso de API tem se generalizado nos plugins (acessórios que complementam a funcionalidade de um programa). Os autores do programa principal fornecem uma API específica para que outros autores criem plugins, estendendo as funcionalidades do programa.

Agora que já ampliamos um pouco mais a nossa compreensão do que são as APIs, façamos melhor, vamos utilizar algumas chamadas às suas funcionalidades.

Ativar no formulário o botão Maximize
Mostra ou torna invisível o botão de Maximizar e o de Minimizar no formulário ativo. Os botões ficarão visíveis, mas somente terão funcionalidades de acordo com a respectiva chamada da sua função. ShowMinimizeButton ou ShowMaximizeButton.

Function ShowMaximizeButton (UF As MSForms.UserForm, HideButton As Boolean) As Boolean

Function ShowMinimizeButton (UF As MSForms.UserForm, HideButton As Boolean) As Boolean

Bem, antes de efetuar chamadas as funções acima, precisa criar um módulo no qual colocará os códigos abaixo, pois estes são quem efetuarão as chamadas as APIs do Windows

Existem inúmeras funções com chamadas intrínsecas, e será muito produtivo que tire tempo para estudar cada uma destas, a fim de ampliar a sua compreensão de como efetuar tais chamadas. 

Este post é apenas uma pincelada na utilização desta técnica, que poderá ser ampliada até mesmo ao uso das APIs do GoogleGoogleMapsGMailSkype, etc...

As funções que não encontrar constantes abaixo, podem ser facilmente encontradas com o Google na Internet. E isso foi proposital, para que pesquise outras idéias em outros Blogs e fóruns.

Function ShowMaximizeButton (UF As MSForms.UserForm, _

    HideButton As Boolean) As Boolean

'
' ShowMaximizeButton
' Mostra (Se HideButton estiver como False) ou esconde (Se HideButton estiver como True)
' O botão de maximizar da janela.
'
Dim UFHWnd As Long

Dim WinInfo As Long

Dim R As Long

Let UFHWnd = HWndOfUserForm (UF)

If UFHWnd = 0 Then

    Let ShowMaximizeButton = False

    Exit Function

End If

Let WinInfo = GetWindowLong (UFHWnd, GWL_STYLE)



If HideButton = False Then

    Let WinInfo = WinInfo Or WS_MAXIMIZEBOX

Else

    Let WinInfo = WinInfo And (Not WS_MAXIMIZEBOX)

End If

Let R = SetWindowLong (UFHWnd, GWL_STYLE, WinInfo)

Let ShowMaximizeButton = (R <> 0)

End Function

Function ShowMinimizeButton (UF As MSForms.UserForm, _

    HideButton As Boolean) As Boolean
Dim UFHWnd As Long

Dim WinInfo As Long

Dim R As Long

Let UFHWnd = HWndOfUserForm (UF)


If UFHWnd = 0 Then

    Let ShowMinimizeButton = False

    
    Exit Function

End If

Let WinInfo = GetWindowLong (UFHWnd, GWL_STYLE)


If HideButton = False Then

    Let WinInfo = WinInfo Or WS_MINIMIZEBOX

Else

    Let WinInfo = WinInfo And (Not WS_MINIMIZEBOX)

End If


Let R = SetWindowLong (UFHWnd, GWL_STYLE, WinInfo)



Let ShowMinimizeButton = (R <> 0)

End Function



Function HWndOfUserForm (UF As MSForms.UserForm) As Long

' HWndOfUserForm
' This returns the window handle (HWnd) of the userform referenced
' by UF. It first looks for a top-level window, then a child

' of the Application window, then a child of the ActiveWindow.

Dim AppHWnd As Long

Dim DeskHWnd As Long

Dim WinHWnd As Long

Dim UFHWnd As Long

Dim Cap As String

Dim WindowCap As String

Let Cap = UF.Caption

' First, look in top level windows

Let UFHWnd = FindWindow (C_USERFORM_CLASSNAME, Cap)

If UFHWnd <> 0 Then

    Let HWndOfUserForm = UFHWnd


    Exit Function

End If


' Not a top level window. Search for child of application.

Let AppHWnd = Application.hwnd

Let UFHWnd = FindWindowEx (AppHWnd, 0&, 
C_USERFORM_CLASSNAME, Cap)


If UFHWnd <> 0 Then

    Let HWndOfUserForm = UFHWnd


    Exit Function

End If


' Not a child of the application.

' Search for child of ActiveWindow (Excel's ActiveWindow, not

' Window's ActiveWindow).


If Application.ActiveWindow Is Nothing Then

    Let HWndOfUserForm = 0


    Exit Function

End If


Let WinHWnd = WindowHWnd (Application.ActiveWindow)


Let UFHWnd = FindWindowEx (WinHWnd, 0&, C_USERFORM_CLASSNAME, Cap)


Let HWndOfUserForm = UFHWnd

End Function


Tags: VBA, FORM, userform, API, functions, Chipearson, ShowMaximizeButton, HWndOfUserForm, GetWindowLong, SetWindowLong, FindWindow, FindWindowEx, WindowHWnd

VBA Excel - O uso dos Laços - Loop Through Controls on a UserForm. Textbox, ComboBox, CheckBox etc

Os laços são parte integrante de qualquer linguagem de programação.

É de se reconhecer que muitas pessoas os utilize, mas não saibam o seu nome ou a extensão de até onde podem ser utilizados.

Loop através dos objetos (controls) de um formulário:
Os controles dentro de um formulário são uma ótima maneira de apresentar / coletar dados dos usuários. Haverão ocasiões que será necessário percorrer todos os controles em um formulário (UserForm), ou apenas valores especificados.

Loop através de todos os controles:

Private Sub CommandButton1_Click()

Dim cCont As Control

For Each cCont In Me.Controls

'Digite as suas ações aqui.

Next cCont

End Sub

Loop somente através de controles específicos:

Private Sub CommandButton1_Click()
Dim cCont As Control

For Each cCont In Me.Controls
If TypeName(cCont) = "TextBox" Then
'Digite as suas ações aqui.
End If
Next cCont
End Sub

Loop através de Controles específicos em páginas específicas de um controle MultiPage:

Private Sub CommandButton1_Click()

Dim cCont As Control

For Each cCont In Me.MultiPage1.Pages(0).Controls

If TypeName(cCont) = "TextBox" Then

'Digite as suas ações aqui.

End If

Next cCont

End Sub


Tags: VBA, Excel, Loop, through, userform, textbox, combobox, checkbox, laço, multipage




diHITT - Notícias