Ribbon Getenabled Callback |
Ribbon Getenabled Callback - Excel |
|
I've been battleing over this for sometime now. I've created a custom ribbon with a range of buttons and dropdown menus. So far I have been able to get code to run when using OnAction commands for buttons, but I am now trying to use Callbacks to change the enabled state of a dropdown or change the item selected in the dropdown - but this whole business of callbacks and how to use them is really confusing me.
For example I am trying to enable a dropdown called Audience when the sheet called Audience is selected.
This is my code for the Callback
Code:
Public Sub AudienceGetEnabled(control As IRibbonControl, ByRef returnedVal) ' ' Code for getEnabled callback. Ribbon control dropDown ' If ActiveSheet.Name = "Audience" Then returnedVal = Enabled End If End Sub
And this is the code I have when the sheet Audience is selected.
Code:
Private Sub Worksheet_Activate() AudienceGetEnabled End Sub
I get an 'Argument not Optional' error when trying to run this Worksheet_Activate code, which from what I've been able to find out online has something to do with the ByRef argument given in the AudienceGetEnabled sub.
I also thought this might work on the Worksheet_Activate code but I get an Object required error
Code:
Private Sub Worksheet_Activate() control.AudienceGetEnabled.returnVal = Enabled End Sub
Any help would be greatly appreciated.
Thanks
Similar Topics
I have the below code which deletes all items from a listbox and my excel sheet which is the source for populating that listbox. I am using a option button style for my listbox and the selection style as single .i.e. you can select only one item at one go in the lisbox. I want my macro to delete the selected item from my worksheet .i.e. it's entire row so that it doesn't reflect in my lisbox any more. Below is my code :
Code:
Private Sub CommandButton2_Click() 'REMOVE SELECTION Dim I As Long With ListBox1 For I = .ListCount - 1 To 0 Step -1 If .Selected(I) Then .RemoveItem I Sheets("URL List").Rows(I + 2).EntireRow.Delete End If Next I End With End Sub
Thanks a lot for your help in advance.
I have written some code that when a button is selected will Refresh a Data Query Table and all of it's information. However, I seem to be getting issues, can some one point me in the right direction with the code?
Code:
.Sheets("Sheet 1").ListObject.QueryTable.Refresh BackgroundQuery:=False
When I recorded myslef doing this process it looked like this:
Code:
Sheets("Sheet 1").Select Range("D70872").Select Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Many thanks!
All of the buttons were working fine. Then I saved and closed the workbook and went to lunch. Now when I open the workbook, the buttons don't work! When I click them nothing happens. They appear frozen. They don't even seem to click. No error message. Nothing.
If I right-click the button in Design Mode and select Properties, I get sheet properties not the button properties. I can't seem to locate the command button properties any longer. I still see the button name "cmdButtonGetInfo" and "=EMBED("Forms.CommandButton.1","") in the name box and formula bar. The odd thing is if I create a new button it works fine until I save and close the file. When I reopen the file none of the buttons work.
It's like the buttons are being disabled when I close or open the file. Any suggestions?
Code:
Sub Mail() Dim OutApp As Object Dim OutMail As Object Set OutApp = CreateObject("Outlook.Application") OutApp.Session.Logon Set OutMail = OutApp.CreateItem(0) On Error Resume Next With OutMail .To = "cbelcher@jpfryelaw.com" .CC = "" .BCC = "" .Subject = "Burden Report" .Body = ActiveSheet.Range("A1:D12") .Attachments.Add ("C:\Documents and Settings\cbelcher\Desktop\Burden Report.xls") End With On Error GoTo 0 Set OutMail = Nothing Set OutApp = Nothing Set objMsg = Nothing End Sub
This is a very basic question, but i have been struggling for hours, so I must ask.
I I trying to simply fill a combobox on a userform from a named range on a sheet, I want to populate the combobox as soon as the userform starts. (I launch the userform from a button on the sheet) Where must I place the code? and will this code work?
Code:
Sub Button1_Click() Set UserForm1.combobox1.List = Sheets("Sheet1").Range("MyRange") UserForm1.Show End Sub
I am very new to vba, so please excuse my ignorance,
any help would be greatly appreciated
regards
jim
Until now I have been able to find all my answers through searches. As a VBA novice, it has been very helpful. I am stumped on this one, however. I am trying to autofill from the selected cell in Column C down. I would like it to stop at the last cell with data in Column B. This is the code I have so far:
Range("C2").Select
Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown))
This does the autofill, but doesn't stop at the last cell with data in Column B.
In the past I have use this code to acheive similar results:
Dim endRow As Long
endRow = Cells(Rows.Count, "B").End(xlUp).Row
Range("C2").AutoFill Destination:=Range("C2:C" & endRow)
The problem with this code is that I will not always be starting in "C2". I need code that uses whatever the selected cell is.
All help is appreciated. Thanks!
Sub OpenPDF() 'Dim pdf As String On Error Resume Next 'pdf file to open pdf = "K:\PDF\mypdf.pdf" 'open the pdf file ActiveWorkbook.FollowHyperlink pdf End Sub
So then I tried to create an instance of acrobat by setting a reference to the acrobat object but I can't get this to work either!
The code I'm using is Code:
Sub OpenPDF() Dim pdf As AcroPDDoc Dim strPDF As String Set pdf = CreateObject("AcroExch.PDDoc") 'pdf file to open strPDF = "K:\PDF\mypdf.pdf" 'open the pdf file pdf.Open strPDF End Sub
Any ideas what could be wrong with either approach?
Thank-you
My excel file will contain more than one tab.
I have to free the first two lines in all the tabs except the first one.
I tried the following code.
Code:
xlsobj.Worksheets(1).Rows("1:2").Select ActiveWindow.FreezePanes = True
But in this I have to change the Active Worksheets in VBA, Which I want to avoid.
Is there any method to achieve this without selecting the cells.
Something like
Code:
xlsobj.Worksheets(1).Rows("1:2").FreezePanes = True
I have a piece of code called ConvertDates that formats data contained on 6 worksheets. The 6 data sheets all contain a data connection to a website of foreign exchange tables.
What I want is for my code to execute as soon as the data connection refresh has finished.
When I use the statement
Code:
ActiveWorkbook.RefreshAll Application.Run "Project1.xlsm!ConvertDates"
The code executes the macro whilst the refresh is still happening, thereby screwing up my results. I don't really want to use a timed wait, because the refresh speed is going to vary from user to user.
Is there some way I can tell excel to wait till the refresh has finished and then execute the code?
Any help would be hugely appreciated.
I have just tried running the following code
Code:
Dim ws As Worksheet For Each ws In ThisWorkbook.Sheets With ws If .FilterMode Then .ShowAllData End With Next ws
in the hope that it might 'unfilter' my table but it literally doesn't do a thing!
My table is called Activity_Table
Can you provide me with something that will 'unfilter' my table if it is filtered on any or all 6 columns?
Help appreciated,
Dominic
Code:
With OutMail .To = "name@name.com" .CC = "" .BCC = "" .Subject = "Attrition for" & Range("c5") .Body = "" .Attachments.Add wb2.FullName
When it sends it does not show the name in c5.
It just reads "Attrition for"
Should there be a different code?
i've got the following problem:
I want users to double-click on a row on a protected sheet and then do some code based on the row-number of the clicked cell. I've protected the sheet because it contains a lot of formula's.
When a user double-clicks a row it triggers the code through the Workbook_SheetBeforeDoubleClick event.
After the code is executed Excel shows a message that the cell that was clicked was protected etc etc.
How can I prevent this message from popping up?
I've already tried
Code:
application.displaywarnings = false
but that didn't work
Thanks
My problem was that a userform defined with Excel at work (containing DT pickers) gave the message in the title when opening it at home. I had a light-bulb moment and wondered whether there was a difference in the version numbers for MSCOMCT2.OCX at work and at home. Turned out the work version was newer. I then copied the MSCOMCT2.* files from work, made a backup of them at home and copied those from work to my C-drive (Windows XP - c:\windows\system32\ ).
No luck. I then rebooted the machine - still no luck.
Then, finally I unregistered the old DLL via
Code:
regsvr32 /u c:\windows\system32\MSCOMCT2.OCX
(not sure if this was necessary, but I didn't think it could hurt). Reregistered the DLL via
Code:
regsvr32 c:\windows\system32\MSCOMCT2.OCX
and what do you know - it worked.
Summa summarum - it could be an idea to check whether the two machines have different version numbers for the MSCOMCT2.OCX files.
The code works, but it really slows my worksheet down when opening. Is there better way to write this? Thanks!
Code:
Dim myRange As Range Dim cell As Range Set myRange = Range("V6:V50000") For Each cell In myRange If cell.Value < 2 Then cell.Font.ColorIndex = 5 If cell.Value < 1 Then cell.Font.ColorIndex = 3 Next
I know Excel "ok", but I don't know programming.'
I'd like to be able to do something very simple (for now)...
For example...if I had PRODUCT / CODE / INV VALUE
A - CODE A - 5
B - CODE B - 11
C - CODE C - 14
I would want to be able to click a button (or scan a code for) : ADD +1 or REMOVE -1
...then scan the barcode on the product (A) and have it add or remove one, respectively. So, if the row for A is:
A - CODE A - 5
I choose "ADD" (with a button or scan code), then scan the barcode, and the spreadsheet automatically finds the code in the sheet, and changes the corresponding inventory value:
A - CODE A - 6
Does that make sense? How might I go about doing that?
I am using below code to Select the Visible rows in the target range:
Code:
Range("A:p").SpecialCells(xlCellTypeVisible).Select
Problems in this code a
1) after applying the filter, while selecting the data it is selecting all the rows in given range till last row on the workbook. I need this to select the the data only till the last used row in the given range.
2) It is not possible to provide the address of the first row after we apply the filter since the first row address may change depending on the values in the table.
E.g. 1st time when I am running the macro the first row in the visible filtered data is starting at Cell address A4 and next time when I will run the macro it may be A6
3) The Code is also selecting the 1st row which is a header row. How can we exclude it from selection.
Some one please revert with the solution.
Thanks in advance.
Code:
Sub test() Name "C:\myfolder\*.aqi" As "C:\myfolder\*.csv" End Sub
The problem is that VBA does not accept wild cards (at least as given here).
Any suggestions?
Thanks
abe
I keep getting errors, saying I'm not formulating my if statements correctly.
This is what I have:
Code:
Private Sub Workbook_Open() If Range("a1") = "" Then macrox else do nothing End If End Sub
Looking for some help and would appreciate your help. I want to prevent people cutting/copy/pasting on a spreadsheet I have developed. A couple of users keep doing so which in turn knackers my formulas. There will be occasions where I will need to be able to use these functions for maintenance and updates. Ideally I would like have a private marcro which I can run to enable these features as and when needed.
I've been at this all morning and feel like I'm going round in circles. I've tried various bits of code (sourced via google etc) & have ended up with a whole manner of outcomes but not the one I want.
To summaraise what I am looking for is some vba code which will do the following Disable cut,copy and paste when sheet is opened Enable cut,copy and paste when closed Have a macro which when run will allow me to cut/copy paste so as to implement updates when necessary.
Can anyone help?
Thanks in advance
Code:
Windows("File.xls").Activate
But what if the File.xls was a variable named File?
I have tried this:
Code:
Windows(File).Activate
Without success. Please advise.