Below are my thoughts based on your post, note that I am not a moderator and feel free to wait for Rob or one of the others to comment.
If you are interested in getting a job done, rather than learning in the forums, check out the consultancy link:
Place the post in the HIre Help forum:
I believe the second will be cheaper but it would depend on your budget, how quickly you need something built, and how much customisation is required. What you appear to be looking for is simple enough but time consuming to tweak everything, you also need to consider how you are going to maintain it into the future if you have no VBA experience yourself.
If you are not in a hurry, and are looking to learn VBA, post your workbook as you come to discrete problems and people here will point you in the right direction.
Looking at your code there are a few errors, you define X as the last used row in A then redefine X as the last used row in B (so X will be the last used row in B), you then loop through the A column and refill every text box whenever you get a match with textbox31 (which I assume is your search string) you really need to list the results as they are found and this is usually done using a listbox or combobox.
As Roy states, a loop search is not the most efficient search method it will do for small databases (up to a few thousand entries, more if you array your data first). The built in Autofilter function of excel can be used as an efficient VBA search, I am not sure what mechanism Roy is using in his linked database.
A loop is a more efficient way of filling your textboxes though, for example:
For Y = 6 To X
Me.Controls("TextBox" & Y - 5).Text = Sheet1.Cells(Y, 1).Value
would replace lines 8 to 34 in your code.
As you do not reference a userform in your code, I assume you do not actually have a working form at this point? Feel free to upload what you are working on if you feel like going in that direction.