- VIDEOS HOME PAGE
- .NET (14)
- Business Intelligence (40)
- Integration Services (19)
- Macros and Programming (82)
- Microsoft Excel (70)
- Microsoft Office (92)
- Miscellaneous (1)
- Power BI (35)
- Power Platform (35)
- Python (31)
- Report Builder (107)
- Reporting Services (113)
- SQL (42)
- Visual Basic for Applications (215)
- Visual C# (14)
- Excel VBA - Basics (24)
- VBA User Forms (22)
- Excel VBA - pivot tables (9)
- Excel VBA - charts (6)
- VBA - advanced (14)
- VBA - working with files (12)
- VBA - linking applications (12)
- VBA - working with Outlook (14)
- Built-in VBA functions (9)
- VBA - working with data (57)
- VBA - scraping websites (25)
- VBA - working with shapes (5)
- VBA - classes and structures (6)
VBA USER FORMS VIDEOS▼
- Excel VBA Forms Pt 1 - Drawing Forms
- Excel VBA Forms Pt 2 - Running and Navigating Forms
- Excel VBA Forms Pt 3 - Adding Code to Forms
- Excel VBA Forms Pt 4 - Validating Controls
- Excel VBA Forms Pt 5 - Validating Forms
- Excel VBA Forms Pt 6 - ComboBox Controls
- Excel VBA Forms Pt 7 - ListBox Controls
- Excel VBA Forms Pt 8 - Option Buttons
- Excel VBA Forms Pt 9 - Spin Buttons
- Excel VBA Forms Pt 10 - Scroll Bar Controls
- Excel VBA Forms Pt 11 - Check Boxes
- Excel VBA Forms Pt 12 - Toggle Buttons
- Excel VBA Forms Pt 13 - Image Controls
- Excel VBA Forms Pt 14 - Multi Page Controls
- Excel VBA Forms Pt 15 - Tab Strip Controls
- Excel VBA Forms Pt 16 - Playing YouTube Videos
- Excel VBA Forms Pt 17 - Editing Data
- Excel VBA Forms Pt 18 - Installing the Date Time Picker and Month View Controls
- Excel VBA Forms Pt 19 - The RefEdit Control
- Excel VBA Forms Pt 20 - Progress Bars
- How do I control different cells with one spin button in Excel?
- How do I add a Select All option to a VBA List Box?
VBA User Forms videos | Excel VBA Forms Pt 5 - Validating Forms
Posted by Andrew Gould on 31 March 2016
Another aspect of validation is checking that every control on a form has been filled in. This video explains how to loop over the controls collection to check if every textbox has been completed.
This video has the following accompanying files:
|Profitable Films - Pt5 Validating Forms.xlsm||Excel workbook with macros|
Click to download a zipped copy of the above files.
There are no exercises for this video.
Making a video bigger
You can increase the size of your video to make it fill the screen like this:
Play your video (the icons shown won't appear until you do), then click on the full screen icon which appears as shown at its bottom right-hand corner.
When you've finished viewing a video in full screen mode, just press the Esc key to return to normal view.
Improving the quality of a video
To improve the quality of a video, first click on the Settings icon:
Make sure you're playing your video so that the icons shown appear, then click on this gear icon at the bottom right-hand corner.
Choose to change the video quality:
Click on Quality as shown to bring up the submenu.
The higher the number you choose, the better will be your video quality (but the slower the connection speed):
Don't choose the HD option unless you have a fast enough connection speed to support it!
Is your Wise Owl speaking too slowly (or too quickly)? You can also use the Settings menu above to change your playback speed.
This code works for me; however, I have one textbox on my form that is for comments and isn't required to be filled in. How do exempt that textbox from being filled out? Additionally, I also have ComboBoxes that need to be filled in. How do I add them to this logic. TIA
You can check for combo boxes using the same basic technique as for text boxes:
If TypeOf ctl Is MSForms.ComboBox Then
To exclude a specific text box you can test for some unique property which identifies it - its Name property is a good choice. If you have multiple controls you want to exclude from the validation you could enter a value in each control's Tag property, for example NoCheck, then test for that value in your loop. You can do that with nested If statements or by combining logical tests in a single statement:
If TypeOf ctl Is MSForms.TextBox And ctl.Tag <> "NoCheck" Then
I hope it helps!
I got it to work using two separate For each statements. I tried two if statements and an elseif but both of these gave me an error of for without next. I am assuming the only way to turn the fields back to no highlight once the user enters data, before they hit the submit button, is to update each of the fields
It's likely that you had the wrong number of End If statements. Here's the basic structure for a single For Each loop
Dim ctl As MSForms.Control
Dim tb As MSForms.TextBox
Dim cb As MSForms.ComboBox
For Each ctl In Me.Controls
If TypeOf ctl Is MSForms.TextBox Then
Set tb = ctl
If tb.Value = "" Then
tb.BackColor = rgbPink
ElseIf TypeOf ctl Is MSForms.ComboBox Then
Set cb = ctl
If cb.Value = "" Then
cb.BackColor = rgbPink
You can use the Change event of a text box or combo box to detect when a user enters a value and switch the colour back but yes, you'd need to do this for each control.
First of all, THANK YOU for such brilliant quality videos! Andrew G. is the perfect balance of humor & guru! I have found each of these videos to be engaging, easily relatable and packed full of new information!
Onto my question...
I am building a userform to collect information into a workbook, very very similar to your examples with Films and the gross profits they made. HOWEVER, where your example had 3 input boxes, mine will have over 40 input boxes.
What would your recommendation be for an alternative to doing a similar action for each of the input boxes private subs? That is A LOT of repetiion and risk for missing an update. Is there a way to code the action once, but let it loop through each Private Sub?
Specifcially, I am trying to use the following code from the videos, but I dont want to copy paste and edit this over 40 times. The input boxes are labeled Criteria001 through Criteria045.
Private Sub AddToList_Button_Click()
If Criteria001.Value = "1" Or Criteria001.Value = "0" Or Criteria001.Value = "x" Then
MsgBox ProcessorName & "'s scores have been added to the Analyst Workbook."
Criteria001.BackColor = rgbPink
Criteria001Label.ForeColor = rgbRed
MsgBox "You must enter either 1, 0, or x."
Happy to hear that you've been finding the videos so useful! There certainly is a quicker way to vaildate multiple controls using a For Each loop. We do cover that technique in this video from around the 18:32 mark - this is definitely the approach to take if you hvae 40 text boxes to validate!