vlookup VBA code

C

cluckers

I am trying to use vlookup in a macro. I have to use

ActiveCell.Value = WorksheetFunction.VLookup(........)

because the active cell is in a column that will continuously move to the
right. Therefore I can not use a static command.

For the first argument of the vlookup how can I have it reference the cell
is column A of the same row. If I can get that part I think I can get the
rest.

Thanks
 
C

cluckers

thank Luke,

However I need more help if you could. For the second argument it is going
to be an another workbook called "sourcedata". the range is from F1 to the
furthers column to the right and the furthest row down. How would I write
that?

so far I have

ActiveCell.Value = WorksheetFunction.VLookup(Cells(ActiveCell, "A"),
soourcedata.xls.range(F1,..........), 4, False)

Not even sure if any of the second argument is correct.

thanks
 
J

Jacob Skaria

Dim rngTemp As Range

Set rngTemp = Workbooks("soourcedata.xls"). _
Worksheets("Sheet1").Range("F1:I100")

ActiveCell.Value = WorksheetFunction.VLookup(Cells(ActiveCell, _
"A"), rngTemp, 4, 0)

If this post helps click Yes
 
C

cluckers

I am getting an error that says "type mismatch"

Jacob Skaria said:
Dim rngTemp As Range

Set rngTemp = Workbooks("soourcedata.xls"). _
Worksheets("Sheet1").Range("F1:I100")

ActiveCell.Value = WorksheetFunction.VLookup(Cells(ActiveCell, _
"A"), rngTemp, 4, 0)

If this post helps click Yes
 
P

p45cal

at first glance perhaps this line:
ActiveCell.Value = WorksheetFunction.VLookup(Cells(ActiveCell, "A")
rngTemp, 4, 0)
should read:
ActiveCell.Value = WorksheetFunction.VLookup(Cells(ActiveCell*.Row*
"A"), rngTemp, 4, 0)
(as originally suggested
 
J

Jacob Skaria

Try the below test

Col A Col B Col C Col D
One 11 12 13
Two 21 22 23
Three 31 32 33
Four 41 42 43
One XX

In the above table place your cursor in xx (cell B5) and try the below code.
It should vlookup the text mentioned in A5 in the array A1:D4 and return the
corresponding value from 4th Column of the array

Dim rngTemp As Range

Set rngTemp = Worksheets("Sheet1").Range("A1:D4")
ActiveCell.Value = WorksheetFunction.VLookup(Range("A" & _
ActiveCell.Row), rngTemp, 4, 0)


If this post helps click Yes
 
C

cluckers

Here is the code

Dim srccom As Range
Set srccom = Workbooks("sourcedata.xls").Worksheets("Sheet1").Range("F1:J100")
ActiveCell.Value = WorksheetFunction.VLookup(Cells(ActiveCell, "A"), srccom,
5, 0)

Returns
Run-time error'13':
Type mismatch
 
C

cluckers

After adding "row" it returns the error "unable to get the vlookup property
of the WorksheetFunction class".
 
J

Jacob Skaria

Try the below

Dim srccom As Range
Set srccom = Workbooks("sourcedata.xls").Worksheets("Sheet1").Range("F1:J100")
ActiveCell.Value = WorksheetFunction.VLookup(Range("A" & _
ActiveCell.Row), srccom, 5, 0)


If this post helps click Yes
 
P

p45cal

Very likely because what it's looking for isn't to be found.
I tried this:
ActiveCell.Value = WorksheetFunction.VLookup(Cells(ActiveCell.Row
"A"), srccom, 5, 0)
and it worked, but then gave the error you describe if what was sough
didn't exist.
Try the likes of this:Dim srccom As Range
Set srccom = ThisWorkbook.Worksheets("Sheet1").Range("F1:J100")
xxx = Empty
On Error Resume Next
xxx = WorksheetFunction.VLookup(Cells(ActiveCell.Row, "A"), srccom, 5
0)
On Error GoTo 0 'cancels the On Error Resume Next
If Not IsEmpty(xxx) Then ActiveCell.Value = xx
 
C

cluckers

The problem is that there is not going to be a vlookup value for all active
cells. When you run this is excel t returns a value of #N/A but in VBA it
returns an error. Do you know how to get around the error so it keeps
running the macro?
 
L

Luke M

No, its simply a variant to hold whatever the result of the vlookup is
(whether its an error, a number, a string, etc)
--
Best Regards,

Luke M
*Remember to click "yes" if this post helped you!*


cluckers said:
Do I need to declare xxx as something?
 
C

cluckers

my code


Sub Macro3()
'
Dim srccom As Range


Set srccom = Workbooks("sourcedata.xls").Worksheets("Sheet1").Range("F1:J100")
xxx = Empty

On Error Resume Next
xxx = WorksheetFunction.VLookup(Cells(ActiveCell.Row, "A"), srccom, 5, 0)
On Error GoTo 0
If Not IsEmpty(xxx) Then ActiveCell.Value = xxx

End Sub


It says that

xxx = Empty

"Variable not defined"


Luke M said:
No, its simply a variant to hold whatever the result of the vlookup is
(whether its an error, a number, a string, etc)
 
C

cluckers

I put in

Dim xxx as variant

and it solved the problem

Thanks for all the help

Luke M said:
No, its simply a variant to hold whatever the result of the vlookup is
(whether its an error, a number, a string, etc)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

VBA Coding Help for Beginner 0
VLookup or Macro? 0
Cell data entering slow! 0
Help With VLOOKUP 2
Excel does not accept text format! 0
Macro 3
vlookup text in vba 3
Vlookup with an Arrayformula.... HELP! 0

Top