Blog Archive
About Me
Com tecnologia do Blogger.
Seguidores
Estatisticas
2007-11-15
209: VBA - Application.InputBox()
10:03 da tarde |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Num newsgroup, colocaram a seguinte questão:
"Numa macro, o comando:
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select, selecciona todas as células com informação.
Esta informação pode depois ser copiada com o comando:
Selection.Copy
O que pretendia era usar o primeiro comando, mas de forma que ele só me seleccionasse os dados contidos numa coluna especifica.
Por Exemplo, a coluna "C" tanto pode ter 10 linhas com dados como 20 e só pretendo a selecção desses dados, todos os outros são secundários para o efeito.
Será que é possível?"
"Numa macro, o comando:
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select, selecciona todas as células com informação.
Esta informação pode depois ser copiada com o comando:
Selection.Copy
O que pretendia era usar o primeiro comando, mas de forma que ele só me seleccionasse os dados contidos numa coluna especifica.
Por Exemplo, a coluna "C" tanto pode ter 10 linhas com dados como 20 e só pretendo a selecção desses dados, todos os outros são secundários para o efeito.
Será que é possível?"
Através do seguinte exemplo, podemos equacionar a questão e ver o resultado:
O Código do exemplo:
'---------------------------------------------------------------------------------------
' Procedure : Copia_Range_Variavel
' DateTime : 15-11-2007 19:04
' Author : JRod
' Purpose : Copiar um Range Variável
'---------------------------------------------------------------------------------------
'
Sub Copia_Range_Variavel()
Dim myCel1, myCel2, myCel3 As Range
Dim Str1, Str2, Str3 As String
On Error Resume Next
Set myCel1 = Application.InputBox _
(prompt:="Confirme a célula activa, ou seleccione outra célula" _
& Chr(10) & "Cancel: Sai !", _
Title:=" Copia Range", _
Default:=ActiveCell.Address, Type:=8)
On Error GoTo 0
If myCel1 Is Nothing Then
MsgBox "Desistiu"
Exit Sub
End If
Set myCel2 = Application.InputBox _
(prompt:="Confirme a célula activa, ou seleccione outra célula" _
& Chr(10) & "Cancel: Sai !", _
Title:=" Copia Range", _
Default:=ActiveCell.Address, Type:=8)
On Error GoTo 0
If myCel2 Is Nothing Then
MsgBox "Desistiu"
Exit Sub
End If
Str1 = myCel1.Address
Str2 = myCel2.Address
Range(Str1 & ":" & Str2).Select
Selection.Copy
Range("F1").PasteSpecial (xlPasteValues)
Application.CutCopyMode = False
End Sub
Para colocar o código, acede-se ao editor do VB do Excel, com ALT + F11, cria-se um módulo e copia-se o código para lá. Depois, para o executar, podemos utilizar ALT + F8.
A imagem do que se pretende:
Tópicos relacionados:
2007-11-05
208: Excel - Procurar com 2 variáveis - Index & Match()
1:08 da manhã |
Publicada por
JRod - PORTUGAL |
Editar mensagem
Há dias, colocaram-me a seguinte questão (adaptada): "Tenho uma tabela em que uma determinada combinação de 2 variáveis, corresponde a um código. Numa outra tabela, onde tenho estas variáveis, preciso colocar o código que corresponde a cada combinação de 2 variáveis. Preciso de preencher a coluna M com o código da 1ª tabela associada a A + B (exemplo: B5=a, C5=2 - Código: III -, a que corresponde o conjunto das variáveis C + D( exemplo: G6 + H6 -- resultado em M6: III).
O exemplo, nas imagens:
Se alterar em H6, de 2 para 3, então em M6 o resultado será IV:
A fórmula, em M6 (copiada para as células pretendidas da coluna M):
{=INDEX($D$2:$D$10;MATCH(G6&H6;$B$2:$B$10&$C$2:$C$10;0))}
NOTA: Ctrl + Shift + Enter na célula activa, para obter como um array,ou seja, com {}.
Tópicos relacionados:
Subscrever:
Mensagens (Atom)