Blog Archive
-
▼
2004
(73)
-
▼
novembro
(28)
- VBE: Formatação programática de células a BOLD
- VBE: Adicionar Comentários em células
- Thanks, Mark!
- As propriedades SelStart e SelLength (VBE)
- Quantos dias tem o mês
- Utilização das Funções IF() & AND()
- VBE: Desabilitar a tecla "Escape"
- VBE: Eliminação de conteúdos duplicados. Ordenação...
- VBE: Formatação de células (cont.)
- VBE: Formatação de células
- Adicionar um comentário a uma fórmula
- Fórmula com Função de Data
- Referências relativas, absolutas e mistas
- Exemplo das Funções CONCATENAR() e VALOR()
- O método UNION e o método INTERSECT
- O método UNION
- Funções de Data III
- Funções de Data II
- Utilização de funções de data
- Funções de Texto
- 9R x 1C - Significado
- Somar Linhas
- Somar Colunas
- Determinar mensagem mediante valor da célula
- Somar uma coluna, obedecendo a dois critérios
- Mensagem de alerta diário a determinada hora
- Converter horas em minutos
- Incrementar número
-
▼
novembro
(28)
About Me
Com tecnologia do Blogger.
Seguidores
Estatisticas
2004-11-30
Exemplo de procedimento para formatação de células a BOLD, se estas contiverem valores negativos:
Sub BoldNegative()
Sheets("Hard_Bill").SelectColumns("E:E").Select
On Error Resume Next
Call CheckCells(Selection.SpecialCells(xlConstants, 23))
Call CheckCells(Selection.SpecialCells(xlFormulas, 23))
Columns("H:H").Select
On Error Resume Next
Call CheckCells(Selection.SpecialCells(xlConstants, 23))
Call CheckCells(Selection.SpecialCells(xlFormulas, 23))
Range("a1").Select
End Sub
Sub CheckCells(CurrRange As Range)
For Each cell In CurrRange
If cell.Value <>
cell.Font.Bold = True
With cell.Interior.ColorIndex = 5.Pattern = xlSolid
End With
End If
If cell.Value >= 0 Then
cell.Font.Bold = False
Selection.Interior.ColorIndex = 0
End If
Next cell
End Sub
Sub BoldNegative()
Sheets("Hard_Bill").SelectColumns("E:E").Select
On Error Resume Next
Call CheckCells(Selection.SpecialCells(xlConstants, 23))
Call CheckCells(Selection.SpecialCells(xlFormulas, 23))
Columns("H:H").Select
On Error Resume Next
Call CheckCells(Selection.SpecialCells(xlConstants, 23))
Call CheckCells(Selection.SpecialCells(xlFormulas, 23))
Range("a1").Select
End Sub
Sub CheckCells(CurrRange As Range)
For Each cell In CurrRange
If cell.Value <>
cell.Font.Bold = True
With cell.Interior.ColorIndex = 5.Pattern = xlSolid
End With
End If
If cell.Value >= 0 Then
cell.Font.Bold = False
Selection.Interior.ColorIndex = 0
End If
Next cell
End Sub
2004-11-27
Para ver numa célula quantos dias tem determinado mês, pode utilizar-se a seguinte fórmula:
=DAY(DATE(AG3;MONTH(DATEVALUE(AG4&"-"&AG3))+1;0))

2004-11-25
Assumindo que A4=05-11-2004, que A3=25-11-2004 e que o x de B1 deve ser maior do que 5 e que A1 é maior do que A4 mas menor do que A3, para aparecer a mensagem "ALERTA", caso contrário aparece a mensagem "NADA", teremos:

2004-11-24
Para desabilitar a utilização da tecla "ESCAPE", pode incluir-se no procedimento Auto_Open() o comando que produz aquele efeito:

2004-11-16
Exemplo de um procedimento que efectua a eliminação de conteúdos duplicados e efectua a ordenação por ordem ascendente, já sem os registos duplicados:

2004-11-13
A fórmula que se mostra, deduz de uma data (A1) outra data (B1) e apresenta a palavra "EXPIROU", se o número for superior a 365:

2004-11-11

A célula B1 contém referência relativa à célula A2, ou seja a coordenada da coluna é relativa e a linha também;
A célula B2 contém referência absoluta à célula A2, ou seja, a coordenada da coluna é absoluta e a linha também;
A célula B3 contém referência mista à célula A2, ou seja, a coordenada da coluna é relativa e a linha é absoluta;
A célula B4 contém referência mista à célula A2, ou seja, a coordenada da coluna é absoluta e a linha é relativa.
NOTA: Quando se introduz ou edita uma fórmula, ao premir-se a tecla de função F4, alteram-se os tipos de referência do ponto de inserção que estiver mais próximo.
2004-11-07
Então, perguntei ao John como poderíamos somar valores existentes nessa combinação de Ranges, sem que se adicionassem, por duas vezes, a intersecção das linhas com as colunas.
A resposta foi dada da seguinte maneira:
Como se pode verificar, a rotina, em primeiro lugar, efectua um loop através de todas as células, utilizando o método UNION, para obter o valor total (intersecção incluída).
Depois, efectua outro loop, igualmente através da totalidade das células, utilizando o método INTERSECT, para obter o valor total da intersecção.
Finalmente, subtrai a soma deste segundo loop à soma do primeiro, a fim de obter o valor total correcto.
A resposta foi dada da seguinte maneira:

