Intercept & Cancel Keystroke Events When CommandButton Is Active
Jan 11, 2010
I'm building an Excel worksheet into a kind of dashboard with CommandButtons and TextBoxes to drive the functionality of the rest of the document.
I'm trying to recreate some of the functionality of a UserForm (e.g., tab order). I'm using the CommandButton's KeyDown event to respond if the user presses Enter:
Is there a way to set up a cell selection event trigger through an addin when it is installed so that I can respond to selections made on user's sheets?
I wrote a small .xla add-in for Excel, which puts a command bar on top, and provides several buttons that do some tasks on the workbook that are frequently needed in our office. At some point, I needed to catch the event of a newly activated sheet, because my add-in will do something upon this event (namely, change the state of one of the buttons on its own command bar)
After some reading and searching, I managed to accomplish the task, however not completely. I first want to copy my code. The code has some tags in it, in order to make it easy to follow the flow and find out where the error lies. Here is the class module in the xla, which handles the events of the application:
' Class name is EventClassModule Public WithEvents App As Application
Private Sub Class_Initialize() MsgBox "Event Class initialized" ' Just to follow End Sub
Private Sub App_WorkbookOpen(ByVal Wb As Workbook) MsgBox "WB Opened: " & Wb.Name ' Just to follow End Sub.......................
I have time (T) as a common variable located in cells A1:A9000. I also have two large data sets in columns B and C (cells B1:B9000 and C1:C9000). If I put them into an X,Y Scatter chart it is easy to see that at some point in time (perhaps around cell A3000) the slope in data set B will begin to rise and eventually the two curves will cross. I would like to find the intercept point and/or an estimate of that point (if it does not exist in the data set) and have the corresponding time reported in a set cell.
I need to calculate the INTERCEPT and SLOPE of following daily stock prices, but 60 days before the announcement days. Its for my dissertation and Its the first time i have to work with that much data. Event study.jpgEvent.xlsx
Since I practically never deliberately hit Control-2 through Control-5 -- and do hit them "more than never," I thought I'd grab them with the KeyPress event (or KeyDown?). Then it hit me that I'm not sure where it would go.
This is for every workbook so this would generically reside in personal.xls. ThisWorkbook doesn't seem like the right place; I want its scope to be ActiveWorkbook. Would it require a class module (actually, I already looked, and don't see any keyboard events under "App")?
I have the following in WorkBook and would like it executed when I hit enter after entering data into "Quarter":
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.EnableEvents = False Set WatchRange = Range("Quarter") Set IntersectRange = Intersect(Target, WatchRange) If Not IntersectRange Is Nothing Then Application.Run "PERSONAL.XLSB!ChangeRangeNames" End If Application.EnableEvents = True End Sub
I have a list of asset numbers that I am displaying to a user. I have a cell where the user is to type in the asset number. What I would like is to be able to display a list of matches in another group of cells.
I.e. - if the cell is populated with "D49", the list on the right will contain all asset numbers starting with "D49"...
I can do this easily enough if I wait for the "Change" event on the worksheet - but this necessitates the user typing some in, hitting enter, etcetera.
Is there any way to trigger an event per keystroke instead of on worksheet.change?
I want (using keystrokes only) to Save As my workbook with the data in a certain cell. However, when I select this cell, and then ctrl + c, it copies the cell (not just the data inside), and so it doesn't let me paste this as the name of the document. Does anyone know how to use keystrokes to highlight the data itself in a selected cell.
this it the row. Article No. is A1, but G04532 is A10073 because of sorting. I want to select A1 and do a for loop downwards to see if the next cell is the same. Ultimately i want to copy A1:A7 because they are the same....
How to set up a sheet with single-keystroke data entry. I am writing a sheet to store golf scores. I need to be able to key in scores at a high rate of speed.
The allowed data are: 1, 2, 3, 4,5 6, 7, 8, 9. I want the operator to be able to press 3 (or Alt-3) and get:a) a 3 is typed into the cell. b) the cursor moves to the right one cell. Etc. for 1 thru 9.
I have a userform with 3 option buttons. Each buttin is set to display another userform.
Private Sub OptionButton1_Click() Userform1.Show End Sub Private Sub OptionButton2_Click() Userform2.show End Sub Private Sub OptionButton3_Click() Userform3.Show End Sub Private Sub UserForm_Click()
End Sub
Right now the form is running perfectly. If I select an option with the mouse the correct form shows right up. The issue I have is that, the excel file will be running on a computer that will have no mouse. It will be using a barcode reader as its primary input source. What i would like to do is have the user swipe a 1,2 or 3 will the barcode reader or keypad.
I am aware that I can use single changing events in worksheet change events. For instance, if column 1, or A is changed, do something. This is only a single If statement, i.e. either the condition is true, or not. What I am not sure is if I can use two changing events, i.e. two conditions. For e.g. I would like if Column A value is X and Column B is "Active", action it, but only if two conditions are true.
For.e,g. The below syntax does not work. If it is only column A, it does work, but I want both A and B to be true, then copy and paste the target does not anything.
VB: If Target.Column = 1 Then If Target.Column = 2 Then If Not Intersect(Target, Range("A2:A" & Rows.Count)) Is Nothing Then If Not Intersect(Target, Range("B2:B" & Rows.Count)) Is Nothing Then If Target.Value = "X" And Target.Value = "Active" Then
I am using a bar code gun to enter numbers. There are two bar codes on each item that I am scanning requiring two columns for each item. Right now I squeeze the trigger and the number pops up into the currently active cell. Then I use the arrow key to move over one cell and squeeze the trigger for the next number. Then Down arrow following with a left arrow to move the highlighted cell down one line back to the first column. Kind of inefficient because although repetitive there is room for errors on my part.
Is there a way to make it that every time I press the space bar or some other key that excel highlights a cell following my desired pattern? At least for the time that I am using the bar code gun? Making it so pressing the space bar would advance the selected cell over, then down and left, then over, then down and left, alternating with each press following that pattern ad infinitum. I have to scan hundreds of these babies.
Would this be difficult? I’m not the programming type. Any help would be greatly appreciated. At least I no longer have to manually type each number in. That was a real bummer.
I've defined a number of variables in my spreadsheet. When I want to use one I type "=variablename" and 'm presented with a list menu.jpg
In the above example, I have several variables starting with the word "Harvard" (a town, not the university :-)
How do I select one of these without having to double click with the mouse.
Up and down arrows allow me to highlight an item but I cannot find a keystroke that allows me to select the highlighted item. Instead I have to lift my hand off the keyboard and use the mouse.
One of my commandbuttons will every now and then be covered by the FormulaBar, is it possible to assign a short key/ hot key for its function (CTRL+q)?
CommandButton's code: Private Sub CommandButton3_Click() Select Case ActiveCell.Interior.ColorIndex Case xlNone: ActiveCell.Interior.ColorIndex = 3 Case 3: ActiveCell.Interior.ColorIndex = 6 Case 6: ActiveCell.Interior.ColorIndex = 10 Case 10: ActiveCell.Interior.ColorIndex = xlNone End Select End Sub
I have a large number of commandbuttons on a userform that I wish to apply captions to via a for loop. Each button is numbered appropriately for this purpose. e.g.
Button_1, Button_2 etc etc
I want the loop to compile a string that represents the button name e.g.
String = "Button_" & Loop_Count and then use my defined commandbutton:
Dim My_Button as commandbutton to name the buttons. So the loop would be something like:
I have a commandbutton (CommandButton1) on a worksheet ("SCHEDULE"). I was wondering if there's a way to freeze the commandbutton on the bottom, on the right... I would like that, when you scroll down or to the right, the commandbutton doesn't move....
My code is:
Private Sub CommandButton1_Click() Dim ScrollRw As Long 'Botón De comando parte inferior izquierda Dim ScrollCol As Integer 'de la hoja "PROGRAMACION" ScrollRw = ActiveWindow.ScrollRow ScrollCol = ActiveWindow.ScrollColumn Modulo1.BorrarTabla 'Código que borra la tabla
I have a little problem with a userform commandbutton that I cannot resolve. I cannot seem to excecute a macro from a commandbutton, but if I go to the VBA project I can get it to work from there.
The cmb just calls a macro, which in itself call 5 other macros. This is the code for the button:
Can I use a commandButton too clear data out of my textBoxes. Been reading a lot and do not understand how,I'm the type of guy if you show me too the water I will drink it. I will send a example of what I want too do.
I have a userform which collects fuel data from a pump and populates 2 worksheets (pump1) and (pump2). What I am tyring to accomplish is the following:
When fuelling is finished for the day, the operator selects the (Shutdown) button. When this happens I need the userform to perform the following.
1. For each worksheet (pump1) and (pump2) create new worksheets named (pump1_date) and (pump2_date).
2. Populate these new worksheets with the entire data from the original worksheets.
3. Clear out all but the last row of data from the original sheets. The last row contains the meter readings for the fuel pumps and needs to stay as an opening ballance for the next day. This last row to become the top row of the original sheet.