Blog Archive

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
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






2004-11-29



Mark Wielgus (www.automateexcel.com) noticiou a existência deste Blog.



Obrigado, Mark!
2004-11-28
Exemplo de uma selecção total numa caixa de texto (TextBox):


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-15
Exemplo de código para formatar células:



Exemplo de formatação de células utilizando o VBE:


2004-11-14
Utilização da Função N() como meio para adicionar um comentário dentro da própria fórmula:


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-08

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.
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:
Exemplo da função Dia.Semana() [WeekDay()]:
2004-11-05
Fórmula para dar o número de semanas que faltam para o fim do ano:

2004-11-04
Exemplos da utilização das Funções de texto ESQUERDA(), SEG.TEXTO() e DIREITA()



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

É claro que para somar Linhas o método é semelhante, ou seja:
=SOMA(3:4) (port)
ou
=
SUM(3:4) (ingl)

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

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:

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