The code handles keydown, keypress events with no problem. Also similar change events, and probably more.
This code is at UF initialize event:
Option Explicit
Dim TextBoxes() As New Class1
Dim ComboBoxes() As New Class1
Private Sub UserForm_Initialize()
Dim TCount As Long, CCount As Long, c As Control
TCount = 0
CCount = 0
'Set TabIndexCollection = New Collection
For Each c In Me.Controls
' TabIndexCollection.Add c, CStr(c.TabIndex)
If TypeOf c Is MSForms.TextBox Then................
I would like to have a nested if or select case statement to handle a worksheet event. The conditions it will check are: 1.Make sure target is w/in range, otherwise EXIT 2.Make sure that target offset value is not empty, otherwise display message 3.All is good, open form
I’ve tried various formulations and positionings of the statements ,but not all conditions are met with equal success.
What happens is I get the the first two conditions, but the third doesn’t work.
What is the method to trigger an event on a command button (placed on a worksheet - not in a form) when the return key is pressed? I.e. instead of moving to the next cell clicks the button?
I have a user entering text into a textbox on my userform. The textbox is linked to a textbox change event. Unfortunately, the event is triggered as soon as the user enters the first character of their entry. I'm thinking that the textbox change event isn't the most appropriate for this scenario. What would I need to do to trigger the code (of the change event) with hitting ENTER when finished?
I am working with a large legacy file/program which has a lot of issues. Foremost, and unfortunately this cannot be changed, is that all of the controls were placed directly on the worksheets instead of on Userforms.
I had previously posted code from the legacy file which may have been excessively complicated. So I edited my post to this simple example. Sheet1 has one textbox and one command button. Sheet 2 is blank.
If Sheet2.Activate is commented, everything works fine. If Sheet2.Activate is executed, then Excel crashes....
I am working with a large legacy file/program which has a lot of issues. Foremost, and unfortunately this cannot be changed, is that all of the controls were placed directly on the worksheets instead of on Userforms. The actual code from the legacy file is excessively complicated, so I created this simple example. Sheet1 has one textbox and one command button. Sheet 2 is blank. I want to be able to click the command button or use the Enter key on the command button, to trigger the Click Event. Clicking works fine. When using Enter, if Sheet2.Activate is commented, everything works fine. If Sheet2.Activate is executed, then Excel crashes.
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Dim bBackwards As Boolean Select Case KeyCode 'Only look for tab, return, down arrow, up arrow Case vbKeyTab, vbKeyReturn, vbKeyDown, vbKeyUp Application. ScreenUpdating = False 'Do we need to go back to previous control bBackwards = CBool(Shift And 1) Or (KeyCode = vbKeyUp) If bBackwards Then TextBox1.Activate Else CommandButton1.Activate Application.ScreenUpdating = True End Select End Sub Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Dim bBackwards, bForwards As Boolean Select Case KeyCode Case vbKeyTab, vbKeyReturn, vbKeyDown, vbKeyUp Application.ScreenUpdating = False...................
I'm having some trouble getting control ENTER & EXIT events to fire properly when having controls embedded on frames within a userform. I'm using Excel 2003, 2007, & 2010. Here's the userforms I'm working with:
With FRAME:
Without FRAME:
In both cases, the DESCRIPTION field is disabled. The selectable controls on both are a combo-box, textbox, listbox, & 2 buttons. On the FRAMED version, the combo-box & textbox are contained on a FRAME.
Here's the code, same on both userforms:
Code: Option Explicit Private Sub cmbRecipes_Enter() ListBox1.AddItem "ENTER - " & cmbRecipes.Value End Sub Private Sub cmbRecipes_Exit(ByVal Cancel As MSForms.ReturnBoolean) ListBox1.AddItem "EXIT - " & cmbRecipes.Value End Sub
All this is doing is posting a message to the listbox when the combo-box ENTER & EXIT events fire. This works as expected without the FRAME, ENTER is shown when the combo-box is entered and EXIT is shown as focus is moved to another control. But when running it on the FRAMED version all I get is a single ENTER event recorded regardless of how I move the focus through the control set.
Another oddity is that if I have more than 1 control that can receive focus on the FRAMED version, it appears to work correctly.
Is there a way to write a Worksheet_SelectionChange (ByVal Target As Range) event in module after creating a sheet in VBA? I constantly delete a sheet, then repopulate it with a new one that is empty, but I need to add some code that happens if they should change a particular cell. It worked when I ran it on a worksheet without refreshing, but as soon as I cleared and repopulated the sheet, it was gone. Is there a way to preserve this?
I really know nothing about vba so here goes. I would like to enter data in a row with 4 cells of info. then hit enter and return to the first cell and move the row down. all four cells must have data entered. and all four must move down. i tried some code as below i found and i modified but it did not work as expected. this moved the row down when returning the cursor to A2. It also should not copy the data style of the top row.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column <> 1 Then Exit Sub Application.EnableEvents = False
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TotalDays As Integer
TotalDays = Range("C65536").End(xlUp).Row + 1
The code points to the next blank cell so the user can input a value. Each time the user enters a value I want to re-run the code so that the colour of the cell changes.
However I also want to perform various calculations on the sheet. However this means the sheet is being changed and so continually repeats my code.
Is there a way to type in a cell and click on a Command Button instead of the Enter Key-- and then run a macro using the value that was typed into that cell? Or any other way to eliminate the need to hit Enter Key to record the user input and then hit Command Button to run the macro? I have 40+ users who login in by selecting their name from a drop down list and then entering their password in another cell. (what they input must match another cell in same row.) Attached is scaled down model of Workbook and the macro that works to login.
I'm trying to manipulate a URL in an already opened IE browser window. In a nutshell, I need to change "http://www.excelforum.com" to "http://www.excelforum.com/this-is-the-new-part"
The code prior to this does the following: - Opens a new instance of IE - Enters the username and password required to get into the site - Scrapes the source code, imports it into Excel, and parses the data - Finds a row based on the current date and some text - Extracts from that row a unique identifier... - Obtains the window handle ID for the instance of IE displaying the website
Now I need to add the unique identifier to the url. I cannot open it in a new tab or instance of the browser, as it revokes back to the login screen. I was assuming that the best way to do this would be to get the window handle, then just send a "tab" to get back to the URL, and enter the new URL. If there's any other way to do this, I'm all ears. Otherwise, how can I send the keys using the window handle?
Would need your expertise to advice on how to create a formula to handle the following data in order to produce the desired output below.
I have some data in Sheet 1 and the corresponding data in Sheet2. The output is in Output Sheet.
If the data in Sheet1, "Student1" match the data in Sheet2, "Student1", then it will copy all the entries for Student1 in other worksheet with the header "Student1" (Output Sheet).
The same thing goes to other Student in the list. For this sample, I only provide a short list of data in Sheet2, it can be long, more than 5 students.
I can't seem to get the fill handle "+" sign to give the correct amounts when I want to copy a formula down a column. It seems to skip every 2nd row with the wrong amount or sometimes it will give a 0.00 sign.
I have this on sheet1 on B2 and B3 , where war-200 is chosen through drop down menu , while another sheet named pics has war-200 on A1 and its picture on b1 , is there a formula to throw the picture on C3 of sheet1 from table of code and pictures
For Each rCell In Range("D2:CU5") Select Case rCell.Value Case 1, 0.000000001 To 89.499999999 rCell.Interior.ColorIndex = 3 Case 2, 89.5 To 99.499999999 rCell.Interior.ColorIndex = 6 Case 3, 99.5 To 109.499999999 rCell.Interior.ColorIndex = 4 Case 4, 109.5 To 999 rCell.Interior.ColorIndex = 8 Case Else rCell.Interior.ColorIndex = 15 End Select Next rCell
End Sub
However if a value within the range "D2:CU5" happens to be #Div/0! (or any error value for that matter) I get a debug error message. Then the CASE ELSE formatting doesn't apply. I expect that everything else should fall under CASE ELSE. Is there a way to handle this i.e. the formatting under CASE ELSE applies?
I am doing a vlookup accross two sheets where I am adding up the first Vlookup with the second vlookup (ie vlookup sheet 1 + vlookup sheet2) and in one of the sheets the vlookup formula finds a value but in the other sheet it finds nothing. As such when the two formulas are added together it gives a value of #N/A. Since I have made a macro for this it is annoying.
The macro is as follows:
Sub Vlookup() Dim rowc As Long Dim i As Long
Application. ScreenUpdating = False
rowc = Application.WorksheetFunction. CountA( Range("a:a")) For i = 2 To rowc Cells(i, 3) = "=-VLOOKUP(RC[-2],Hksaldo!C[-2]:C[3],6,FALSE)+VLOOKUP(RC[-2],Likv!C[-2]:C[2],5,FALSE)" Next i
End Sub
how I can get around this. Ie when I have a non applicable value i one of the Vlookup formula the formula should only look at the vlookup with a value?
I have a function =TimeSinceIns(3) in cell K3. Where the 3 represents the row number. I would like to fill the function all the way down to cell k100. And be able to do this reguarly. Unfortunately when I use the fill handle it leaves 3 as 3 when I want it to be changing to the appropriate row no. Ie in cell k4 would be =TimeSinceIns(4) and so on.
I have the following formula in a cell C6 : "='Data Dump'!G20". I want the adjacent cell on the right (C7) to be "='Data Dump'!G21" and C8 to be "='Data Dump'!G22" and on and on. I'm trying to use the Auto complete handle on the bottom right hand corner of the cell (which looks like a + when the cursor is over it) to drag the formula so that the "Data Dump - G" values increase as I go (g21, g22, g23 and onwards). However, rather than the numerical part of the cell incrementing, the character (letter) does so instead, so I get H20, I20, J20 and onwards.
I use a large function when ranking numbers in an array each month. I'm only interested in the top 5 numbers. However, there are occasions when the top 5 numbers contain a tie. How do you build into a large function, logic to handle a tie. Here's my function, which is very simple:
I am trying to get the caption that is displayed on each window of all the open workbooks. I am using the code below to loop through all the workbook windows, get their handles and finally display their respective captions on a Msgbox.I am having 2 problems:
1- The code loops only once instead of once for each open workbook !
2- The Msgbox displays an empty string instead of the workbook caption !
If I am not mistaken, problem 2 is due to the fact that the Class name"EXCEL7" used in the code refers to a worksheet and not to a workbook. The trouble is I can't figure out what a Workbook Class name is so that I can use it in the FindWindowEx Function
Code:
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _ (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long[code]......
The below code looks in a certain column and deletes rows based on values less than the entered value in the input window. The problem with the code below is that it does not remove rows that have negative numbers. There is the possibility of a negative number being in the column so I would like to have that removed as well.
What would the code look like to add to the current code to remove the rows that have negative numbers? -1, -2, etc.
Sub Delete_Part_Input() Dim Qty As Integer, i As Integer, ans As Variant
Qty = Application.InputBox("What total quantities would you like to delete? Note: This is the value located in the C column.", Type:=1) If Qty = 0 Then Exit Sub
ans = MsgBox("All totals with a quantity of " & Qty & _ " or less will be deleted." & vbCrLf & vbCrLf & _.............
How can I edit the following code. If the "Dload" tab is not there the code errors out. How can I make it so that if the "Dload" is not there the macro says "Dload tab missing. Do you want to check file and try again" If the user says yes. then the macro lets the user pick another file. If the user chooses No then does similar quesiton like I have here starting with
I have 63,893 rows and 3 columns (Parents, Component and Qty) in a table. This would be typical for a Bill of Materials showing the Qty of Components in a Parent. A lot of Components are common to a mumber of Parents.
In total I have 4,259 Parents and 10,904 Components making up this 63,893 rows in my table.
The problem is that neither the Pivot function in Excel nor Access will handle it, least not the way I'm doing it - the bog standard way ! I just get the "Excel cannot complet this task with available resourses......" message.
Anyone any ideas how to get a Pivot or something resembling one so that I end up with the Components as the Row Header and the Parents as Column Headers.
I know I could go in and manipulate the data but I want to be able to create this Pivot like report every month or so without having to reinvent the wheel each time.