Loop Through All UserForm CheckBox Controls
The code listed below checks to see if any checkboxes are checked via a form and if they are then populate a string variable with text to build out a range to be used for a Defined Name Range in excel. The code works but I was wondering if the same functionality could be written better.
Private Sub cmbRun_Click()
Dim SelectedRange As String
If CheckBoxML.Value = True Then
SelectedRange = "Revenue!$M:$M"
If CheckBoxML.Value = False Then
If CheckBoxSL.Value = True Then
SelectedRange = SelectedRange & ",Revenue!$N:$N"
View Complete Thread with Replies
Related Forum Messages:
Default State For UserForm CheckBox Controls
I am having a little bit of difficulty find ways to effectively incorporate a checkbox panel into a form interface. What I am trying to do is all the user to select using checkboxes which of 31 separate columns will automatically be deleted or not deleted. The method I have been using is to create 31 checkboxes, and then use the value of the checkbox (true/false) to determine a value in an array, which then can be used to delete the column by a separate sub.
However, I am interested in being able to have the checkboxes start checked or start unchecked by values contained in a different array. My problem is that I am unable to reference the checkbox itself until the form containing the checkbox is opened, but at that point I don't know of a way to cause the desired checkboxes to automatically be selected without placing a command button that must be pressed to fill them in. Essentially I want to be able to open a userform that has checkboxes preselected.
Loop Through Controls On A Userform
I have a userform that contains several textboxes, checkboxes, and comboboxes. There are also some command buttons, one of which says clear all. What I want to do is loop through the controls and clear the contents or change the value to false, depending on the type. I can do this by type the name.value = "", but there are alot of controls. If possible, a loop would be much more effecient.
Set Order Of Userform Controls Loop
I am using stuff from loops http://www.ozgrid.com/VBA/control-loop.htm to loop through all the controls on a UserForm. But I can't find a way of controlling the order in which this is done. I tried both TabIndex and moving the controls around without success. Is there a property of a control that controls the loop order.
Loop Through Non Visible Controls In Userform
I have a couple of Inactive controls in my userform. I need to activate them only if a certain condition is found to be true and also dynamically give them their name and caption property.. i have an idea how to loop through controls like my code below but have no idea how to loop through just inactive controls.
Dim ctl As Control
For Each ctl In Me.Controls
If TypeOf ctl Is Label Or TypeOf ctl Is TextBox Then
ctl.Visible = True
Auto Merged Post Until 24 Hrs Passes;The reason I want to do it this way is because if I dynamically create controls, I am able to see it in my userform at runtime but those controls actually don't get saved in the userform for future use.
Reference UserForm Controls In Loop
I have a userform with fields (TextBoxes) Num1, Num2, Num3, Num5 and Num5
I also have an array which i have looped through and seeded with five values.
Now when I try and loop again and pass the values from the array to each of the textboxes I cant remember the syntax to reference the textbox using the loop variable - Num(var). I've experimented with the & symbol but it escapes me at the moment !
Clear Multiple CheckBox Controls
I have a sheet with 550 checkboxes (form toolbar). I want to be able to reset the boxes to unchecked with a button. I found an example here but I seem to need the label (Ex: "Check Box 1")
ActiveSheet.Shapes("Check Box 1").ControlFormat.Value = False
It doesn't make sense I would need to leave the label showing on the sheet, but the label seems to be the identifer for each checkbox, not the named cell. So I am a little confused how to alter the code.
So when it works it looks like:
 Check Box 1 Click this box to indicate something
While I wanted it to look like:
 Click this box to indicate something
