I have created 2 forms in excel, userform1 and userform2. How do I set the caption of userform2 so that it displays whatever is in textbox1 of userform1 and updates itself when the value of textbox1 changes?
As Rory mentioned here just add it to the UserForm1 TextBox1 Change Sub.
Paste the script below into the code part of UserForm1.
Private Sub TextBox1_Change()
'Assign the TextBox Text to a variant
SomeText = TextBox1.Text
'Set the UserForm2 Caption to the variant
UserForm2.Caption = SomeText
End Sub
To paste the script into the code part of your UserForm, double click the Userform in the left side Window of VBA called "Projects Window" then press F7 button on your key board to access the code part of the UserForm then paste the code into the bottom of the page.
Related
What I mean is, for example I have a text:
Hello, I am using stackoverflow
And when I click on the word "Hello", it becomes bold, but other text does not change:
Hello, I am using stackoverflow
You may be interested in the following Word Application events:
WindowBeforeDoubleClick is fired when the editing area of a document window is double-clicked, before the default double-click action. The current selection is passed as a parameter.
Public WithEvents appWord as Word.Application
Private Sub appWord_WindowBeforeDoubleClick _
(ByVal Sel As Selection, Cancel As Boolean)
Dim intResponse As Integer
intResponse = MsgBox("Selection = " & Sel & vbLf & vbLf _
& "Continue with operation on this selection?", _
vbYesNo)
If intResponse = vbNo Then Cancel = True
End Sub
WindowBeforeRightClick is fired when the editing area of a document window is right-clicked, before the default right-click action.
Public WithEvents appWord as Word.Application
Private Sub appWord_WindowBeforeRightClick _
(ByVal Sel As Selection, Cancel As Boolean)
Dim intResponse As Integer
intResponse = MsgBox("Selection = " & Sel & vbLf & vbLf _
& "Continue with operation on this selection?", _
vbYesNo)
If intResponse = vbNo Then Cancel = True
End Sub
Yes, it is possible in Word to apply any character formatting, such as bold, to any word by clicking it, if you use the Format Painter as follows:
Select a word that already has the formatting that you are after (e.g.
select a word that is bold).
Double-click the Format Painter button on the toolbar/ribbon. This "copies" the formatting of the selected word into memory.
Click in the middle of the word which you want to format (e.g. make bold). This "pastes" the formatting you copied in the previous step. The word you click will become formatted with the same character formatting as the word you selected in Step 1 (e.g. the whole word will become bold with a single click).
OPTIONAL. Scroll using the mouse and the scroll bars to find additional words and click them to format them as well. You can also select text with the mouse (click and drag) to make it bold.
To stop format painting, click the Format Painter button again, one time. Using arrow keys to navigate, or Esc, or other keys to type text may also stop the Format Painter. The Format Painter button on the Ribbon changes appearance to show when it is depressed (Format Painter active) or not (Format Painter inactive).
Note: if you single-click the Format Painter button at Step 2, it will let you "paint" the formatting one time only.
Note: if you selected an entire paragraph in Step 1 before clicking the Format Painter, you can subsequently apply paragraph formatting to the paragraph(s) you click as well as character formatting to the word(s) you click (or click and drag over one or more entire paragraphs to apply both paragraph and character formatting.
The Format Painter is a great tool for applying formatting throughout your document. If you get the hang of the Format Painter, the next step is to learn how to apply, modify and create styles, which are named sets of character and paragraph formatting settings. The pros rely on styles to ensure consistent formatting and to format Tables of Contents and other complex fields.
I have a macro/Sub that I wish to run everytime the enter key is pressed. Does anyone know the correct syntax?
Excel on Enter Macro
How to run a macro when certain cells change in Excel
Right-click the Sheet1 tab and then click View Code.
The module sheet behind Sheet1 is opened.
Type the following code into the module sheet:
Private Sub Worksheet_Change(ByVal Target As Range) Dim KeyCells As Range. ...
Click Close and Return to Microsoft Excel on the File menu.
I have two Excel picture objects linked to different forms, each with a text box and OK/Cancel buttons. In one form, the text cursor is in the textbox when clicking the object which is what I want:
but in another it selects the OK command button rather than have the text cursor in the textbox:
I've gone through the form and textbox/command button properties and see nothing about selection, and the 'correct' macro properties appear to be the same as the 'incorrect' one.
What do I do to change the form such that when it's opened the text cursor goes to the textbox instead of the command button being selected?
Quite easy solution is to change TabIndex Property to 0.
So, 1) go to VBA Editor, 2) select your TextBox in your UserForm and 3) change TabIndex Property in Property window as presented below.
Add an event to the form so that when it is initialized it selects the correct texbox.
Private Sub UserForm_Initialize()
TextBox2.SetFocus
End Sub
Before the form is displayed, you can do soemthing like:
TextBox1.SetFocus
Obviously, replace "TextBox1" with whatever the name of your textbox object is.
This should go in whatever event or macro causes the form to .Show, immediately before the .Show statement.
I know its a silly question but I still want to know it. I have two textboxes, textbox1 and textbox2. I entered some text in textbox1. Now I want that the first 3 characters of textbox1 first to be displayed in textbox2 when I move from textbox1 to textbox2 using tab index or by clicking my mouse on textbox2. I know I can make us of the mouse over event, but it will be great if I get some good opinions from you. Thanks in advance.
This should do the job :
Private Sub textbox2_GotFocus()
Dim length As Integer
length = Len(textbox1.Text)
If length > 3 Then length = 3
textbox2.Text = Left$(textbox1.Text, length)
End Sub
The GotFocus event will trigger if you click on the textbox or if you use tab key.
I have an mdb file made by ms access. It got a form inside and inside the form there are one large textbox.
The intention of making this textbox is to show the progress of some work by adding messages inside the textbox:
txtStatus.value = txtStatus.value & "Doing something..." & vbCrLf
txtStatus.value = txtStatus.value & "Done." & vbCrLf
But the problem is, when the height of the text > height of the textbox, the new message is not displayed automatically. The textbox has a scroll bar, but I have to scroll it manually. I would like to auto scroll to the bottom whenever new text pop up.
I tried to add this code(copied from internet) in the On Change property, but the code failed, it does nothing:
Private Sub txtStatus_Change()
txtStatus.SelStart = Len(txt) - 1
End Sub
I wish there would be some simple and beautiful way to achieve this. I don't want to add some code which only work on some computers due to its dependence on the windows platform's kernel/etc.
You can do it via a call to a sub;
AppendText "Bla de bla bla."
.
.
sub AppendText(strText As String)
with txtStatus
.setfocus '//required
.value = .value & strText & vbNewLine
.selstart = len(.Value)
end with
end sub
There is a workaround to the design flaw mentioned by steve lewy in his comment on the original post. It is possible to have a text box that appears to do both of the following:
When the contents are too large for the box, and the box does not
have the focus, the box displays the last part of its contents,
rather than the first part of it.
When the box has the focus, it can scroll to any part of the text,
but it initially shows only the last part of the text, with the
cursor at the end of the text.
This is accomplished by actually having two identically-sized, overlaid text boxes, where one is visible only when the focus is elsewhere, while the other is visible only when it has the focus.
Here’s an example of how to do it in Access 2010.
Create a new Access database, and create a memo field named LongNote in its only table. Fill LongNote with some examples of long text. Create a form for editing that table.
Create a text box called BackBox with the desired size and font, too small to completely show a typical value of its data source, LongNote. (Instead of creating this box, you can rename the default text box created on the form.)
Make an exact copy of that box called FrontBox. Set the data source of FrontBox to be either the entire contents of BackBox or the last part of the contents, as shown below. The size of the last part, measured in characters, depends on the size of the box and its font, as well as on the kind of text to be displayed. It needs to be chosen by trial and error to reliably allow that many characters to be displayed in the box. For instance, here’s the formula for a box that can reasonably hold only 250 characters:
=iif(Len([BackBox])>=250,"... " & Right([BackBox],246),[BackBox])
If the whole value is too large to be shown, three dots precede the part that is shown to indicate that it’s incomplete.
Create another text box called OtherBox, just to have somewhere you can click besides the two boxes already mentioned, so neither of them has the focus. Also create a tiny (0.0097 x 0.0097) text box called FocusTrap, which is used to avoid selecting the entire contents of whatever text box gets the focus when the form is displayed (because text selected that way is hard to read).
Enter the following event-handling VBA code:
' Prevent all text boxes from being focused when a new record becomes
' current, because the focus will select the whole text and make it ugly
Private Sub Form_Current()
FocusTrap.SetFocus
End Sub
Private Sub Form_Open(Cancel As Integer)
FocusTrap.SetFocus
End Sub
' When FrontBox receives focus, switch the focus to BackBox,
' which can display the entire text
Private Sub FrontBox_GotFocus()
BackBox.SetFocus
FrontBox.Visible = False
End Sub
' When BackBox receives the focus, set the selection to
' the end of the text
Private Sub BackBox_GotFocus()
BackBox.SelStart = Len([LongNote])
BackBox.SelLength = 0
End Sub
' When BackBox loses focus, re-display FrontBox – if the text in
' BackBox has changed, then FrontBox will follow the change
Private Sub BackBox_LostFocus()
FrontBox.Visible = True
End Sub
Test the form. When you click on FrontBox, it should disappear, letting you work on BackBox. When you click in OtherBox to remove the focus from BackBox, FrontBox should reappear. Any edits made in BackBox should be reflected in FrontBox.
Back in design mode, move FrontBox so it exactly covers BackBox, and click Position | Bring to Front to ensure that it covers BackBox. Now test the form again. It should appear that a single text box switches between display-the-last-few-lines mode and edit-the-entire-contents mode.
Simply put the following code after linefeed or on Change event txtStatus
txtStatus.SelStart = Len(txtStatus) - 1