View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Ronald R. Dodge, Jr.[_2_] Ronald R. Dodge, Jr.[_2_] is offline
external usenet poster
 
Posts: 134
Default Vlookup with mouse over definitions

First, to assign to an object variable, you must use the "Set" keyword. An
object variable is any variable that is not just a simple data place order
or an array of simple data place holders. Variable objects could reference
to objects built within the program, reference to class modules built by who
ever, or other objects linked to the workbook/application rather it be
directly referenced during design time (early binding) or reference during
run time (late binding)

To assign a range to a range object variable, use one of the acceptable
means of doing it, which is via Range Object, Cells Object (In the case of a
single cell as a range) or square brackets like the following:

Set TheCell = Range("A:D")
Set TheCell = [A:D]

The only problem with the above coding, the range object will be referencing
to what ever workbook and worksheet is the currently active
workbook/worksheet at the time that line of code is executed, so to get
around that, you may want to prequalify the range object with the workbook
and worksheet objects like the following:

Set TheCell = ThisWorkbook.Worksheets("Sheet1").Range("A:D")

ThisWorkbook references to the workbook that the line of code resides in.


Next, if you want to have this come up at the time when the right click is
taking place on the worksheet, you will need to use the BeforeRightClick
Event on the worksheet. To do that:

Double click on the worksheet object within VBA
Click on the drop down above the code with the left side drop down, and
click on "Worksheet"
On the right side at the top, click on the Drop down, then click on
"BeforeRightClick"

You then use the following code to find out if the user clicked on one of
the first 2 columns on the worksheet.

If Target.Column < 3 Then
<Statements
End If

From there, you will then use the CommandBarPopup object and add items to it
via the Controls Property. Also, you will set the Type Property to the type
deemed appropriate such as msoControlPopup.

--
Thanks,

Ronald R. Dodge, Jr.
Production Statistician
Master MOUS 2000
"Bryand" wrote in message
...
I am trying to get a vlookup with mouse-over to work, however I am having
difficulty assigning a Global Variable, and cannot identify what variables
to
declare.

My situation:
data.xls - Columns A:B hold the vlookup information
report.xls - is the file I want to apply this macro to, so that when I
right
click on a value in Column A it will look into the data.xls file and
return
the value in a popup.

I need to define the range variable (I assumed the range variable was the
"TheCell" but I also see "DataElements" and "LookupRange" - are these all
variables that need to be defined?) within report.xls. My previous attempt
was:

Sub RVariable()
Dim TheCell As Range
TheCell = A: D
End Sub

I have a feeling I should not be using a sub, as the macro above does not
call to it - I am a novice with VB and usually work backwards from a
finished
product so any assistance would be greatly appreciated.

Code taken from previous response:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _
Cancel As Boolean)
Dim obj As Object
Set TheCell = Target
For Each obj In Application.CommandBars("cell").Controls
If obj.Tag = "HereIsYourItem" Then obj.Delete
Next obj
If Not Application.Intersect(Target, Range("DataElements")) _
Is Nothing Then
With Application.CommandBars("cell").Controls _
.Add(Type:=msoControlButton, befo=6, _
temporary:=True)
.Caption = "See The Definition"
.OnAction = "HereIsYourMacro"
.Tag = "HereIsYourItem"
End With
End If
End Sub


'In the separate module:

Option Explicit
Public TheCell As Range

Sub HereIsYourMacro()
MsgBox Evaluate("=VLOOKUP(""" & TheCell.Value & """,LookupRange,2)")

End Sub