by Svetlana Cheusheva , updated on March 13, 2023
In this tutorial, you will learn how to activate a built-in input form in Excel and how to add a special button to your worksheet to open the form.
When it comes to inputting information in Excel spreadsheets, most people do it the traditional way - cell by cell, row by row. To make the process more use-friendly and less time-consuming, you can use a special data entry form. It will help you focus on individual records, one at a time, without having to scroll horizontally between columns.
You may not know it, but Excel has a special form for entering data in a spreadsheet that makes the input process faster, more user-friendly and less error-prone, especially in large worksheets.
How do users normally populate Excel tables? By typing data directly into cells. Sometimes, you scroll up to see the column headings and sometimes scroll to the right and then come back to the beginning of the table. With large data sets, there is a possibility to mix up something and enter information in a wrong cell.
To facilitate input, you can ask Excel to display one row of information in a handy dialog box. Here, you can accurately add new records as well as update and edit the existing ones. You can also set up Data Validation to ensure that only the entries meeting certain criteria are accepted.
Data entry forms are supported in Excel 365, Excel 2019, Excel 2016, Excel 2010 and Excel 2007, but not available in Excel Online (Excel for the web).
Here's how Excel's Data Entry Form works:
Although the Form tool exists in all versions of Excel 2007 through Excel 365, it is hidden by default. So, first you need to make it visible by adding the From button to the ribbon or the Quick Access Toolbar, or both.
To add the Form tool to the Quick Access Toolbar (QAT), these are the steps to perform:
The Form icon will immediately appear in your Quick Access Tollbar and will be available in all your workbooks.
Believe it or not, you've successfully coped with the main challenge. Once the Form tool is in your Excel, creating a data entry form for any table (a new or existing one) takes just a single button click.
Tip. In a similar fashion, you can place the Form tool on the ribbon. For the detailed instructions, please see How to add a button to Excel ribbon.
A data entry form is only available for a fully functional Excel table. To get the form, you just need to put your data in a table and the click the Form button. The detailed steps follow below:
To keep things simple, let's make this small table as an example:
Clicking the Form button automatically creates a data entry form for your table with fields corresponding to the column headings:
As you can see, the Excel input form has a handful of different buttons. Here's a brief explanation of what each button does:
Aside from the buttons, you can use the following keys for navigation:
To add a new record to your table using the data entry form, perform these steps:
Tip. To quickly enter specific information, you can use the same shortcuts that you use in your worksheets. For example:
To go through the records one by one, you can use the Find Prev and Find Next buttons or the vertical scroll bar. To find records that meet certain conditions, use the Criteria button.
For example, to locate all the projects assigned to the Design dept., type Design in the Department field, and press Find Next:
The wildcard characters can help you broaden the search. For instance, to discover the projects that contain "skill" anywhere in the project name, type *skill* in the Project field.
When dealing with numbers and dates, the logical operators such as greater than (>), less than (<), equal to (=), not equal to (<>) and others come in handy. For example, to view the records where the start date is prior to 1-Mar-2021, use "" or "" for the criteria:
Note. Criteria on a data form are not case sensitive. Say, when searching for the Design dept., "DESIGN" and "design" will also be found.
If some entry is outdated or contains wrong information, you can use the Criteria or navigation buttons to get to the record, update the incorrect field, and press Enter to commit the updated data to the table.
If you made some accidental changes but have not pressed the Enter key yet, you can revert to the original record by clicking the Restore button. If you've already hit Enter and the changes were passed over to the table, press Ctrl + Z to undo.
To restrict user input to a specific data type, you can set up a data validation rule for one or more columns in your table, and your rules will be automatically carried over to the data entry form.
For example, to limit the Budget to numbers in a given range, we create this rule:
If someone tries to enter a value that does not conform to the rule you've set, an error alert will be displayed (either the standard or your custom one):
The use of data validation with input forms has one limitation - drop down lists do not appear in data entry fields. But even though a drop-down list does not show up inside the form, its restrictions are still in effect. If you enter a value that is not in the list, the form will reject it just as Data Validation normally would.
In case one or more columns in your table are calculated by formulas, you won't be able to alter those formulas using the form because the formula result appears as text, not as an editable field. Although that may sound like another limitation, in fact it is done for a reason. When you change a table formula in one cell, the formulas in all other cells in the same column change automatically. To avoid messing up your data, formula editing on the input form is blocked.
For example, you could use the following formula to find out if the actual cost is under, over or within the budget based on the 5% threshold:
If you are using a Microsoft 365 subscription, then you could wrap the above formula in the LET function like shown below. This will make your formula more compact, easier-to-understand and faster-to-calculate:
On the data entry form, you will only see a non-editable calculated result, not the formula:
If you are setting up a table for someone else, your users may not know where to look for the Form button. Moreover, they may not know that such a thing even exists :) To bring it to focus, you can open the input form using a macro. And to run that macro, place a special button directly in the worksheet.
Assuming the current sheet has a table, you need just a single code line to open the form:
Sub OpenDataEntryForm() ActiveSheet.ShowDataForm End SubHowever, there is a crucial caveat - the above code only works if either:
To overcome these limitations, you can use the advanced version of the code that specifies the cell where your table begins (B2 in our case), gives the name "database" to the current region, opens the form, and then deletes the name:
Sub OpenDataEntryForm() Dim nName As Name Range( "B2" ).CurrentRegion.Name = "database" ActiveSheet.ShowDataForm For Each nName In ActiveWorkbook.Names If "database" = nName.Name Then nName.Delete Next nName End Sub
Note. If you don't delete the name "database" in the code, you won't be able to open the form (even manually) for any other table in that particular workbook.
To open a data entry form for a table in another sheet, activate the target worksheet (Sheet1 in the below example) before executing the main code:
Sub OpenDataEntryForm() Dim nName As Name Worksheets( "Sheet1" ).Activate Range( "B2" ).CurrentRegion.Name = "database" ActiveSheet.ShowDataForm For Each nName In ActiveWorkbook.Names If "database" = nName.Name Then nName.Delete Next nName End Sub
After inserting the code, you can place a button form control onto your worksheet and assign a macro to it. Or you can create a button from a shape or another object. The detailed instructions are here: How to create a macro button in Excel.
And now, you users can comfortably open the input data form by clicking a colorful vivid button. They do not even have to bother about putting the cursor within the table - the form will open no matter which cell is active at the moment.
If you have little experience with VBA, a couple of end-to-end tutorials may prove helpful:
If a data form does not launch in your Excel, the following troubleshooting tips may help determine the reason.
When attempting to create a data form for a table containing more than 32 columns, you will get this error message:
In this case, you will have to either reduce the number of columns in the source table or insert one or more empty columns breaking your big table into a few smaller ones. And then, you can create a separate data form for each smaller table.
If you are trying to add a new row of data, but Excel says that it cannot extend a list or database, that means there is some other data below your table and adding a new record would overwrite that existing data.
To resolve this error, remove any data below your table, so it can extend downward. If you do not see anything underneath the last row, the problem is most likely in spaces, empty strings or non-printing characters. In this case, use the Clear All command to clear the workspace.
When clicking the Form button results in the below error message, most likely the cursor is not within the table. Simply click any cell in the table, and then try to open the form again.
In case there is a range named "database" in your workbook, the form will always refer to that range, even when you open it for a table. Weird! If the "database" range is on another sheet, the following error will occur. To fix it, just give some other name to the range.
That is how to create and use a data entry form in Excel. I thank you for reading and hope to see you on our blog next week!
Table of contents
Hi, I have tried creating a formular and that works fine. The only issue i have is that the tabel i fill with the formula doesnt automatically refresh when new data is entered.
I have a different work sheet where the tabel updates when new data is entered but when i transfer the code to the new one it doesnt work. My theory is that the tabel doesnt register changes when a copletely new line is added. Does anyone know how to fix this? Thank you
Hi! Use these instructions to check your workbook: Excel calculations: automatic, manual, iterative. It is possible that your workbook contains a macro that turns off the automatic calculation of formulas.
Ogbonnah Ifeanyi Livinus says:Can I keep the data in to the textbox after submitting it ? I only want to change a single field every time and other fields occasionally ?
Jep says:Great tutorial and it works well, but when I try to sort, Excel is not including the new data added via the form unless I manually tell it to resize the table. Is that the only way to get sorting to work? Thanks!
Sharon says:I have a database of 900+ line of employee details (eg. emp no., name, dept, position.. etc).
and an excel form template which need to key in user's information data.
may i know except VLOOKUP and key in emp no. 1 by 1, is there any other easier way to fill in the data automatically?
Hi Svetlana this is really useful, thank you!
I have created a spreadsheet with the dates across the top as the headers, so that each day is a new form entry.
I would like to create a form that therefore offers fields from the vertical column, to be completed on a daily basis.
Can you please advise on how to switch the axis in the table, without my having to recreate the spreadsheet?
Many thanks
Tracy
Hi Svetlana,
Thank you for the awesome tutorial - it's very helpful!
I have a question related to validation rules inside the forms:
I have a spreadsheets with the following columns (in that order):
Name, Data, Region, Route, Comment.
I added a list validation rule to the Region and Route columns (Route - 1,2,3,4,5 etc. Route - 1A, 2A, 3A, etc.)
When I enter data in the form and (purposely) enter the wrong data in the Route columns for example, I get the custom validation rule message telling me I entered the wrong, I click 'Retry', enter the correct data and press 'Enter.
A new entry is added to the table with the information I entered, but any data I entered before the 'Route' column is blank (in this case, the name and data columns). The rest of the columns are populated.
It appears that if a validation rule is triggered its resets the columns prior to the cell where the validation rule is set.
Do you know what am I doing wrong and how to solve it?
Sorry, forgot to add this, in my previous posted question. I am going to use Data Validation (Custom Formula) to validate if a User is Adding or Removing a row. This is checked against a fixed integer compared to another named cell, with (CountA(array of column A)
And then I have a calculated Validation column, initially set to TRUE.
Whenever a row is attempted or removed, the Validation Check (for Validation Column) should kick-in when if finds: NumberOfRows static count
It seems not to be kicking in, at all. Instead is says FALSE and it displays the Validation Error triangle, in the upper right cell corner.
Any clues why this is so ? I surely had hoped, when I attempted a Sheet Protection to cover above situation - to disallow Add/Remove rows - that the Form would adapt to this.
Instead it throws a general error saying *You have to Unprotect sheet* prior to opening Form.
Hi!
Your request goes beyond the advice we provide on this blog. I can't see your workbook. If you have a specific question about the operation of a function or formula, I will try to answer it.
Excellent and thorough article :-)
I want to go a bit more deeper into the use case utilizing 'Formulas in data entry forms' you describe.
I fully understand not to have new/recalculated formulas to occur for entries not being changed by the Data Entry Form.
So can one rely on this, and making below feasible ?
----------------------------------
Use Case
I want to have a calculated cell for each row holding the UserID for the user last modifying it. It has obviously to be Calculated, to hinder change by the Form. Its not going to be as a Security Measure, just to ensure that a central team can collate information on who contributed.
I imagine that a default value is set, also calculated in (a smart way). So any other value that appears in the table column, is there because of someone changed it.
Hello!
If I understand your task correctly, maybe this article will be helpful: How to track changes in Excel.
Thanks Alexander
It might be a circumvention, indeed. I will try this. But FYI: I did try to code some Event Triggered code, but these seems not to be triggered when using Forms this way :-(
Is there any VBA code that would display the custom drop down lists already built as valiation, on the form? We have a dozen custom drop down lists in our orders worksheet? Size, style, color, shipping method, etc.
Thanks
Hi, Your tutorial on built-in form was very helpful. I have few questions regarding form outlay, table presentation which if at all possible to alter (customize).
Is there any way, procedure to change table outlay from vertical to horizontal i.e; if instead of having a long table have it horizontal.
Second how to change the background color. Regards
how does this form work when working on a sheet shared with other users. will they still need to the save the sheet before adding the entry to avoid overlap?
Christine says:I can't find this Form tool in the Quick Access Toolbar. I am using Mac/microsoft 365 subscription. and the excel is Beta Channel. Is it possibly the reason that this Form Tool can't be found?
Svetlana Cheusheva says:Hi Christine, The Form tool is not visible by default, and you need to add it to the Quick Access Toolbar first. Please check the "How to add the Form tool to Excel" section of this tutorial for the detailed instructions.
Tarmizi Rahman says:Hi Svetlana.
Thank you for the detailed information.
I have the same question as Tarmizi Rahman. I have a dropdown list on one of my columns. When I use the Data Entry Form, I don't get the dropdown list. If I then type in something that is not part of the dropdown list, I get an error message and can retry. This all works, but it would be so much better if the dropdown list was carried through to the form, so that entries can just be selected from the list while in the form.
Many thanks.
Rob
Hi! This is so helpful - thank you so much! Is it possible to put a button on one sheet that opens a data entry form for a range in another sheet (in the same workbook)?
Svetlana Cheusheva says:Hi Keri, Thank you for this good question! Sure, it's possible. To our sample code, just add the following line to activate the target worksheet (Sheet1):
Worksheets("Sheet1").Activate I've added this example to the tutorial for other users to know, and you can find the complete code in this section: Open data entry form with VBA.
Hi,
Love your site.
I don't see how this works in the online version. Can you verify this works on office (Microsoft 365)?
Hi Mickey, Data entry form is only available in a desktop app, including Excel for Microsoft 365. In Excel Online it is not supported.
Philip Glenn says:Hello. The "form" option does not appear in my Excel for Mac when I try to add it to the QAT as described.
Svetlana Cheusheva says:Hello Philip, Like all other tutorials on our blog, this one targets Excel for Windows. From this forum thread, it appears that Excel 2019 for Mac does not have the Form feature. But I don't use Mac and cannot state this with certainty.
Dan Schmidt says:In the beginning you mentioned this would work with dozens, even hundreds of columns. I keep getting the error that I have too many fields in my form (I have 95 field columns). How can I create a data entry form? Thanks,
Dan
Hello Dan, Sorry for misleading you, my bad. After additional research, it appears that a data form is limited to only 32 columns. I have added this limitation to the article. A possible workaround (if applicable in your case) might be to insert a couple of blank columns breaking your table into 3 smaller tables. And then, you can create three separate data forms.
David C says:Hi. I just found your site and it's great!
In my case, I have months across the top of my table (Col B is Jan, Col c is Feb, etc.) and Expenses are listed by Row (labor Row 2, materials Row 3, etc). I want to create a form to enter next month's data. How can I use a form to do that? Thanks
David
I was hoping for the same thing - input by column, not by row. Looks like it's not possible unless you have a ghost/helper worksheet to collect the data by row, then formulas/VBA to transpose it to columns. A lot of work for little benefit :( Looks like we need to request transposed input from Excel.
SRK says:I am trying to use the below comment in my VBA file to place a formula in the column 'AO' Since the holiday lists might vary based on regions, im using if condition to validate the region from column 'M' and then capture the formula in AO column. But getting Run-time error '1004' error while using the below code. Can anyone help to fix this.. Dim slr As Long, LastRow As Long, i As Long LastRow = Range("A" & Rows.Count).End(xlUp).Row For i = 2 To LastRow If Range("M" & i).Value = "Texas" Then Range("AO" & i).Formula = "=MAX(0,NETWORKDAYS(MAX(AO$1,$R(i)),MIN(DATE(YEAR(AO$1),MONTH(AO$1)+1,0),$S(i)),$L$3:$L$12))" end if If Range("M" & i).Value = "Oklahoma" Then Range("AO" & i).Formula = "=MAX(0,NETWORKDAYS(MAX(AO$1,$R(i)),MIN(DATE(YEAR(AO$1),MONTH(AO$1)+1,0),$S(i)),$K$3:$K$12))" end if