(I guess control checkboxes was the way to go but we are here now.)
Assign 1 Macro To Mutiple CheckBox Controls
I wrote a macro so that if a checkbox is "true" it will print and if it is "false" then the checkbox will not print. I want to do that on many other checkboxes but with this approach the number of macros will have to be equal to the number of checkboxes. I was wondering if someone here by writing one macro that will do the trick and i can assign to as many checkboxes as i want. my macro is
Application.ScreenUpdating = False
On Error Resume Next
If Range("l78").Value = "True" Then
ActiveSheet.Shapes("Check Box 697").Select
.Placement = xlMove
.PrintObject = True
ActiveSheet.Shapes("Text Box 698").Select
.Placement = xlMove
.PrintObject = True
Indentify TextBox Controls In Loop
On a multipage user form, a combobox control allows the user to select a value from a list, which automatically populates textboxes with other fields from the same list. This works perfectly. I tried to set up another combobox that would work in the same manner, but referencing an entirely separate worksheet and returning the appropriate values from that list to its related textboxes. My problem is that both comboxes are automatically populating ALL the textboxes, ie combobox1 returns the correct information in its related textboxes, but also changes the information in the textboxes related to combobox2. Combobox2 does the same in reverse. I can at least see and understand why this is happening - the combobox code for both is telling ALL textboxes with numerical tags to update.
Private Sub cmbPAYERefFirst3Digits_Change()
Dim rFoundSource As Range
Dim strText As String
Dim tBox As Control
If cmbPAYERefFirst3Digits.ListIndex > -1 Then
strText = cmbPAYERefFirst3Digits.Text
Set rFoundSource = Range(cmbPAYERefFirst3Digits.RowSource). Find(What:=strText, _
After:=Range(cmbPAYERefFirst3Digits.RowSource).Cells(1, 1), _
LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
For Each tBox In Me.Controls ...........................
Loop The Procedure With The Variable Number Included In The Checkbox Name
I'm creating a user form that will have 10 checkboxes on it. Depending upon certain conditions being met elsewhere in the workbook, I would like to populate the checkboxes' captions with data from the workbook.
My question is, can I loop the procedure with the variable number included in the checkbox name (well, more to the point, HOW can I loop the procedure...)?
I would like to do something like this:
Dim a As Integer
For a = 1 To 10
If .Cells(a + 1, 2).Value "" Then
chkHiTech & a.Enabled = True
chkHiTech & a.Caption = .Cells(a+1, 2).Value
lblHiTech & a.Enabled = True
lblHiTech & a.Caption = .Cells(a+1, 2).Value
Use Of Checkbox On Userform
Can it be made in VBA as follows:
I have made a userform with the initialize routine. On this there are checkboxes which I would like to be selected for a YES.
When the YES (checkbox) is being selected I than would like to see in the active userform an already made and "hidden" textbox to enter a value for confirmation of a quantity to order.
I have been loking for some sort of Private Sub Userform Change() routine, but can not find this type of routines
Looping Through Userform Controls
I have a userform with a series of textboxes used for data entry (numeric values) specifically, 3 groups with 5 text boxes per group. If the value of any text box within a group is either >= the value of a cell in a worksheet range (Benchmark, i.e. BM), then the BackColor of that particular text box changes to green.
The challenge I have is trying to loop through each set of five controls to determine if the control's value is >= to the cell's value in the worksheet range, and if that condition is met, than changing the BackColor to green.
I know there must be a more efficient way to make this happen than to write an 'If - Then' for each text box (see code below)
Private Sub Benchmarks()
BM1 = Worksheets("Sheet 1").Range("A1").Value
BM2 = Worksheets("Sheet 1").Range("A2").Value
If txtGroup1Box1.Value <> "X" And txtGroup1Box1.Value <> "" And txtGroup1Box1.Value <= BM1 Then
txtGroup1Box1.BackColor = &HFF00&
txtGroup1Box1.BackColor = &H80000005 ............................
Userform Controls Empty When Add-in
i build a userform that includes 6 columns, and use named range to to be shown in the userform.
i use simple code to call this userform.
excuting the code, the userform appears ok.
i saved my file as an addin to be able to call my userform
the problem that the userform appears empty, no data and no columns, when calling the userform from the addin file whearas the userform works fine with the named range when calling from an xls file.
any idea how to solve the problem ?
pls find the attached file
File deleted as it of no help.
Hide Controls On A Userform
What's the best way to hide controls on a userform? I have a userfrom with 2 datepicker one for start date and one for end date. I want them hidden until I use checkbox and check it to appear. I am using this code but nothing is work.
Does A Group Of Userform Controls Have A Name
I have a number of TextBoxes across the page, all set to Visible=False.
If these get filled with data then I need to set Visible=True.
Rather than hard code this individually for each one (which is not a problem, it just looks untidy), can I select each row as a Group (whilst designing the form, not in the code) and then set that Group to Visible=True ?
Add Controls To UserForm With Code
way to allow a user to add a control to a userform without going into the VBE. Here is the situation, I am developing a userform to calculate a projected budget. I want the user to be able to select the number of controls to add, and click a command button to add them. Based on other selections that the user makes, different controls would automatically be added. Is this possible? As a follow up, will I be able to atttach code to these new controls?
Add Controls To UserForm At Run-Time
I am trying to transfer data from a worksheet to a user form, so that the end users can edit the data on the user form, save it, and the revised data is sent back to the worksheet. since the worksheet data is dynamic, i am trying to dynamically add controls in the user form. but the form displays only one data.
Set sdel = Sheets("Deliverables")
Set rStartCell = sdel.Range("A65536").End(xlUp).Offset(0, 0)
counter = Mid(rStartCell.Address, 4)
dummy = 0
cnt = 1
'copy data from sheet to the user form
'checking if deliverables sheet has any data
' If .Range("A3") <> " " Then Exit Sub
' MyTextBox.Caption = .Range("A3").Value
For r = 3 To counter
If .Cells(r, 1) <> "" Then
Set MyTextBox = Controls.Add("Forms.Label.1", "lbl" & cnt, Visible)
MyTextBox.Top = topadd + 30
MyTextBox.Left = 20
MyTextBox.Width = 150
MyTextBox = .Range("A" & r).Value
cnt = cnt + 1
dummy = dummy + 1
Create Controls Of A Userform On The Fly
I am trying to create some controls in a userform on the fly based on the data in a sheet. The part of my code is the following:
summaryForm.Controls.Add bstrProgID:="forms.label.1", Name:="LAWts", Visible:=True
.Top = 120
.Left = 20
.Height = 18
.Width = 300
.Caption = "Weights: "
Question I is that how can I connet this textbox to a click event or just to a procedure when it is clicked? I tried to use OnAction but it does not work for textbox in a userform. Question II is that how can I find the all properties of a textbox or any other controls? Is there a manuel or reference available on the internet?
Reset UserForm Controls
On the event that a combobox is changed the objects on my userform that relate to the same information as the combobox need to be disabled (and made invisible)... however if another choice is made then they need to be enabled again and then the objects relating to the new selection need to be disabled.
Private Sub cbo1_Change()
Dim DisableIndex As Integer
Dim CellAddress As String
If ActiveCell.Value <> cboVarNamEn.Value Then
Loop While ActiveCell.Value <> cboVarNamEn.Value
CellAddress = ActiveCell.Address(ReferenceStyle:=xlA1)
ActiveSheet.Range("B1:" & CellAddress).Select
DisableIndex = Selection.Cells.Count
Me.FrameAddEn.Controls("label" & DisableIndex).Enabled = False
Me.FrameAddEn.Controls("label" & DisableIndex).Visible = False
'there a few other objects here that will also be disabled... text boxes, check boxes etc.
Putting an unload/load command in won't work for obvious reasons and I can't use a command button because that would require my clients to actually think of pressing it.
UserForm CheckBox That Will Print
On my excel 2007 UserForm I have a CheckBox with 18 possible or multiple selections of reports (word.docm)
what I would like to do is, when selected they would be sent to printer.
Here's what code I have so far, something is missing, I'm not sure
Private Sub CommandButton2_Click()
For x = 1 To 18
If Controls("checkbox" & x) Then
Select Case x
Case x = 1
worddoc = ActiveWorkbook.Path & "Inspection ReportsCover Page.docx"
Case x = 2
worddoc = ActiveWorkbook.Path & "Inspection ReportsClient Information.docx"
Case x = 3.....................
Can't Get Checkbox To Go True From Another Userform
I am trying to do is develop a electronic visitors log in excel that has three statements visitors must read and accept before they can enter. I have a userform with date/time, name etc, then the three buttons that open another user form with the statements for them to read and 2 command buttons (Accept and Decline), Accept takes them back to the log-in userform and Decline closes all forms.
The problem I am having is I canít get the checkbox on the log-in form next to each statement to go true when the accept button is clicked for said statement. I would like to disable the checkbox on the visitorsignin form so the only way it goes true is from the statement form.
I hope I explained myself well enough for someone to understand what Iím trying to do, the code is not finished yet either, still waiting for signature pad to come in so I can paly with it and figure out how to incorporate it into the file.
Checkbox And Userform Confusion
i am having is i have created a userform that automatically opens when i open the workbook, I have placed checkboxes on the userform and i need them to remain checked even after the workbook is saved and closed, but whenever i reopen the workbook the checkbox are unchecked again
Clear UserForm Controls, Or Populate
I have this UserForm I need to clean-up but can't figure proper ways of doing it.
There's 2 ways to call the Form:
1) The main Sheet has a Command Button that calls the blank Form, which allows the user to enter & select data to be submitted to the sheet (using combo boxes, etc.).
2) If the user wishes to modify an existing entry on the sheet, he must click on it. This will call the Form which will be populated with the existing data on the sheet (per Row, since the Form enters data one Row at a time).
My problem is that I can't figure a proper way to Initialize my Form to either be blank (as for option #1), ie. have no pre-entered or pre-selected data in it, or to be filled with pre-existing data from the sheet (#2).
I tried to handle this by setting my ActiveCell = A1 when my CommandButton is pressed and check it when Initializing the Form (to initialize for #1 instead of #2), but that's totally not working.
Dynamically Create UserForm Controls
I am working on a dynamically produced userform but the dynamically created Cancel and OK buttons don't work. I have been able to get round it by adding the buttons to the top of the form (non- dynamic) but I'd really like to be able to create them dynamically based on variable for other parts of the project. How can I produce dynamic command buttons that actually work?
Here's my code but I'd be happy with generic code I could use.
Private Sub UserForm_Activate()
' Define variables
Dim LabelV As MSForms.Label
Dim CheckboxV As MSForms.Checkbox
Dim rngFields As Excel.Range
Dim field As Excel.Range
Dim lngNextTop As Long
Dim lngTitleBarHeight As Long
Dim ColumnNum As Integer
' Set constants
' Choose height and width of Label box
Const cTextBoxHeight As Long = 12..............
Creating UserForm Controls Via Code
I'm making a form in excel to retrieve a number of welds. This number needs to be passed on to the next form to dynamically create an identical number of input fields (a set of text boxes and labels essentially). Any ideas on how I might do this? Is it even possible? I would like to avoid having 100 (my assumed maximum, it could get changed) sets of input fields and hiding the unused ones,
Reset UserForm Textbox Controls
I have the following code that is not working properly. When the form loads it always shows data from the previous time the form loaded. I searched and found the following code which doesn't seem to be working correctly. I thought by unloading the userform the values of the textboxes would "reset". Not happening.
Private Sub CommandButton1_Click()
cRow = ActiveCell.Row ' remember the current row
Do Userform Controls Have An Index Number
The form that I have created has a number of controls that are created at runtime. If a user triggers the event that originally created the controls, I want to be able to delete all of the controls before recreating them.
Is there a loop that can delete all of the newly created controls? I have 9 controls on the form that need to stay put but everything after those 9 controls I want to delete. Is there something like:
Clear Array Of Particular Userform Controls
I would like to make up an array that includes certain userform controls, such that I later on can use a loop to run through those controls.
First, in line 1 the Sub cbStep1_Click calls the Sub unloadSlotValues, but then the latter throws me back directly to the Sub cbStep1_Click into the next line (line 2). There is no error or something, the rest of unloadSlotValues simply gets ignored. How can I ensure to loop through all my userform controls listed in that array? (Finally, there'll be around 15 controls, I think.) Maybe my array-initialisation is incorrect?
This thread extends a simillar one you can find How to clear userform controls
Private Sub cbStep1_Click()
Call unloadSlotValues '<-- 1. line
frmStep2.Enabled = True '<-- 2. line
frmStep3.Enabled = False '<-- 3. line
Userform Controls Suddenly Vanished...
My userform has a group of controls, four navigation buttons and a textbox. The nav. buttons have accelerator keys, Alt+N for next record and so on. I was moving the group about on a userform, when hey presto! it suddenly disappeared. When I run the form, the navigation buttons do not appear, but I can still navigate using Alt+N, Alt+P. Here's what I've done so far, trying to find out what's going on.
* I selected all controls with Ctrl+A, but there was no sign of any object in the place where the missing group should have been.
* I looked on the Object Browser (which is something I don't understand too well yet) and the navigation buttons are there.
* I hid all the controls, and showed them again, didn't help.
* The group I was moving was near the bottom of the form. I set the zoom property of the form to 50, so all controls in design view were bunched up near the top left corner; the missing group didn't appear
Multi-Page Userform Controls
I have a MultiPage userform and I'm adding (4) control buttons - CancelButton, BackButton, ForwardButton and FinishButton. On the first page, those names are fine but when I get to subsequent pages, I get an ambiguous error if I try to name the controls the same. But the code will all be the same. What am I missing? In an example that I have, the user was able to name all the controls with the same name. What setting would control that?
Looping Through Userform Controls To Find A Value
What I'd like to know now is if there is a way to loop through a set of controls...I'll call that set 'A' and if the value "No Option" is found in one of A's controls, then a corresponding control in set 'B' is formatted as disabled and with a value of 'X'.
Ex. Control A1 = "Cat"
Control B1 is enabled with no value
Control A2 = "Dog"
Control B2 is enabled with no value
Control A3 = "No Option"
Control B3 is disabled with a value of 'X'
Control A4 = "No Option"
Control B4 is disabled with a value of 'X'
The code below shows where the wheels came off:
Const lGrey As Long = &H80000005
Const lGreen As Long = &HFF00&
Dim BM1 As String
Dim TextBox As Control
Dim TextBox1 As Control
Private Sub UserForm_Activate()
Enable Specific UserForm Controls
I have an Excel userform that has 10 textboxes named, say, tbLabel1, tbLabel2, ... tbLabel10. They are all disabled in the beginning. Then I have a question for the user "how many labels you want" and another textbox for the answer. If the user entered, say, 6 as the answer, I want enable the first 6 textboxes, tbLabel1 - tbLabel 6. I tried using
For I=1 To tbHowMany.value
tbLabel & I.Enabled = True
Set Height & Width UserForm Controls
I'm using a UserForm.Label to display comments which are of variable length. At the bottom of the UserForm are two CommandButtons. I'd like the gap between the Label text and the CommandButtons to be small (and preferably constant); and the CommandButtons to be at the bottom of the UserForm. This means setting the CommandButton.Top and UserForm.Height as a function of the Label.Height. The crude way I have so far achieved is to use Len(Label.Caption) as the surrogate for Label.Height but it's not very satisfactory due to word-wrap and blank lines.
Reference To Controls On UserForm Causes Crash
I have a fairly big excel spreadsheet with about 2 userforms at the moment. One Userform (the main one) has a multipage control with about 12 pages. Now here is the weird part. I open up the excel document and this main user form loads up simply with this code
This works fine the form loads. Now on this form there is a multipage control with about 12 pages as mentioned above. Now everything works the way I want it to eg the text boxes, combo boxes, command buttons etc all work and link with the worksheets fine just the way they should...But if I reference or try to use a couple of the controls in any way excel crashes. It doesn't give any errors or anything it just crashes and then I get a prompt saying do you want to send the error report blah blah. I have narrowed it down to 3 command buttons and 1 combo box so far that this happens on. If I do the most basic of commands on any of these controls such as something as simple as msgbox problemcombobox.visible...
UserForm Controls Not Displaying At Runtime
I've created several UserForms, for some reason this one won't co-operate!
1. Have to click the OK button 3 times for the code to execute (this does not occur when I filter through the code in debug/F8 mode).
2. Before processing I have a label and image set to visible = true that won't appear on the form at runtime (this works when I filter through the code in debug/F8 mode).
Sum Of Multiple UserForm TextBox Controls
I created a userform. Now, I want to make a sum of the textboxes in my userform and pop up a warning signal is the sum isn't 18. I tried it in different manners, but I always get some problems. I entered default values of 0 in my textboxes. When I edit the values by using the userform, the popup message will appear even though the sum of my textboxes is 18. Here is the code for the pop up warning message.
If (Me.txt1.Value + Me.txt2.Value + Me.txt3.Value + Me.txt4.Value + Me.txt5.Value + Me.txt6.Value + Me.txt7.Value _
+ Me.txt8.Value + Me.txt9.Value) <> 18 Then
MsgBox "Vous avez fait une erreur. Le total ne donne pas 18 trous."
UserForm Controls (components Within MultiPage)
What I'm trying to do:
Create a "search" userform that pulls data from a spreadsheet of raw data (hardware specs) and organizes it into a multipage control. Each page of the MultiPage has a different piece of hardware with simliar data entry categories (height, weight, calibration date for example).
Each page at the moment contains labels and textboxes only. The idea is to place data from the spreadsheet into these textboxes, and create new pages as needed during runtime.
My current issues:
Just for testing/ debugging, I have a "_Change()" code that is triggered by changing pages within the Multipage. When I run the control, I trigger the change, but the textboxes and labels disappear.
I don't have much code to show, other than basic _Change() structure containing a msgbox for debugging.
This is related to a locked thread, where "imgUpdating" and "DoEvents" were referenced. I tried DoEvents, without success. I also don't know what "imgUpdating" is, but it sounds like it helped the other person with a similar issue:
UserForm Controls not displaying at runtime
Calculate 2 UserForm TextBox Controls
I am trying to calculate the result of two text boxes in a third textbox on a userform.
Box1 = DirectorHrs = a textbox that the user enters the number of hours
Box2= DirectorRate = a textbox that retrieves the rate from a sheet called "Rates" within the workbook upon initialise of userform.
Box3 = DirectorTotal = Box1*Box2. I want this to update when the user enters or changes Box1.
I have the following code on the change event of Box1
Private Sub DirectorHrs_Change()
DirectorTotal.Value = CStr(Val(DirectorRate.Value) * Val(DirectorHrs.Value))
Clear UserForm Controls Button
Function FindNth(Table As Range, Val1 As Variant,Val1Occrnce As Integer, _
Val2 As Variant,Val2Col As Integer, ResultCol As Integer)
Dim i As Integer
Dim iCount As Integer
Dim rCol As Range
For i = 1 To Table.Rows.Count
If Table.Cells(i, 1) = Val1 And _
Table.Cells(i, Val2Col) = Val2 Then
iCount = iCount + 1
If iCount = Val1Occrnce Then
FindNth = Table.Cells(i, ResultCol)
To use this function, push Alt+F11 and go to Insert>Module. Paste in the code, push Alt+Q and save. Use the function as shown in graphic example. You can access it under "User Defined" in the Paste Function (Shift+F3).
Type Amount Sex Cost Purchased
Cat 1 Male $ 5.00 22/05/01
Cat 2 Male $ 5.00 15/00/00
Dog 3 Male $ 20.00 25/04/00
Rat 5 Female $ 1.00 15/08/01..................
Global Code For UserForm Controls
Im using the following code on a userform to link the spinner and a textbox:
Private Sub Marketing_spn1_Change()
'ensures the text box changes when spinner is changed
Marketing_txt1.Text = Marketing_spn1.Value
Private Sub Marketing_txt1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
' ensure value typed in is valid
newvalue = Round(Val(Marketing_txt1.Text), 0)
If newvalue < Marketing_spn1.Min Then newvalue = Marketing_spn1.Min
If newvalue > Marketing_spn1.Max Then newvalue = Marketing_spn1.Max
' set the spinner value to keep in step with new value
Marketing_spn1.Value = newvalue
' set the textbox to the appropriate value
Marketing_txt1.Value = newvalue
I have many spinners and textboxes with the same name (marketing_txt2, marketing_spn3 etc) on both this userform and on other userforms I shall be doing.
Is there any way of just writing this code once, rather than copying and pasting it for each spinner/textbox?
Hide & Show UserForm Controls
I need some code that will do the following in a UserForm:
If option1 is selected = textbox1 is visible, textbox2/combo1 is hidden
If option2 is selected = textbox2 is visible, textbox1/combo1 is hidden
If option3 is selected = combobox1 is visible, textbox1/textbox2 is hidden