Blog Archive
-
▼
2004
(73)
-
▼
dezembro
(33)
- HAPPY NEW YEAR!!!!
- VBE: Exemplo de código - Receita Líquida versus Re...
- Fórmula com utilização de Array
- Formatar uma célula como fracção
- Formatar texto numa célula
- Este Blog EXCELer mencionado noutros Blogs
- Natal 2004
- VBE: Utilização da Função Transpose() com Arrays
- VBE: Apagar só Valores
- Encontrar e Apagar valores duplicados
- Excel: A Função SUM()
- Excel: Fórmula que utiliza várias Funções
- VBE: Exemplo de apresentação de um link
- Encontrar valores duplicados em células
- Excel: Shortcuts (IV)
- Excel: Shortcuts (III)
- Excel: Shortcuts (II)
- Excel: Shortcuts (I)
- Exemplo de Função definida pelo Utilizador II
- VBE: Exemplo de Função definida pelo Utilizador
- VBE: Função para conversão de numeração decimal pa...
- VBE: Limitar o comprimento de uma String
- VBE: Utilização de formulário para ver valores neg...
- VBE: Utilização da Função de Folha de Cálculo SUM()
- VBE: Decrementar programaticamente
- VBE: Utilização do método ONTIME e das Funções NOW...
- Quantos dias tem o mês (II)
- Formatação de Números (Imagem)
- VBE: Formatação de Números (Código)
- Exemplo da Função CONTAR.VAZIO()
- Fórmula com o operador aritmético de percentagem "%"
- VBE: A Função Array()
- VBE:Exemplo de macro que utiliza o indicador RANDO...
-
►
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
-
▼
dezembro
(33)
About Me
Com tecnologia do Blogger.
Seguidores
Estatisticas
VBE: Exemplo de código - Receita Líquida versus Receita Bruta
4:55 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Supondo que é dado o valor da Receita Líquida e que o valor do Fundo é o resultado da fórmula Receita Bruta*Taxa, como apurar o valor dessa Receita Bruta?
Uma possível resposta está no seguinte Código em VBE:
'---------------------------------------------------------------------------------------
' Procedure : CommandButton1_Click
' DateTime : 31-12-2004 16:38
' Author : Jorge Rodrigues
' Purpose : Apuramento da Receita Bruta
'---------------------------------------------------------------------------------------
'
Private Sub CommandButton1_Click()
Dim ValLiq, Tax, Cem, iBox
Tax = 88
Cem = 100
ValLiq = Worksheets("Sheet1").Range("C5")
If ValLiq = "" Then
Exit Sub
End If
iBox = Range("C4")
If iBox = "" Then
iBox = 0
End If
ValBrut = (ValLiq - iBox) * Cem / Tax
Range("C1").Select
ActiveCell = ValBrut
End Sub
O resultado seria, no exemplo:
Uma possível resposta está no seguinte Código em VBE:
'---------------------------------------------------------------------------------------
' Procedure : CommandButton1_Click
' DateTime : 31-12-2004 16:38
' Author : Jorge Rodrigues
' Purpose : Apuramento da Receita Bruta
'---------------------------------------------------------------------------------------
'
Private Sub CommandButton1_Click()
Dim ValLiq, Tax, Cem, iBox
Tax = 88
Cem = 100
ValLiq = Worksheets("Sheet1").Range("C5")
If ValLiq = "" Then
Exit Sub
End If
iBox = Range("C4")
If iBox = "" Then
iBox = 0
End If
ValBrut = (ValLiq - iBox) * Cem / Tax
Range("C1").Select
ActiveCell = ValBrut
End Sub
O resultado seria, no exemplo:
2004-12-28
Fórmula com utilização de Array
3:56 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
A fórmula que se apresenta adiciona as quantidades segundo um critério determinado (no exemplo, a quantidade correspondente a cada letra).
Como se trata de um Array, não esquecer de utilizar {}, através das teclas CTRL + Shift + Enter na fórmula activa.
De notar que o "*" aqui tem a função do operador "AND".
Como se trata de um Array, não esquecer de utilizar {}, através das teclas CTRL + Shift + Enter na fórmula activa.
De notar que o "*" aqui tem a função do operador "AND".
2004-12-27
Formatar uma célula como fracção
10:31 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Para formatar uma célula como fracção (ex. 1/4), digita-se na célula 0 1/4 (ou seja: zero,espaço, um, slash, quatro):
2004-12-26
Formatar texto numa célula
9:55 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Pode formatar-se texto numa célula activa, bastando, para isso, marcar o que se pretende
e, na barra de menus ir a Formatar>Células|Fonte
e escolher a Fonte, o Estilo, o Tamanho e a Cor.
O resultado será (exemplo):
e, na barra de menus ir a Formatar>Células|Fonte
e escolher a Fonte, o Estilo, o Tamanho e a Cor.
O resultado será (exemplo):
Este Blog EXCELer mencionado noutros Blogs
9:24 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Andrew Engwirda, autor do Blog sobre Excel: Andrew's Excel Tips tem o link deste Blog
mencionado ns sua coluna Excel Tips & Forums.
Obrigado, Andrew!
mencionado ns sua coluna Excel Tips & Forums.
Obrigado, Andrew!
2004-12-20
Natal 2004
7:11 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Até dia 26, não há nada pr'a ninguém... Por isso:
VBE: Utilização da Função Transpose() com Arrays
6:11 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Exemplo de preenchimento de células com os valores contidos em Arrays:
Código:
Sub Preencher()
Sheets("Sheet1").[A1:A5] = _
WorksheetFunction.Transpose(Array(1, 2, 3, 4, 5))
Sheets("Sheet1").[B1:B5] = _
WorksheetFunction.Transpose(Array(6, 7, 8, 9, 10))
Sheets("Sheet1").[C1:C5] = _
WorksheetFunction.Transpose(Array(11, 12, 13, 14, 15))
End Sub
Código:
Sub Preencher()
Sheets("Sheet1").[A1:A5] = _
WorksheetFunction.Transpose(Array(1, 2, 3, 4, 5))
Sheets("Sheet1").[B1:B5] = _
WorksheetFunction.Transpose(Array(6, 7, 8, 9, 10))
Sheets("Sheet1").[C1:C5] = _
WorksheetFunction.Transpose(Array(11, 12, 13, 14, 15))
End Sub
VBE: Apagar só Valores
5:01 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Se tivermos uma folha com valores e fórmulas e quisermos apagar apenas os valores, deixando ficar as fórmulas, como no exemplo a seguir:
podemos utilizar o seguinte Código:
Private Sub CommandButton1_Click()
On Error Resume Next
Cells.SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents
End Sub
podemos utilizar o seguinte Código:
Private Sub CommandButton1_Click()
On Error Resume Next
Cells.SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents
End Sub
2004-12-19
Encontrar e Apagar valores duplicados
6:59 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Em 16 deste mês, coloquei um post onde mostrei um exemplo
de uma fórmula para detectar valores duplicados em células.
Apresento agora um procedimento em VBE que apaga as linhas
onde se encontram os valores duplicados:
Sub RemoveDuplicates()
Worksheets("Sheet1").Range("A2").Sort key1:=Worksheets("Sheet1").Range("A1")
Set currentCell = Worksheets("Sheet1").Range("A1")
Do While Not IsEmpty(currentCell)
Set nextCell = currentCell.Offset(1, 0)
If nextCell.Value = currentCell.Value Then
currentCell.EntireRow.Delete
End If
Set currentCell = nextCell
Loop
End Sub
Excel: A Função SUM()
5:44 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Exemplo da utilização da Função SUM()
para somar a célula A1 das folhas 1 a 3:
Fórmula na Sheet4:
=Sum(Sheet1:Sheet3!A1)
para somar a célula A1 das folhas 1 a 3:
Fórmula na Sheet4:
=Sum(Sheet1:Sheet3!A1)
2004-12-18
Excel: Fórmula que utiliza várias Funções
7:02 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Exemplo de fórmula que pesquisa um número numa célula mediante um dado parâmetro
com vista a atribuir um certo valor à nova célula:
Fórmula em C1:
=IF(ISNUMBER(A1);IF(OR(INT(A1/1000)=17;INT(A1/1000)=18;INT(A1/1000)=19);100;IF(INT(A1/1000)>=50;50;25));"")
com vista a atribuir um certo valor à nova célula:
Fórmula em C1:
=IF(ISNUMBER(A1);IF(OR(INT(A1/1000)=17;INT(A1/1000)=18;INT(A1/1000)=19);100;IF(INT(A1/1000)>=50;50;25));"")
VBE: Exemplo de apresentação de um link
5:25 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Private Sub IblMail_Click()
Link = "mailto:jorgerod2@sapo.pt"
On Error GoTo NoCanDo
ActiveWorkbook.FollowHyperlink Address:=Link, NewWindow:=True
Unload Me
Exit Sub
NoCanDo:
MsgBox "Impossível Abrir " & Link
End Sub
2004-12-16
Encontrar valores duplicados em células
3:45 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Para encontrar valores duplicados, pode utilizar-se a seguinte fórmula, com as necessárias adaptações:
2004-12-15
Excel: Shortcuts (IV)
4:32 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Exemplos de teclas de atalho: CTRL + 0 (zero) CTRL + 9:
CTRL + 0 - esconde a(s) coluna(s) activa(s)
CTRL + 9 - esconde a(s) linha(s) activa(s)
CTRL + 0 - esconde a(s) coluna(s) activa(s)
CTRL + 9 - esconde a(s) linha(s) activa(s)
2004-12-14
Excel: Shortcuts (III)
3:59 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Exemplos de teclas de atalho - CTRL + R :
Esta tecla de atalho copia o conteúdo e o formato da primeira célula do Range. No exemplo, o Range é A1:D1, mas se o que quiséssemos copiar fosse o conteúdo de A1 e A2, marcaríamos o Range A1:D2 e usávamos o shortcut mencionado.
Esta tecla de atalho copia o conteúdo e o formato da primeira célula do Range. No exemplo, o Range é A1:D1, mas se o que quiséssemos copiar fosse o conteúdo de A1 e A2, marcaríamos o Range A1:D2 e usávamos o shortcut mencionado.
Excel: Shortcuts (II)
3:37 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Exemplos de teclas de atalho - CTRL + D:
Esta tecla de atalho copia o conteúdo e o formato da primeira célula do Range. No exemplo, o Range é C1:c5, mas se o que quiséssemos copiar fosse o conteúdo de C1 e D1, marcaríamos o Range C1:D5 e usávamos o shortcut mencionado.
Esta tecla de atalho copia o conteúdo e o formato da primeira célula do Range. No exemplo, o Range é C1:c5, mas se o que quiséssemos copiar fosse o conteúdo de C1 e D1, marcaríamos o Range C1:D5 e usávamos o shortcut mencionado.
Exemplo de Função definida pelo Utilizador II
1:37 da manhã |
Publicada por
JRod - PORTUGAL |
Editar mensagem
A Função RptSpace() devolve um número de espaços entre cadeias de caracteres:
Código:
Public Function RptSpace(ByVal strNum As Variant) As String
Dim strOut As String
strOut = Space(strNum)
RptSpace = strOut
End Function
Código:
Public Function RptSpace(ByVal strNum As Variant) As String
Dim strOut As String
strOut = Space(strNum)
RptSpace = strOut
End Function
2004-12-12
VBE: Exemplo de Função definida pelo Utilizador
4:02 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
A Função RptChar(), devolve o caracter digitado o número de vezes pretendido:
Código:
Public Function RptChar(ByVal strNum As String, _
ByVal intChar As String) As String
Dim strOut As String
strOut = String(strNum, intChar)
RptChar = strOut
End Function
Código:
Public Function RptChar(ByVal strNum As String, _
ByVal intChar As String) As String
Dim strOut As String
strOut = String(strNum, intChar)
RptChar = strOut
End Function
2004-12-11
VBE: Função para conversão de numeração decimal para romana
5:18 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
A Função dhRoman(123) ou, no exemplo, dhRoman(A1) retorna CXXIII:
Código:
Public Function dhRoman(ByVal intValue As Integer) As String
' Converte um numero decimal entre 1 and 3999
' em numeração romana.
' A partir de "VBA Developer's Handbook, 2nd Edition"
' por Ken Getz and Mike Gilbert
' Copyright 2001; Sybex, Inc. All rights reserved.
' Exemplo:
' dhRoman(123) retorna "CXXIII"
Dim varDigits As Variant
Dim lngPos As Integer
Dim intDigit As Integer
Dim strTemp As String
varDigits = Array("I", "V", "X", "L", "C", "D", "M")
lngPos = LBound(varDigits)
strTemp = ""
Do While intValue > 0
intDigit = intValue Mod 10
intValue = intValue \ 10
Select Case intDigit
Case 1
strTemp = varDigits(lngPos) & strTemp
Case 2
strTemp = varDigits(lngPos) & _
varDigits(lngPos) & strTemp
Case 3
strTemp = varDigits(lngPos) & _
varDigits(lngPos) & varDigits(lngPos) & strTemp
Case 4
strTemp = varDigits(lngPos) & _
varDigits(lngPos + 1) & strTemp
Case 5
strTemp = varDigits(lngPos + 1) & strTemp
Case 6
strTemp = varDigits(lngPos + 1) & _
varDigits(lngPos) & strTemp
Case 7
strTemp = varDigits(lngPos + 1) & _
varDigits(lngPos) & varDigits(lngPos) & strTemp
Case 8
strTemp = varDigits(lngPos + 1) & _
varDigits(lngPos) & varDigits(lngPos) & _
varDigits(lngPos) & strTemp
Case 9
strTemp = varDigits(lngPos) & _
varDigits(lngPos + 2) & strTemp
End Select
lngPos = lngPos + 2
Loop
dhRoman = strTemp
End Function
Código:
Public Function dhRoman(ByVal intValue As Integer) As String
' Converte um numero decimal entre 1 and 3999
' em numeração romana.
' A partir de "VBA Developer's Handbook, 2nd Edition"
' por Ken Getz and Mike Gilbert
' Copyright 2001; Sybex, Inc. All rights reserved.
' Exemplo:
' dhRoman(123) retorna "CXXIII"
Dim varDigits As Variant
Dim lngPos As Integer
Dim intDigit As Integer
Dim strTemp As String
varDigits = Array("I", "V", "X", "L", "C", "D", "M")
lngPos = LBound(varDigits)
strTemp = ""
Do While intValue > 0
intDigit = intValue Mod 10
intValue = intValue \ 10
Select Case intDigit
Case 1
strTemp = varDigits(lngPos) & strTemp
Case 2
strTemp = varDigits(lngPos) & _
varDigits(lngPos) & strTemp
Case 3
strTemp = varDigits(lngPos) & _
varDigits(lngPos) & varDigits(lngPos) & strTemp
Case 4
strTemp = varDigits(lngPos) & _
varDigits(lngPos + 1) & strTemp
Case 5
strTemp = varDigits(lngPos + 1) & strTemp
Case 6
strTemp = varDigits(lngPos + 1) & _
varDigits(lngPos) & strTemp
Case 7
strTemp = varDigits(lngPos + 1) & _
varDigits(lngPos) & varDigits(lngPos) & strTemp
Case 8
strTemp = varDigits(lngPos + 1) & _
varDigits(lngPos) & varDigits(lngPos) & _
varDigits(lngPos) & strTemp
Case 9
strTemp = varDigits(lngPos) & _
varDigits(lngPos + 2) & strTemp
End Select
lngPos = lngPos + 2
Loop
dhRoman = strTemp
End Function
2004-12-10
VBE: Limitar o comprimento de uma String
3:52 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Se limitarmos o comprimento da String de output, por exemplo para 11 dígitos, o nome sai truncado:
Código do exemplo:
Sub NameWidth()
Dim Name As String * 11 ' O caracter "* NN" indica o número máximo de
' dígitos pretendido para a String
Name = InputBox("Digite o seu Nome")
Range("A1") = Name
Name = InputBox("Digite o seu Nome")
Range("A2") = Name
End Sub
Código do exemplo:
Sub NameWidth()
Dim Name As String * 11 ' O caracter "* NN" indica o número máximo de
' dígitos pretendido para a String
Name = InputBox("Digite o seu Nome")
Range("A1") = Name
Name = InputBox("Digite o seu Nome")
Range("A2") = Name
End Sub
2004-12-09
VBE: Utilização de formulário para ver valores negativos
5:05 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Utilização de um formulário para identificar as células que contêm valores negativos:
Exemplo de Código:
Sub test1()
Dim arr()
Dim zero
zero = 0
Set rng = Sheets(1).Range("A1:A5")
k = Application.CountIf(Range(rng(1), rng(5)), "<0")
ReDim arr(1 To k)
j = 1
For i = 1 To rng.Count
If rng(i).Value < color="#00007f">Then
arr(j) = rng(i).Address(False, False) & " " & rng(i).Value
j = j + 1
End If
Next
UserForm1.ListBox1.List = arr
UserForm1.Show
End Sub
Exemplo de Código:
Sub test1()
Dim arr()
Dim zero
zero = 0
Set rng = Sheets(1).Range("A1:A5")
k = Application.CountIf(Range(rng(1), rng(5)), "<0")
ReDim arr(1 To k)
j = 1
For i = 1 To rng.Count
If rng(i).Value < color="#00007f">Then
arr(j) = rng(i).Address(False, False) & " " & rng(i).Value
j = j + 1
End If
Next
UserForm1.ListBox1.List = arr
UserForm1.Show
End Sub
2004-12-08
VBE: Utilização da Função de Folha de Cálculo SUM()
6:42 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Ao clicar-se no Botão de comando,
aparece o resultado em C1, que é a soma de B1:B10:
O Código em VBE, é:
Private Sub CommandButton1_Click()
Dim myRange As Range
Dim Var1 As Long
Set myRange = Worksheets("Sheet1").Range("B1:B10")
Var1 = Application.WorksheetFunction.Sum(myRange)
Range("C1") = Var1
End Sub
aparece o resultado em C1, que é a soma de B1:B10:
O Código em VBE, é:
Private Sub CommandButton1_Click()
Dim myRange As Range
Dim Var1 As Long
Set myRange = Worksheets("Sheet1").Range("B1:B10")
Var1 = Application.WorksheetFunction.Sum(myRange)
Range("C1") = Var1
End Sub
2004-12-07
VBE: Decrementar programaticamente
4:31 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Se a célula A3 for igual a SIM, então A2 diminui 1 unidade:
Private Sub CommandButton1_Click()
Dim Val
Val = Range("A2").Value
If Range("A3") = "SIM" Then
Val = Val - 1
Range("A2") = Val
End If
End Sub
Private Sub CommandButton1_Click()
Dim Val
Val = Range("A2").Value
If Range("A3") = "SIM" Then
Val = Val - 1
Range("A2") = Val
End If
End Sub
VBE: Utilização do método ONTIME e das Funções NOW e TIMEVALUE
1:21 da manhã |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Se quisermos executar um determinado procedimento ciclicamente (p.ex. ao fim de cada 5 minutos passados), podemos utilizar o seguinte:
Sub Auto_Open()
Call Teste
End Sub
Public Sub Teste()
Dim msg
msg = MsgBox("Isto é um Teste")
Application.OnTime Now + TimeValue("00:05:00"), "Teste"
End Sub
Sub Auto_Open()
Call Teste
End Sub
Public Sub Teste()
Dim msg
msg = MsgBox("Isto é um Teste")
Application.OnTime Now + TimeValue("00:05:00"), "Teste"
End Sub
2004-12-05
Quantos dias tem o mês (II)
4:48 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Em 27 de Novembro passado, apresentei uma fórmula para ver numa célula quantos dias tem determinado mês. Mostro agora uma nova fórmula, simplificada, descrita por John Mansfield -
http://pdbook.com/index.php/excel/index/ -que dá o mesmo resultado:
http://pdbook.com/index.php/excel/index/ -que dá o mesmo resultado:
Formatação de Números (Imagem)
3:54 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
O conjunto de algarismos inseridos na caixa de texto do formulário, aparecem alterados na sua formatação na célula "A1":
VBE: Formatação de Números (Código)
3:49 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Private Sub CommandButton1_Click() ' Botão "ENVIA"
Range("A1") = TextBox1.Text
Unload Me
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox1) Or Len(TextBox1) > 10 Then Cancel = True
Me.TextBox1.Text = Format(TextBox1, "000-000-0000")
End Sub
Range("A1") = TextBox1.Text
Unload Me
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox1) Or Len(TextBox1) > 10 Then Cancel = True
Me.TextBox1.Text = Format(TextBox1, "000-000-0000")
End Sub
2004-12-03
Fórmula com o operador aritmético de percentagem "%"
7:20 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Exemplo de fórmula que dá o valor resultante da aplicação de uma percentagem. Neste exemplo se a percentagem a aplicar a A1 for 10 (B1), então o valor resultante é 3 (C1). De notar a inclusão do símbolo % na própria fórmula:
VBE:Exemplo de macro que utiliza o indicador RANDOMIZE
1:17 da manhã |
Publicada por
JRod - PORTUGAL |
Editar mensagem
O indicador RANDOMIZE inicia o gerador aleatório de números (neste exemplo gera 6 números entre 1 e 49):
2004-11-30
VBE: Formatação programática de células a BOLD
4:20 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
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-29
VBE: Adicionar Comentários em células
5:46 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
2004-11-28
As propriedades SelStart e SelLength (VBE)
1:10 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
2004-11-27
Quantos dias tem o mês
4:12 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
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))
=DAY(DATE(AG3;MONTH(DATEVALUE(AG4&"-"&AG3))+1;0))
2004-11-25
Utilização das Funções IF() & AND()
3:44 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
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
VBE: Desabilitar a tecla "Escape"
8:05 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Para desabilitar a utilização da tecla "ESCAPE", pode incluir-se no procedimento Auto_Open() o comando que produz aquele efeito:
2004-11-16
VBE: Eliminação de conteúdos duplicados. Ordenação por ordem ascendente
1:48 da manhã |
Publicada por
JRod - PORTUGAL |
Editar mensagem
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
VBE: Formatação de células (cont.)
1:09 da manhã |
Publicada por
JRod - PORTUGAL |
Editar mensagem
2004-11-14
Adicionar um comentário a uma fórmula
1:05 da manhã |
Publicada por
JRod - PORTUGAL |
Editar mensagem
2004-11-13
Fórmula com Função de Data
3:13 da manhã |
Publicada por
JRod - PORTUGAL |
Editar mensagem
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
Referências relativas, absolutas e mistas
1:03 da manhã |
Publicada por
JRod - PORTUGAL |
Editar mensagem
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
Exemplo das Funções CONCATENAR() e VALOR()
9:43 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
2004-11-07
O método UNION e o método INTERSECT
1:25 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
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.
O método UNION
1:23 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
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
Funções de Data III
1:20 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Esta fórmula, que usa uma função de data [Agora()], dá o número da semana actual, desde o início do ano:
2004-11-05
Utilização de funções de data
10:04 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Subscrever:
Mensagens (Atom)