About Me
Com tecnologia do Blogger.
Seguidores
Estatisticas
2006-07-29
VBE: Interior.ColorIndex
6:10 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Se pretendermos colorir as células que contenham um determinado nome que se encontre numa lista (Range), podemos clicar na célula de outra lista que contém o nome requerido, como no exemplo:
Podemos utilizar o seguinte Código:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim tabela As Range
Dim nomeLista As Range
Dim cell As Range
Set tabela = Range("B1:B20")
Set nomeLista = Range("D10:H10")
tabela.Interior.ColorIndex = 0
If Target.Count = 1 Then
If Not Intersect(Target, nomeLista) Is Nothing Then
For Each cell In tabela
If cell.Value = Target.Value Then
cell.Interior.ColorIndex = 5
End If
Next cell
End If
End If
End Sub
Nota: O Código deve ser inserido no próprio módulo da Sheet activa.
Cell Colors
Color Palette & ColorIndex
2006-07-25
VBA: CapsLock On ou Off
7:38 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Se pretenderemos que o que digitarmos, por exemplo numa InputBox, apareça em maiúsculas e o respectivo conteúdo apareça numa determinada célula também com a mesma condição, podemos utilizar, via VBA, funções API do Windows.
O Código:
Declare Function GetKeyboardState Lib "user32" _
(pbKeyState As Byte) As Long
Declare Function SetKeyboardState Lib "user32" _
(lppbKeyState As Byte) As Long
Sub Abrir()
Dim User As String
Dim Res As Long
Dim KBState(0 To 255) As Byte
Res = GetKeyboardState(KBState(0))
KBState(&H14) = 1 ' 1 para "on", 0 para "off"; &H14 (CapsLock) &H90 (NumLock)
Sheets("Progressivo").Select
Do While User = ""
User = InputBox(Prompt:="Digite o seu nome e Enter para continuar", Title:="Nome")
Loop
Range("O34").Select
ActiveCell.FormulaR1C1 = User
KBState(&H14) = 0 ' 1 para "on", 0 para "off"
Res = SetKeyboardState(KBState(0))
End Sub
Num Lock, Caps Lock e Scroll Lock Toogle
Windows API Functions
2006-07-20
VBE: A Função ENVIRON()
3:11 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Por vezes, podemos ter necessidade de saber qual foi o utilizador que acedeu e quando acedeu a uma determinada worksheet, nomeadamente quando se trabalha em rede.
O Código:
Private iNextRow As Long
Const HIDDEN_SHEET As String = "Sheet3" ' ou outro nome
Private Sub Workbook_Open()
With Worksheets(HIDDEN_SHEET)
.Range("A1").Value = Environ("UserName")
.Range("B1").Value = Format(Date + Time, _
"dd mmm yyyy hh:mm:ss")
End With
iNextRow = 2
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, _
ByVal Target As Range)
On Error GoTo wb_exit
Application.EnableEvents = False
If Sh.Name <> HIDDEN_SHEET Then
With Worksheets(HIDDEN_SHEET)
.Range("A" & iNextRow).Value = Environ("UserName")
.Range("B" & iNextRow).Value = Format(Date + Time, _
"dd mmm yyyy hh:mm:ss")
End With
End If
wb_exit:
Application.EnableEvents = True
End Sub
NOTA: Este código deve ser colocado no próprio workbook, porque é um evento dele. Para tal, clicar no ícone que está à esquerda do comando chamado "File", no Toolbar , com a tecla direita do rato e escolher a opção "View Code". Copiar o código para o editor de VBE. Depois, sair e gravar o ficheiro. Quando se abrir novamente, ver-se-á, na Sheet3 (ou naquela que determinámos no código), o nome do utilizador, a data e hora do último acesso.
Environ Function - Microsoft Visual Basic Help (com o editor de VBE activo)
Environ Function (MSDN Library)
Environ Function Example
2006-07-03
Excel: a Função RANK()
8:08 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Pergunta efectuada por mail:
Tenho uma lista de nomes de pessoas e por baixo a sua pontuação...
O que pretendo é que por baixo da pontuação apareça a posição, do genero...
Uma possível solução, será a seguinte fórmula em A3, com cópia até D3:
=RANK(A2;$A$2:$D$2;0)& "º"
E se se pretender que não haja o salto da terceira posição? Neste caso, poderá utilizar-se a seguinte fórmula, como Array, em A4, copiando até D4:
{=RANK(A2;$A$2:$D$2)-(COUNTIF($A$2:$D$2;">"&A2)-SUM((1/COUNTIF($A$2:$D$2;$A$2:$D$2))*($A$2:$D$2>A2))) & "º"}
Nota: Não esquecer que as chavetas são conseguidas através das teclas CTRL + SHIFT + ENTER na fórmula activa, porque se trata de um Array.
1 - Função RANK()
2 - Função RANK()
1 - Função COUNTIF()
2 - Função COUNTIF()
Array
Subscrever:
Mensagens (Atom)