About Me

A minha foto
JRod - PORTUGAL
Microsoft [MVP] - Excel (10º ano consecutivo)
Ver o meu perfil completo
Com tecnologia do Blogger.

Seguidores

Estatisticas

Free Blog Counter

eXTReMe Tracker
2005-01-10




O Código:

Private Sub CommandButton1_Click() 'Botão Altera-OK

    Cells(nRow, "A") = TextBox1.Text ' As células tomam os novos dados
    Cells(nRow, "B") = TextBox2.Text
    Cells(nRow, "C") = TextBox3.Text

End Sub
2005-01-09
Em vez de utilizarmos Botões de Comando, podemos usar o SpinButton:


O resultado no Formulário é:



O Código:

Private Sub SpinButton1_SpinUp()
    nRow = nRow + 1    'Incrementa 1 linha

'mostra os dados
    TextBox1.Text = Cells(nRow, "A")
    TextBox2.Text = Cells(nRow, "B")
    TextBox3.Text = Cells(nRow, "C")
End Sub

Private Sub SpinButton1_SpinDown()
  If nRow = 2 Then    ' se a linha for a 2 (1ª linha de dados)
    Exit Sub            'já não decrementa
    Else
        nRow = nRow - 1    'Decrementa 1 linha
    End If

    'mostra os dados
    TextBox1.Text = Cells(nRow, "A")
    TextBox2.Text = Cells(nRow, "B")
    TextBox3.Text = Cells(nRow, "C")

End Sub






Código:

Public nRow As Long 'Declara a Variável como Pública,no início do Módulo
Private Sub UserForm_Initialize() ' Inicia o Form mostrando linha 2
                                  '(1ª linha de dados)

    If nRow < 2 Then
        nRow = 2
    End If

    'mostra os dados
    TextBox1.Text = Cells(nRow, "A")
    TextBox2.Text = Cells(nRow, "B")
    TextBox3.Text = Cells(nRow, "C")

End Sub


Private Sub CommandButton1_Click()    ' Botão Seguinte

    nRow = nRow + 1    'Incrementa 1 linha

'mostra os dados
    TextBox1.Text = Cells(nRow, "A")
    TextBox2.Text = Cells(nRow, "B")
    TextBox3.Text = Cells(nRow, "C")

End Sub

Private Sub CommandButton2_Click()    ' Botão Anterior
    If nRow = 2 Then    ' se a linha for a 2 (1ª linha de dados)
    Exit Sub            'já não decrementa
    Else
        nRow = nRow - 1    'Decrementa 1 linha
    End If

    'mostra os dados
    TextBox1.Text = Cells(nRow, "A")
    TextBox2.Text = Cells(nRow, "B")
    TextBox3.Text = Cells(nRow, "C")

End Sub
2005-01-08

Visto em:

VBA Visual Basic for Applications (Microsoft) Forum



O Código:

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
    (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
    (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" _
    (ByVal hWnd As Long, ByVal crey As Byte, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

Private Const GWL_EXSTYLE = (-20)
Private Const WS_EX_LAYERED = &H80000
Private Const LWA_ALPHA = &H2&

Public hWnd As Long
Private Sub UserForm_Initialize()
    Dim bytOpacity As Byte
    bytOpacity = 180 ' variável que fornece o nível de opacidade. Pode ir de 0 a 255
    hWnd = FindWindow("ThunderDFrame", Me.Caption)
    Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, _
    GetWindowLong(Me.hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED)
    Call SetLayeredWindowAttributes(Me.hWnd, 0, bytOpacity, LWA_ALPHA)
End Sub
2005-01-07
Se criarmos uma tabela numa folha do Excel e pretendermos inseri-la num documento do Word de modo a que, sempre que haja alteração na grelha, a mesma se reflicta automaticamente no documento do Word,

1º- No Excel, marcam-se as células pretendidas e copiam-se para o clipboard [CTRL + C]

2º- No Word, no local pretendido, escolhe-se Editar>Colar Especial>Colar ligação>Como: Texto formatado (RTF) e OK:

3º- Guardam-se os dois trabalhos (folha e doc):



Agora, sempre que se altera na grelha, altera-se também no documento:

No entanto, pode usar-se mais do que oito cores, através das 56 cores da palette de escolhas de cor, utilizando o tipo [Color#],
em que # se refere a um número entre 1 e 56 da palette
(1= 1ª cor da lista - Preto; 2= 2ª cor da lista - Branco ... 56= última cor da lista - Cinzento Escuro) e utilizar-se igualmente símbolos, como seja o adicionar (+) e o subtrair (-)

Exemplo:

2005-01-06
Na formatação personalizada, podem seleccionar-se até quatro cores (das oito cores possíveis: Azul, Vermelho, Amarelo, Verde, Branco, Preto, Magenta e Turquesa).

No exemplo, seleccionaram-se as quatro primeiras(Azul para valores positivos, Vemelho para valores negativos, Amarelo para valores zero e Verde para texto):

2005-01-05
O formato nulo (;;;) oculta o conteúdo da célula A2:

Antes da formatação:



Depois da formatação:

2005-01-03
A título de exemplo, uma grelha de números e de estrelas, sendo que A1:E1 são os 5 números saídos e F1:G1, as 2 estrelas saídas:



A formatação condicional para a grelha de números, partindo do princípio que os campos a verde correspondem aos números escolhidos (no exemplo, E6 corresponderá ao nº 4, E8 ao 16, etc):




A formatação condicional para a grelha de estrelas, partindo do princípio que os campos a azul correspondem aos números escolhidos (no exemplo, C16 corresponderá ao nº 2 e E16 ao 7):

2005-01-02
Inserção de dados numa folha (no exemplo denominada "DADOS") através de um formulário:

Procedimento na folha:

Definir o nome "Dados" para a tabela (através de Insert>Name>Define), com a Referência

=OFFSET(Dados!$A$1;0;0;COUNTA(Dados!$A:$A);2)



Procedimentos para o formulário:



Procedimentos a usar:

Private Sub CommandButton1_Click() ' Refere-se ao Botão do Formulário "ADICIONA"
    Dim IntNext As Integer
'Conta as linhas preenchidas existentes na grelha e adiciona 1
    IntNext = Range("Dados").Rows.Count + 1

'Envio dos valores inseridos nos campos para a grelha
    Range("A" & IntNext) = Numero.Value
    Range("B" & IntNext) = Data.Value
    Range("C" & IntNext) = Nome.Value

'Para limpar os campos do Userform, por forma a receber novos dados
    Numero = ""
    Data = ""
    Nome = ""

' Volta a chamar o procedimento para contar o número de linhas
    Call NextNumero

'Coloca o foco no campo Data
    Data.SetFocus


End Sub


Private Sub UserForm_Initialize()
    Call NextNumero
End Sub

Private Sub NextNumero()
    Numero = Range("Dados").Rows.Count
End Sub


NOTA: As TextBox1, 2 e 3 têm que alterar o nome para: Numero,Data e Nome, respectivamente.