Interessante, trabalho na área de projetos de Engenharia Elétrica também.
Crie um formulário com os controles:
Label1 até Label6
CommandButton1
TextBox1
ComboBox1
Insira o código:
Private Sub CommandButton1_Click()
Dim ws As Variant
Dim lRow As Long
Dim lCol As Long
Dim rCol As Range
Dim lRowLast As Long
Dim lÍndice As Long
With ThisWorkbook
For Each ws In Array(.Worksheets("CCF"), _
.Worksheets("CRF"), _
.Worksheets("CRP"))
lRow = 0
lRowLast = RowLast(ws.Columns("E"))
lCol = EleOf(ComboBox1.Value, ws.Range("F3:R3"))
Set rCol = ws.Cells(4, lCol).Resize(lRowLast - 4 + 1)
On Error Resume Next
lRow = WorksheetFunction.Match(CSng(TextBox1.Value), rCol, 1) + rCol.Row
On Error GoTo 0
If lRow = 0 Then lRow = 4
Controls("Label" & lÍndice * 2 + 1).Caption = _
ws.Cells(lRow, "B")
Controls("Label" & lÍndice * 2 + 2).Caption = _
ws.Cells(lRow, "C")
lÍndice = lÍndice + 1
Next ws
End With
End Sub
Private Sub UserForm_Initialize()
ComboBox1.Style = fmStyleDropDownList
ComboBox1.List = WorksheetFunction.Transpose( _
ThisWorkbook.Sheets(1).Range("F3:R3"))
End Sub
Private Function RowLast(rng As Range) As Long
'Retorna o valor da última linha povoada do intervalo rng
With rng
On Error Resume Next
RowLast = .Find(What:="*" _
, After:=.Cells(1) _
, SearchDirection:=xlPrevious _
, SearchOrder:=xlByColumns _
, LookIn:=xlFormulas).Row
If RowLast = 0 Then RowLast = rng.Cells(1).Row
End With
End Function
Function EleOf(ByVal vTermo As Variant, ByVal vVetor As Variant) As Long
'Retorna o número da linha ou coluna de uma célula numa linha ou coluna.
'Se vVetor for uma Variant() ou String(), retorna o índice do elemento no vetor.
'Caso não seja encontrada nenhuma ocorrência, é retornado 0.
On Error Resume Next
Select Case TypeName(vVetor)
Case "Range"
If vVetor.Columns.Count = 1 Then
'vVetor é uma coluna
EleOf = WorksheetFunction.Match(vTermo, vVetor, 0) + vVetor.Row - 1
ElseIf vVetor.Rows.Count = 1 Then
'vVetor é uma linha
EleOf = WorksheetFunction.Match(vTermo, vVetor, 0) + vVetor.Column - 1
End If
Case "Variant()", "String()"
EleOf = WorksheetFunction.Match(vTermo, vVetor, 0)
End Select
End Function
Felipe Costa Gualberto
Microsoft Excel MVP
http://www.ambienteoffice.com.br
Postado : 28/06/2012 5:36 am