Create UserForm TextBox At Run-Time & Auto Size To Fit Text
Dec 11, 2008
I have a user form on which I need to create a textbox every time the user clicks a button. There are too many to create them all in advance and make them visible when needed. The sample attached, from this forum, is good, except, the numbers in the text box just scroll along and I need to see all the text typed into my textboxes. I would like the textboxes to be multiline, wordwrap and have them resize according to the amount of text.
I'm trying to Automatically fit the text to the size of the TextBox frame using:
With obFinalNote.TextFrame2 strTxt = .TextRange .DeleteText .WordWrap = msoTrue .AutoSize = msoAutoSizeTextToFitShape .TextRange = strTxt End With
It appears ".AutoSize = msoAutoSizeTextToFitShape" only considers the width (I think) as the text is downsized but yet the text still extends beyond the the bottom of the frame. And never gets set to less than 11 point. Even when there's not enough text to reach the bottom of the frame the text is still set to 11pt leaving the frame half empty. Need to have text big as possible.
How to keep text in its entirety within the frame of the shape?
The quantity of text varies widely and the frame size cannot change. I've tried using Len() and dividing by a certain number and then based on that answer set the size with:
With obFinalNote.TextFrame.Characters.Font .Name = "Arial" .FontStyle = "Normal" .Size = NoteFontSize .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With
But this technique doesn't seem reliable as the number to divide the Len() by seems to depend on how "wraps" have occured.
I am using Excel 2003 on Windows XP, and I have created a form using several TextBox controls on Worksheets (not userforms). When I click on a textbox that has some text in it, the size of the text grows. Clicking away from it, and then clicking on it again causes the text to grow further. Repeating these actions ultimately causes the text to be so large that the contents are illegible. There is no VBA code manipulating the font in the controls, they are only set initially through the settings in their properties (all textboxes use the same font). The problem occurs on multi-line as well as single-line textboxes. In debug mode, I can see that the font.size has not changed from the initial setting of 9, so there is no manipulation of the settings. It looks like the control is being zoomed, as the size of the vertical scrollbar grows along with the text. Closing the file and reopening it doesn't resolve the problem. The textbox retains the size that it has grown to. This problem seems to happen on some environments and not others, and I have not been able to determine the cause or factors that contribute to this phenomenon.
sometimes i'll have some text i want to show in a userform textbox. let's say the text happens to be in a sheet named story, and it is in A1 of the worksheet.
A1 says, for example:
" The next big thing can be found by clicking here " if the note above were on a web page, all you'd have to do is click on 'here' and you are off the the next big thing. but so far, when i use this code to bring the text in story!A1 into the userform textbox all i get is the text. there is no 'clickability' as it were.
Me.textbox.Value = Range("story!A1").Value is there some bit of code magic one can use to make a userform textbox function with html code?
Code: Private Sub cmdSearchButton_Click() Dim txtbox As String 'stores lookup value Dim x As Variant 'value for wwid txt box Dim ForeName As String Dim SurName As String Dim wwid As Variant Dim iPosition As Integer
Here is my code, it does a vlookup and if the persons name is not found it will split the text entered into forename and surname but when i try and add
I want to do is have a User form that allows a user to add a new column across several sheets (i.e. b2, then c2, then d2) where what the user has selected from 3 defined ranges (in this case commodity, pack_type and pack_spec) is concatenated. see the example attached. So for exmaple, I would like the choice of adding into cell B2 across all sheets (except sheet pack) gold solid 5kg. Then I can add the next into c2. I have tried searching few a few examples of userforms with various problems but I dont know how to code it correctly.
i would like to create a userform with a textbox to enter a product code , a command button to run VBA and a big text box to show output of VBA from Textbox 1 which i will connect to DB and pull back information relevant to that product code , is this possible i can create the userform no problem and already have code to pull back from DB into Excel ,
I have a timesheet, with a custom format of [h].mm. In my userform, I have a textbox which I would like to use to enter a time in, but when I run the macro, the time shows up correctly (such as 0.12 for 12 minutes), but it is still calculating as text. I've tried all the various codes I have found throughout the board but nothing has worked so far. I can get as far as making 0.12 minutes show as 12.12.00 AM, but then it shows the whole time instead of the 0.12 which the cell is formatted to do and does not calculate it at the bottom where I grab all the times from that column.
I am attempting to pick up a date with time entry on a worksheet and place it into a TextBox on a UserForm. Format on the sheet is mm/dd/yyyy h:mm AM/PM. The UserForm is placing the value as mm/dd/yyyy 12:00 AM. here is the
Private Sub UserForm_Initialize() If Not Range("dDate").Value = "" Then TextBox2.Value = Range("dDate").Value TextBox2.Text = Format(DateValue(TextBox2.Text), "mm/dd/yy h:mm AM/PM") Else TextBox2.Value = "" TextBox2.SetFocus End If End Sub
"dDate" is the named range where the date is sitting. The format is also set on the TextBox2 exit event. Can anyone see why only the date portion is being transfered with the default 12:00 AM for no time component of the value?
I want to add variable content to a textbox in a userform. I want to duplicate a Msgbox as closely as possible to allow me to position the box properly, and I would like a procedure to add a prompt to the userform as you would to a Msgbox. That is, I have found a solution using a cell in my spreadsheet, but I would like a fully vba oriented solution. In the message box you can say
MsgBox Prompt:="Put your message here."
For a textbox in a userform, I can link it to a cell (say A1) and then put data into the cell
When I run the macro, some columns are already hidden. The macro doesn't seem to autosize cells correctly. For instance, one cell in a row appears to have some contents hidden (or below the reading area of the cell). In other instances, the rows are auto-size to huge heights and widths.
I have a fixed height userform textbox that i would like to show the last line of. After there is text in the textbox, enable=false. I can see how to align for left, right and centre, but not for bottom.
I don't want to change the height or size of the textbox and just need to display the last line of data.
I have a calendar userform that enters a date into a userform textbox in the format mm/dd/yy.
I am in the UK, so default date format is dd/mm/yyyy but i need it as above - mm/dd/yy
So, when I get a MsgBox to repeat Textbox1.Value (the date from the calendar object, formatted mm/dd/yy) and repeat it in format dddd mmmm dd yyyy, it reads the value not as I want it, mm/dd/yy, but as the usual dd/mm/yyyy - so instead of reading 08/01/12 as Wednesday August 01 2012 it is giving me Sunday January 08 2012 - even though in the cells on the worksheet that are populated from the textbox, the date reads correctly, so 08/01/2012 is indeed 1st August 2012 not January 8th 2012...
So it's the MsgBOx function reading the textbox in the userform wrong, and formatting makes no difference...
Can I fix this without changing my regional settings? Is there a way to set the region in vba then unset when leaving the program? I don't want to have to change regional, and anyway, the program will be used by others who won't know / want to do that.
We can center horizontally with TextAlign (Left, right or center). Can we center text in a textbox on a userform vertically? I am working with multiple fonts, when a user selects a font I attempt to format a textbox as a display to show what is being created (Best WYSIWYG as I can). I have this particular font that is just ugly but is required. My textbox is set for a 12 point font but the displayed characters partially appear below the lower portion of the textbox. Think of cutting off about 1/3 of the bottom of all text in the textbox.
In my textbox it seems like the text could be moved up (some type of top margin?). All other fonts appear to display in the textbox vertically central, so I believe its the particular font selected causing the as displayed anomaly.
Is it possible to selectively format text in a textbox on a userform ie. to make some of the text bold, other parts underlined and other parts italic etc. The text which appears in my text box is entered automatically by a piece of code which extracts the contents of certain cells and arranges them in the text box as needed. I would now like to be able to display the text box with the text formatted so that its not just all in plain text.
I have an excel workbook with a form... Not I used this for and the code in other workbooks but this one just does not want to work.... I think the problem is somewhere in the code below but I can't point it out...
Private Sub UserForm_Initialize() cboDocument.Value = "" With cboDataType .AddItem "Voluntary" .AddItem "AIP" .AddItem "CA Low Cost" .AddItem "Takeout" .AddItem "Terr Cr" .AddItem "Vol Cr" End With
How do i auto advance a text box in a user form to the next question. As long as that question was answered otherwise it doesn't advance and displays a msgbox telling them that something must be entered in that box? All done in vba.
I think there's a way to use Excel to automatically create a 5-day calendar. Maybe a macro?
The date format must be dd/mm/yyyy hh:mm and it must be in text format. If its June 9, 2012 at 6pm - the correct format is: 12/06/2012 18:00
I want to post 5 times a day: 09:05, 9:55, 10:45, 16:55 and 18:00.
Column A is where the date and time goes. Ideally, I'd enter in A1 the start date and then run a macro that would automatically populate the next 5 consecutive days with the specific times above (so 25 rows total in column A).
I have to save the file as a csv file, so the date and time format has to be in text or I'll get an upload error in Hootsuite.
I need a userform textbox event that fires after I tab or click out of the textbox. Going by the list of options:Beforedragover, BeforeDroporPaste, Change, DblClick, DropButtonClick, Error, Keydown, Keypress, keyup, mousedown, mousemove, mouseup.
I can't figure out which one will do what I want. The change event happens instantaneously which doesn't work. I need to fire off the event when my focus leaves the textbox.
Is there a way to control the vertical size of a textbox, so that we could type in a List of Instructions to our operator, and the textbox would resize depending on the numbers of instructions in the box. Also the items in the cells beneath the textbox would need to move down, to allow for the resized textbox.
One of the action's on a large group of the controls is the same but except for one number
here is an example
If TextBox107.ForeColor = 255 Then ActiveCell. Offset(0, 53).Font.ColorIndex = 3 If TextBox108.ForeColor = 255 Then ActiveCell.Offset(0, 54).Font.ColorIndex = 3 If TextBox109.ForeColor = 255 Then ActiveCell.Offset(0, 55).Font.ColorIndex = 3
This makes a cell that correlates to the textbox red if the text in the textbox is red.
Now, I loads of these textboxes that all need to run the same code with just the Offset value one digit higher than the last and I was hoping I could create a loop to avoid a huge block of code but I can't work out how to make a constant that will +1 with each loop.
Also, can I assume that a loop will start with the control with the lowest number i.e. Textbox1 and then work its way through the rest of them in order?
I tried looking for everywhere, but i still cant seem to find the solution.. I have an Active X textbox on a worksheet, and I need it's value to show up on a textbox on my userform, that shows up through a command button on that worksheet. I'm fairly new to vba.
I have a working macro where I use a Forms Command Button w/ a Macro that copy/paste specific variables and range in the workbook to a pre-defined PowerPoint template file (in the same directory as the workbook file). See code below: Questions:
1) Is there a better script to reference a value in a cell value in Excel and Paste in PPT template?
2) Is there away to auto scale the copy range from Excel to PPt? Curently I have to manually adjust the height/width parameters.