Como se pode verificar, a rotina, em primeiro lugar, efectua um loop através de todas as células, utilizando o método UNION, para obter o valor total (intersecção incluída).
Depois, efectua outro loop, igualmente através da totalidade das células, utilizando o método INTERSECT, para obter o valor total da intersecção.
Finalmente, subtrai a soma deste segundo loop à soma do primeiro, a fim de obter o valor total correcto.
Há uns dias atrás, John Mansfield (http://pdbook.com/index.php/excel/index/), mostrou como se podem combinar Ranges através do método UNION, como se pode ver no exemplo que se segue:

2004-11-06
Esta fórmula, que usa uma função de data [Agora()], dá o número da semana actual, desde o início do ano:


Se quisermos marcar C2:C10, veremos que na "Name Box" aparece a seguinte referência: "9R x 1C".
O significado é o seguinte: 1 Coluna (Columns), 9 Linhas (Rows) marcadas.
Já agora, assumindo que as células C2:C10 estão preenchidas e que as queremos marcar, então, a partir de C2, utilizar o seguinte atalho de teclado(shortcut): CTRL - SHIFT - DOWN ARROW

Para somar Colunas sem a preocupação de as limitar, pode utilizar-se a seguinte fórmula:
=SOMA(B:C) (port.)
ou
=SUM(B:C) (ingl)
2004-11-03

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If IsEmpty(Range("A1")) Then
Exit Sub
End If
If Range("A1") <> 0 Then
Call Teste
ElseIf Range("A1") = 0 Then
MsgBox "O valor da célula não pode ser ZERO!!!"
Else
Exit Sub
End If
Range("A1").ClearContents
End Sub
-------
Sub Teste()
MsgBox "Parabéns!"
End Sub
2004-11-02

E1 é o resultado da soma da coluna C, mas obedecendo aos seguintes critérios: só somar em C as células que, na coluna B sejam iguais a D1 e que, na coluna A não sejam "F".
Fórmula:
={SOMA((A1:A5<>"F")*(B1:B5=D1)*C1:C5)}
O array {} é obtido pressionando CTRL-SHIFT-ENTER.
Para aparecer a mensagem
Atenção!!!! São horas de ACORDAR!!!
a uma determinada hora (no exemplo, às 18:19:00), podemos utilizar, adaptado, os seguintes módulos:
Sub Auto_Open()
Application.OnTime TimeValue("18:19:00"), "Mensagem"
End Sub
Sub Mensagem()
Dim msg As String
msg = MsgBox("Atenção!!!! São horas de ACORDAR!!!")
End Sub
Atenção!!!! São horas de ACORDAR!!!
a uma determinada hora (no exemplo, às 18:19:00), podemos utilizar, adaptado, os seguintes módulos:
Sub Auto_Open()
Application.OnTime TimeValue("18:19:00"), "Mensagem"
End Sub
Sub Mensagem()
Dim msg As String
msg = MsgBox("Atenção!!!! São horas de ACORDAR!!!")
End Sub
2004-11-01
Se quisermos converter horas em minutos, por exemplo1h e 30m em 90m, podemos fazer o seguinte:
Assumindo que em A1 temos 1:30:00 (formato hh:mm:ss) e queremos ter o resultado em minutos na célula B1, então, formata-se, em primeiro lugar, a célula B1 como número e depois, escreve-se a seguinte fórmula:
=A1*1440
O resultado será 90:
Assumindo que em A1 temos 1:30:00 (formato hh:mm:ss) e queremos ter o resultado em minutos na célula B1, então, formata-se, em primeiro lugar, a célula B1 como número e depois, escreve-se a seguinte fórmula:
=A1*1440
O resultado será 90:

Se pretendermos incrementar sequencialmente um número numa dada célula e quisermos manter os zeros à esquerda ( p.ex. 000535 - 000536, como nas facturas), podemos criar um botão de comando e associar-lhe uma macro que faça isso. Deste modo, sempre que clicarmos no botão, o número da célula é incrementado em uma unidade:
Private Sub CommandButton1_Click()
Range("A1").NumberFormat = "000000"
If IsNumeric(Range("A1")) Then
Range("A1") = Range("A1").Value + 1
End If
End Sub
Private Sub CommandButton1_Click()
Range("A1").NumberFormat = "000000"
If IsNumeric(Range("A1")) Then
Range("A1") = Range("A1").Value + 1
End If
End Sub
Subscrever:
Mensagens (Atom)