About Me
Com tecnologia do Blogger.
Seguidores
Estatisticas
2006-09-28
Se pretendermos inserir uma imagem numa folha de cálculo e dentro de uma "Image box control", como no exemplo:



podemos utilizar um pouco de Código:
Option Explicit
Private Sub CommandButton1_Click()
Dim myPictName As Variant
Dim Image1 As Image
myPictName = Application.GetOpenFilename _
(filefilter:="Picture Files,*.jpg;*.bmp;*.tif;*.gif")
If myPictName = False Then
Exit Sub
End If
Me.Image1.Picture = LoadPicture(myPictName)
End Sub
podemos utilizar um pouco de Código:
Option Explicit
Private Sub CommandButton1_Click()
Dim myPictName As Variant
Dim Image1 As Image
myPictName = Application.GetOpenFilename _
(filefilter:="Picture Files,*.jpg;*.bmp;*.tif;*.gif")
If myPictName = False Then
Exit Sub
End If
Me.Image1.Picture = LoadPicture(myPictName)
End Sub
2006-09-25
Se numa tabela de nomes pretendermos filtrar um determinado nome (ex: António), o qual pode ser nome próprio, nome do meio ou apelido, podemos utilizar um pouco de VBA:
O Código:
Private Sub CommandButton1_Click()
Dim myName
Range("A1:A700").Select
myName = InputBox(Prompt:="Digite o nome para filtro ou carregue em OK para remover filtro", Title:="Filtra por nome")
If myName = "" Then
Selection.AutoFilter
Range("A1").Select
Else
Selection.AutoFilter Field:=1, Criteria1:="*" & myName & "*", Operator:=xlAnd
Range("A1").Select
End If
End Sub
NOTA: O asterisco funciona como um "multi character wild card".
WildCards (1) (Microsoft Support Center)
WildCards (2) (digdb.com)
Filtros (1) (por Debra Dalgleish)
Filtro (2) (Joseph Rubin's Exceltip.com)
2006-09-09
Se pretendermos utilizar um ficheiro texto (ex: teste.txt) como um ficheiro com conteúdo numérico sequenciador para uma célula de uma worksheet (ex: A1), então, podemos criar o ficheiro, digitar 0 (zero) e salvá-lo no directório escolhido. Depois, um pouco de VBA adicionado a um Command Button, faz o resto.
O Código:
Private Sub CommandButton1_Click()
Dim strTemp As String
On Error GoTo CommandButton1_Click_Error
Open "F:\Gabinete\teste.txt" For Input As #1
Line Input #1, strTemp
Range("A1").Value = strTemp + 1
Close #1
Open "F:\Gabinete\teste.txt" For Output As #1
strTemp = Range("A1").Value
Print #1, strTemp
Close #1
On Error GoTo 0
Exit Sub
CommandButton1_Click_Error:
MsgBox "Erro " & Err.Number & " (" & Err.Description & ") no procedimento CommandButton1_Click"
End Sub
Open Statement
2006-08-15
Consideremos o seguinte sistema de equações: x + y =8 e x - y = 2
Assim, na 2ª equação, teriamos: x= y+2. Então, na 1ª equação teríamos com a substituição de x: y + 2 + y = 8 ou seja: 2y = 6 ou seja: y = 6/2 ou seja: y = 3
Então, na 2ª equação teríamos com a substituição de y pelo seu resultado: x - 3 = 2 ou seja: x = 5
Como resolver este problema no Excel?
Com a ajuda do Add-in SOLVER, é possível. Vejamos o exemplo:
Nota - definiu-se C2 como x e C3 como y (Insert|Name|Define)
B2 é igual a 8, ou seja: x + y
B3 é igual a 2, ou seja: x - y



O resultado:

Assim, na 2ª equação, teriamos: x= y+2. Então, na 1ª equação teríamos com a substituição de x: y + 2 + y = 8 ou seja: 2y = 6 ou seja: y = 6/2 ou seja: y = 3
Então, na 2ª equação teríamos com a substituição de y pelo seu resultado: x - 3 = 2 ou seja: x = 5
Como resolver este problema no Excel?
Com a ajuda do Add-in SOLVER, é possível. Vejamos o exemplo:
Nota - definiu-se C2 como x e C3 como y (Insert|Name|Define)
B2 é igual a 8, ou seja: x + y
B3 é igual a 2, ou seja: x - y
O resultado:
2006-08-11
Podemos utilizar o comando Goal Seek (Tools|Goal Seek) para resolvermos, por exemplo, equações. Tomemos a seguinte equação: x+x+x/4+1=100 => 4x+4x+x=396 => 9x=396 => x=396/9 => x=44.
Utilizando o Excel:
A célula A1 será a incógnita (x). Digitamos o valor 0 (zero)
Em B1: =A1+A1+A1/4+1
Utilizando o comando Goal Seek:
O valor colocado no campo "To value" faz parte da equação (100):
E o resultado é dado na célula A1, ou seja, 44, que é o valor de x e o resultado da equação:
2006-08-07
Sabendo como funciona o Operador de Divisão Inteiro (\), então, podemos construir uma UDF, que mais não é do que a Função do Excel denominada QUOTIENT().
Vejamos o exemplo no seguinte screenshot:

O Código da Função IntDiv():
Function IntDiv(ByVal vStr As Double, vStr1 As Double) As Double
Dim oStr As String
oStr = vStr \ vStr1
IntDiv = oStr
End Function
Nota -
Vejamos o exemplo no seguinte screenshot:
O Código da Função IntDiv():
Function IntDiv(ByVal vStr As Double, vStr1 As Double) As Double
Dim oStr As String
oStr = vStr \ vStr1
IntDiv = oStr
End Function
Nota -
Como se pode verificar, é indiferente colocar directamente o valor do dividendo e do divisor ou apenas colocar o endereço das respectivas células que contêm os valores mencionados.
Ao contrário do operador de divisão usual no Excel (/), que nos fornece um resultado com valor fraccionário, o operador de divisão inteiro (\), no VBA, dá-nos sempre o resultado num número inteiro, com nenhuma divisória fracionária.
Vejamos o exemplo:
O Código da função Teste():
Function Teste()
Dim oDbl As Double
Dim vA1 As Double
Dim vA2 As Double
vA1 = Range("a1")
vA2 = Range("a2")
oDbl = vA1 \ vA2
Teste = oDbl
End Function
Integer Division (\)
Function Quotient()
Function Mod()
Function Round()
2006-07-29
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
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
Subscrever:
Mensagens (Atom)