Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3
Default How to Activate procedure with parameters

In the chapter 4 ("Microsoft excel object") of Microsoft Office 97/
Visual Basic Programmer's guide I got sample code of adding extra
function for the right click menu.

I have a problem with Onaction property, when I tried also include
parameters for sub. I need to run sub with "Target" ( the cell on
which I clicked with right button) as parameter but VBA doesn't allow
to do that.


Also I wanted to know why the sample code set Control.Tag (icbc.Tag)
as brccm. For what the Tag property is used. And should I allways use
"brccm" as Tag value.



I am working on XL2000



This is the code I use:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel
As Boolean)


For Each icbc In Application.CommandBars("cell").Controls
If icbc.Tag = "brccm" Then icbc.Delete
Next icbc


If Not Application.Intersect(Target.Cells(1, 1), Range("A:A")) Is
Nothing Then
With Application.CommandBars("cell").Controls _
.Add(Type:=msoControlButton, befo=1, Temporary:=True)
.Caption = "Jauns instruments"
.OnAction = "mkrInstr"
.Tag = "brccm"
End With
End If




Thank you,
Ivars
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default How to Activate procedure with parameters

The first thing your code does it delete any controls that have a tag
property of brccm. This is so it does not put multiple button on the menu
that are duplicates. It then creates your menu items and puts brccm in the
tag property so the next time the code runs, it will find this control and
delete it.

There is nothing special about the string "brccm". It is just what they
chose to use to mark their controls. You could use another string. As far
as passing an address, while it is possible in xl97, this undocumented
approach is not supported in some of the latest versions, so it would be
better to use another approach. One approach you might use is to put the
address of the cell in the tag along with the brccm. Another approach is to
just use ActiveCell.

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel
As Boolean)


For Each icbc In Application.CommandBars("cell").Controls
If Left(icbc.Tag,5) = "brccm" Then icbc.Delete
Next icbc



If Not Application.Intersect(Target.Cells(1, 1), Range("A:A")) Is
Nothing Then
With Application.CommandBars("cell").Controls _
.Add(Type:=msoControlButton, befo=1, Temporary:=True)
.Caption = "Jauns instruments"
.OnAction = "mkrInstr"
.Tag = "brccm" & Target.Parent.name & "!" Target.Address(0,0)
End With

End If

End Sub

Sub mkrInstr()
Dim sStr as String, Target as Range
sStr = CommandBars.ActionControl.Tag
sStr = Mid(sStr,6,255)
set Target = Range(sStr)
msgbox Target.Address(external:=True)

End Sub

--
Regards,
Tom Ogilvy


"ivarsb" wrote in message
om...
In the chapter 4 ("Microsoft excel object") of Microsoft Office 97/
Visual Basic Programmer's guide I got sample code of adding extra
function for the right click menu.

I have a problem with Onaction property, when I tried also include
parameters for sub. I need to run sub with "Target" ( the cell on
which I clicked with right button) as parameter but VBA doesn't allow
to do that.


Also I wanted to know why the sample code set Control.Tag (icbc.Tag)
as brccm. For what the Tag property is used. And should I allways use
"brccm" as Tag value.



I am working on XL2000



This is the code I use:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel
As Boolean)


For Each icbc In Application.CommandBars("cell").Controls
If icbc.Tag = "brccm" Then icbc.Delete
Next icbc


If Not Application.Intersect(Target.Cells(1, 1), Range("A:A")) Is
Nothing Then
With Application.CommandBars("cell").Controls _
.Add(Type:=msoControlButton, befo=1, Temporary:=True)
.Caption = "Jauns instruments"
.OnAction = "mkrInstr"
.Tag = "brccm"
End With
End If




Thank you,
Ivars



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 4
Default How to Activate procedure with parameters

Hello Ivars

When you say: <<< How to Activate procedure with parameters

And then you say: <<< I need to run sub with "Target" ( the cell on
which I clicked with right button)

Are you trying to pass the address of the cell you right-clicked on to
a procedure that would run from the Context-Sensitive Menu

or

From the Mouse Click?

I would suggest that you an use Activecell.Address to grab the cell
where the Right-Mouse click happened. Try it and reply with more
questions.

As to the Tag field, this is a User field, that is its for the
programmer to use and it has nothing to do with the object itself.

The tag field is very helpful when you want to logically group
objects.

say you want to change all CheckBoxes values, but you want to keep one
default.

If you use For Each CbCheckBox in Me.Checkboxes you will affect all
checkboxes.

But if you set the default checkbox's tag to NoChange then you can
use:

For Each CbCheckBox in Me.Checkboxes
If CbCheckBox.Tag < "NoChange" Then
'/Code here to do what you want to do.
End If

Next CbCheckBox

Tag is a name so to speak.

Hope this Helps.

Wassim



(ivarsb) wrote in message . com...
In the chapter 4 ("Microsoft excel object") of Microsoft Office 97/
Visual Basic Programmer's guide I got sample code of adding extra
function for the right click menu.

I have a problem with Onaction property, when I tried also include
parameters for sub. I need to run sub with "Target" ( the cell on
which I clicked with right button) as parameter but VBA doesn't allow
to do that.


Also I wanted to know why the sample code set Control.Tag (icbc.Tag)
as brccm. For what the Tag property is used. And should I allways use
"brccm" as Tag value.



I am working on XL2000



This is the code I use:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel
As Boolean)


For Each icbc In Application.CommandBars("cell").Controls
If icbc.Tag = "brccm" Then icbc.Delete
Next icbc


If Not Application.Intersect(Target.Cells(1, 1), Range("A:A")) Is
Nothing Then
With Application.CommandBars("cell").Controls _
.Add(Type:=msoControlButton, befo=1, Temporary:=True)
.Caption = "Jauns instruments"
.OnAction = "mkrInstr"
.Tag = "brccm"
End With
End If




Thank you,
Ivars

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3
Default How to Activate procedure with parameters

Thank you for answering for my questions.

The answers cleared up how to use TAG property. And I find it very
useful. Now I am wondering is there similar property for cells. I mean
is there some kind of information storage place which can't be seen
easily by users, but which would available for code usage. I can use
for that comment boxes but that are messing up worksheets with corner
triangles.
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
sub procedure Jim Excel Discussion (Misc queries) 2 November 12th 09 02:52 PM
Stop a Procedure from another procedure Ayo Excel Discussion (Misc queries) 1 October 30th 08 01:42 AM
VBA Procedure Jeff Excel Discussion (Misc queries) 0 January 20th 06 04:22 PM
Stored Procedure call and passing parameters TLowe Excel Programming 3 April 23rd 04 10:09 AM


All times are GMT +1. The time now is 03:49 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"