I have a userform with a single blank multipage. At runtime additional pages are added, the number of pages depends on input from another userform. Six frames, containing labels, textboxes and comboboxes are then added to each page.
I need to be able to use the textbox and combobox change events of these dynamically created controls to perform lookups and calculations. Although I can name the controls at the time they are created, it is not feasible to write code specifically for each control (I can have over 1,600 text boxes distributed over 9 pages, for example).
Having searched for some time on how to achieve this I believe using a class module is the way to go. However, how to use a class module is just not sinking in I'm afraid.
HTML Private WithEvents mpTextBox As MSForms.TextBox Private WithEvents mpComboBox As MSForms.ComboBox
Private Sub Class_Initialize() Set mpTextBox = MSForms.TextBox Set mpComboBox = MSForms.ComboBox End Sub
Private Sub mpComboBox_Change() MsgBox "ComboBox value has been changed." End Sub...........................................
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 want to be able to reset the value in a combobox, but without the combobox executing code, when it resets. Is there any way of doing this?
I have tried the code below but the ComboBox still executes when its value is changed.
Sub Reset_combobox() Worksheets("Sheet1").ComboBox1.Enabled = False Worksheets("Sheet1").ComboBox1.Value = 1 Worksheets("Sheet1").ComboBox1.Enabled = True End Sub
I've created two modules, card and pack. Card has three variables (value, name, suit) and pack is made up of an array of 52 cards. Referencing it from a test module (NOT a class module) I expected to be able to use debug.print pack.card(32).suit to return the suit of the 32nd card. Instead I get an error message "Object or With variable not set". What am I doing wrong
Private p_strSuit As String Private p_strName As String Private p_iValue As Integer Public Property Let Suit(strSuit As String) p_strSuit = strSuit End Property
Public Property Get Suit() As String Suit = p_strSuit End Property
Public Property Let Name(strName As String) p_strName = strName End Property......................................
I would like to create a class module that it's the same as a connector shape (for example), but with additional custom properties defined by me. For example, I would like it to have a temperature property.
So, for example if I write in a Sub procedure:
Dim Test1 as EnhancedConnector Set Test1 = New EnhancedConnector A new connector appears in the activesheet, but this connector must have my custom defined properties available to VBA Code
What exactly is a Class Module? I've tried doing some searching on Google and haven't really found a straight answer as to what a class module is and what it is used for. How does it differ from a Normal Module?
I have two user forms, each with a checkbox for Jan-Dec. Also, I have a checkbox "All" to check/uncheck the Jan-Dec boxes. I also created a class module so that if any of the Jan-Dec boxes get unchecked, while the "All" box is still checked, it will uncheck the All box. Basically I just don't want the All checkbox to be able to be checked while any single month is unchecked. The only/easiest way I found to do this was with a class module, so I would not need to create individual Checkbox_Jan_Click() events for each month.
Now my issue is, I have 2 userforms like this. I'd like them to share the same class module, but in the class module I need to refer to UserForm1.CheckBox_All. So I need to dynamically refer to whichever userform was active, but as far as I can tell, this is not possible.
i would like to do is create a class module so that when the user double clicks on a label a msgbox will open saying the name of the double clicked label. If someone can get me to this point i can modify the code to suit my needs.
Some other things really quick though. I have 80 labels, but i only need this to work for labels 1 through 40 and the labels are on a multipage control within the userform.
Can I place userform event handling within the code module where the rest of my program resides or does it have to go in the code module that is attached to the userform?
I am having trouble working through the examples given on other posts for this topic. I have a userform that creates a number of controls at runtime. One group of controls is a series of textboxes and a label underneath that sums the values of the textboxes. When a user changes the value in a textbox the label needs to update the sum. I have read about created class modules to define the event but it is all going over my head.
Is there a way to fix a private sub to catch keydown effect of various combos and textboxes of my userform?
Instead of typing the same thing to each and every control's keydown event just call a sub. Code goes like:
Select Case KeyCode Case 112 ShellExecute 0, "open", "hh.exe", ThisWorkbook.Path & "1.chm", "", 1 Case 113 If MsgBox("Backup now", vbQuestion + vbYesNo) = vbYes Then BackUp Case 114 Col = 3 SearchD Case 115 showexcel Case 116 readonly e.c.t.
Instead of that, if i place code in a private sub test() just call test in keydown event
I have a code that adds a couple of ComboBoxes to a UserForm (the number of ComboBoxes is variable). Now that I want to control a certain ComboBox based on the selected value of another ComboBox (change or click event), how do I do that via VBA code?
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.
Attached is book in which, when a choice is selected from Drop Down list in ColumnF the macro has to do the need.
When the macro was written it was working well. But when I tried to change it as a Worksheet_SelectionChange event nothing is happenning even though a choice is selected from drop down list.
Basically the situation I have is Sheet2 has many references to cells in Sheet1. Sheet2 is for all intents and purposes a kind of nicely formatted report form, and Sheet1 is the input form.
My ultimate goal is to automatically resize row heights on Sheet2 when cell contents change on Sheet2.
Using a worksheet_change event isn't working I presume because it doesn't see the formula output change as a worksheet change, the worksheet_change is firing only when the input is changed in Sheet1.
how can I capture these formula output changes on Sheet2 (triggered from input on Sheet1) OR is there a way of making a particular sheets rows always adjust in height to best fit?
Im trying to use an event change to change the sheet name based on a cell value, but my issue is how can I error trap if the sheet name is a duplicate? Here is what I have so far
Sub ChangeName() On Error GoTo errhandler Sheets(1).Name = Sheets(1).range("d10") Exit Sub errhandler: MsgBox "sheet name is already exists" End Sub
I have a simple bit of code that fires some code when it detects a change in cell $P$5 but it doesnt work and I cannot understand why - can anyone assist with this one? I am very green but keen:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$p$5" Then Range("D9:D81"). AutoFilter Field:=1, Criteria1:="<>" End If End Sub
I've created a custom ribbon which contains checkboxes that hide or show columns.
I would like to change the enable state of the checkboxes while the user is interacting with the spreadsheet.
For example:I would like to disable all of the checkboxes if they are not viewing sheet1I would like to disable the second checkbox if the first checkbox is unchecked.
I know how to set these all on initialize. I just have not figured out how to update these controls after it has been opened.
I have a user input box (VBA) with two columns of data entry. The leftmost column has text boxes labeled color1, color2, color3, etc.. The rightmost column has text boxes labeled tag1, tag2, tag3, etc..
I have the TAB sequence set to go from color1 to tag1, color2 to tag2, color3to tag3, etc..
A user can inadvertently tab over the color1 (or color2, etc. columns) into the tag1 (or tag 2, etc. columns) column without entering data in the color column.
Is there coding to allow a TAB key entry to be a Change Event such that, if a user TABS out of color1 without entering data, a MsgBox could signal that they must enter data in the color1 field before they can continue?
Alternately, can you suggest a different approach? The goal is to require an entry in the leftmost column (color1) before they can proceed to the tag1 field. Of course, they are given a "Cancel" option.
After all the awesome macros I've obtained with the help of all of you, I now have over 30 macros, each in its own module. I have tried without success to re-name the modules with no luck. How is everyone organizing these?
I have a chart with 2 Y axis. I am attempting to write some code that will update both axis with the same max & min value that is triggered by the combobox selection. The code will update the axis but is not triggered by the combobox selection.