221
Me.Hide
End Sub
To determine which button on a form was clicked, you can
declare aPublic variable in one of your modules (but not in a user form's code
module)
Include a statement in the button's click event code that sets this variable to a
value indicating which button was clicked.
For example, assume that you create two buttons on your dialog, one labeled "OK" and the other
labeled "CANCEL".  You could put statements like the following in the click event code to
indicate which button was selected:
If the OK button, you could include one of the following:
buttonNumber = 1
bOkSelected =True
buttonSelected = "OK"
bCancelSelected =False
In the cancel button's click event code, you could include one of the following:
buttonNumber = 2
bOkSelected =False
buttonSelected = "Cancel"
bCancelSelected =True
Your code that calls the user form could then check the value of the variable to determine what
action you should take.
The following code are examples of what the final code may look like.  It assumes your buttons
are named CommandButton1 and CommandButton2
In the main module:
Dim bCancelSelected As Boolean
Sub MyProcedure
UserForm1.Show
If bCancelSelected Then
Rotate single page in pdf - rotate PDF page permanently in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Users to Change the Rotation Angle of PDF File Page Using C#
how to rotate a single page in a pdf document; how to rotate pdf pages and save
Rotate single page in pdf - VB.NET PDF Page Rotate Library: rotate PDF page permanently in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
PDF Document Page Rotation in Visual Basic .NET Class Application
how to rotate all pages in pdf in preview; rotate individual pages in pdf reader
222
UnLoad UserForm1
Exit Sub
End If
'code that queries the user form for values set while displayed
UnLoad UserForm1
'additional code
End Sub
In UserForm1's code module:
'For the OK button:
Private Sub CommandButton1_Click()
UserForm1.Hide
bCancelSelected = False
End Sub
'For the Cancel button:
Private Sub CommandButton2_Click()
UserForm1.Hide
bCancelSelected = True
End Sub
If you want to halt the macro if the cancel button is selected, then you can simplify the above and
eliminate the need for aPublic variable:
In the main module:
Sub MyProcedure
UserForm1.Show
'code that queries the user form for values set while displayed
UnLoad UserForm1
'additional code
End Sub
In UserForm1's code module:
'For the OK button:
Private Sub CommandButton1_Click()
UserForm1.Hide
End Sub
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
Able to remove a single page from adobe PDF document in VB.NET. using RasterEdge. XDoc.PDF; How to VB.NET: Delete a Single PDF Page from PDF File.
rotate all pages in pdf and save; how to rotate pdf pages and save permanently
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
application. Able to remove a single page from PDF document. Ability Demo Code: How to Delete a Single PDF Page from PDF File in C#.NET. How to
saving rotated pdf pages; pdf save rotated pages
223
'For the Cancel button:
Private Sub CommandButton2_Click()
End
End Sub
In the above, theEnd statement in the cancel button's code halts all activity, and the user form is
unloaded automatically when code execute is terminated.  All the OK button code does is to hide
the form, which returns control to the calling routine.  If control is returned, then it is obvious that
the OK button was clicked and for the calling procedure to query the objects for any values set
when the user form was displayed.  Once these values are stored, the user form is unloaded,
which allows other user forms to be displayed without potential memory problems.
13.1.21 Making A Userform the Size Of the Excel Window
The following code, placed in the userform's code module, will make the userform the same size
as the Excel window:
Private Sub UserForm_Activate()
With Application
Me.Top = .Top
Me.Left = .Left
Me.Height = .Height
Me.Width = .Width
End With
End Sub
13.1.22 Showing A Userform For Just A Few Seconds
If you use the following code, the userform will stay displayed for just three seconds and then
automatically disappear:
In the userform code module put the following:
Private Sub UserForm_Activate()
Application.OnTime _
(Now() + TimeSerial(0, 0, 3)), "CloseUserForm"
End Sub
In a regular module, you would put the procedure CloseUserForm
Sub CloseUserForm()
UserForm1.Hide
Unload UserForm1
End Sub
13.1.23 Date Validation For UserForm TextBoxes
The following code, assigned to TextBox1 on a userform, will not allow the user to leave the text
box if a date is not entered.
How to C#: Basic SDK Concept of XDoc.PDF for .NET
insert, delete, re-order, copy, paste, cut, rotate, and save or query data and save the PDF document. The PDFPage class presents a single page in a PDFDocument
rotate individual pdf pages reader; rotate single page in pdf file
VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
PDF to images, C#.NET PDF file & pages edit, C#.NET PDF pages extract, copy, paste, C#.NET rotate PDF pages, C# Single page. View PDF in single page display mode
change orientation of pdf page; pdf rotate pages and save
224
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsDate(TextBox1.Text) = False And _
Len(TextBox1.Text) = 0 Then
MsgBox "This is a date field only."
TextBox1.Text = ""
Cancel = True
End If
End Sub
13.1.24 Preventing A User From Closing Excel
To prevent a user from closing Excel, put the following code in the workbook code module
(accessed by double clicking on the workbook object in the VBE project explorer.  For example,
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim userResponse
userResponse = MsgBox("Select OK to close Excel", vbYesNo)
If userResponse = vbNo Then
Cancel = True
End If
End Sub
You can also use a class module to prevent a user from closing any workbook and from closing
Excel.  This avoids the need to have to put the above code in each new workbook and gives you
better control.  Here's a real simple example.
1. In the Visual Basic Editor (VBE), add a class module to your code workbook (Insert
--
>Class
Module). Note the name of the class module (which is probably called Class1)...
2. In the code window that appears, type:  Public WithEvents xlAppTrap as Excel.Application
3. At the top of the code window, you'll see two drop down boxes. Click the one on the left
(should say General) and select: xlAppTrap
4. A private sub should appear on the module, called Private Sub xlAppTrap_NewWorkbook
5. Click the Drop
-
down on the right and select WorkbookBeforeClose. That procedure should
now appear in the code window. You can delete the first one (xlAppTrap_NewWorkbook)
6. To prevent them from closing any workbook as well as Excel, simply enter one line of code
Cancel = True
Finally, you need to 'activate' the class by defining and initializing a variable
7. At the top of the module where you keep your global variables (or any regular module), type
the following
Public clsAppTrap AsNew Class1
C# PDF Convert to Tiff SDK: Convert PDF to tiff images in C#.net
Both single page and multipage tiff image files can be created from PDF. Supports tiff compression selection. Supports for changing image size.
rotate one page in pdf reader; rotate pdf pages
VB.NET PDF: Basic SDK Concept of XDoc.PDF
insert, delete, re-order, copy, paste, cut, rotate, and save or query data and save the PDF document. The PDFPage class presents a single page in a PDFDocument
pdf reverse page order; rotate pages in pdf and save
225
Where Class1 is the name of the class module you inserted in Step 1
8. In your Auto_Open or Workbook_Open procedure, add the following line of code
set clsAppTrap.AppTrap = Excel.Application
9. Once this code is run, the user will not be able to close any workbook, or exit the application,
using neither the Excel or control menus. You'll need to add the following line of code to your
Auto_Close (or any routine that attempts to close the app or workbooks):
Set clsAppTrap.AppTrap = Nothing
That line will disable the trap.  Any routine that closes workbook(s) will need to use the code in
step 9 before the close statement, then use the code in step 8 after the statement so that the trap is
still active.
13.1.25 Changing The Names Of UserForm Objects
You can put text labels, edit boxes, list boxes, and many other objects on a userform.  These
objects are assigned names like "EditBox 1", EditBox2", "ListBox1", "Label1" and so forth.  If
you want to assign these objects names that are more descriptive and make it easier for you to
identify them in your code do the following:
Click on the object you wish to rename to select it
Either press the F4 key or click on the properties button to display the
properties window
In the Name property, change the name to a descriptive name.  You can not use
spaces, but you can use underscores .
You should rename your userform and its objects before you write any code referring to the form
or its objects.  Doing so saves you the trouble of having to edit all such code if you rename the
form or its objects after you've written your code.
For example, if you have changed the name of an edit box from "EditBox1" to "Last_Name",
then the following code would return the value of the edit box and store in a variable:
UserForm1.Show
lastName = UserForm1.Last_Name.Text
UnLoad UserForm1
In the above example, the name of the user form is "UserForm1".  TheShow method displays
the user form.  When the user form is hidden (not unloaded) by a control on the form), the next
VB.NET PDF File Merge Library: Merge, append PDF files in vb.net
all. This guiding page will help you merge two or more PDF documents into a single one in a Visual Basic .NET imaging application.
reverse pdf page order online; rotate pdf page and save
VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
With VB.NET PDF SDK, PDF document page can be rotated to 90, 180, and 270 in clockwise. Both a single page and whole file pages can be rotated and saved as
pdf rotate page and save; change orientation of pdf page
226
line is executed.  Then the last line, theUnload statement, is executed to remove the userform
from memory.
13.1.26 Showing Another UserForm From A UserForm
If you want to have a button on a userform display another userform, then you can do so be
assign code like the following to the click event of the button:
Private Sub CommandButton1_Click()
'unload the userform that is displayed
Unload Me
'display another userform
UserForm2.Show
End Sub
Please note that unloading the userform removes it from memory and you can not get any of the
settings or entries the user may have made on the form.  To retain it in memory, do the following
instead.
Private Sub CommandButton1_Click()
hide the userform that is displayed, but keep it in memory
Me.Hide
'display another userform
UserForm2.Show
End Sub
This allows you to redisplay the form if necessary.  You shouldUnload a form once you are done
using it to minimize the memory impact.
13.1.27 UserForms Sometimes Reset Module
-
Level Public
Variables
If you declare variables for your userforms and use those variables to control the userform rather
than using the userform 's name directly, the problem seems to go away.
For instance, say you have a userform called MyForm. Rather than do this:
MyForm.Show
Unload MyForm
227
Do this instead:
Dim frmMyForm As MyForm
Set frmMyForm = New MyForm
frmMyForm.Show
UnLoad frmMyForm
Set frmMyForm = Nothing
13.1.28 Unreliable Events with UserForms
There are certain conditions where the UserForm_Terminate event refused to fire.  Most often,
this occurs if the form is hidden and then unloaded.  The best way to cure this problem is to treat
it as if it were a normal class module.
Dim frmMyForm As UserForm1
'fires Initialize event
Set frmMyForm = New UserForm1
'Show and hide the UserForm as many times as you want in here.
frmMyForm.Show
'This *should* fire the terminate event.
Unload frmMyForm
'If not, this *definitely* will
Set frmMyForm = Nothing
13.1.29 RowSource Property Bug
TheRowSource property for a listbox in is quirky at best.  Another annoying thing is that if you
hide the worksheet where theRowSource is located, or make the workbook into an add
-
in, all the
RowSource data disappears.  The best approach if possible is to stick with using AddItem, or
loading theList property with an array.
13.1.30 Force User Form To Top Right Of Screen
If you place the following code in the userform's code module, it will display the form in the
upper right hand corner of the Excel screen.
Private Sub UserForm_Activate()
With Me
.Left = Application.Width 
-
.Width
.Top = 0
228
End With
End Sub
13.1.31 Userform Controls
The following illustrates how to iterate through the objects on a userform and determine if they
are an option button.  And if so, to take whatever action is desired.
Dim C As Control
For Each C In UserForm1.Frame1.Controls
If Left(C.Name, 6) = "Option" Then
'do whatever you want
Else
'do something else
End If
Next
The following is another example of looping through the controls on a userform.  The following
would go in the userform's code module.
Private Sub UserForm_Click()
For Each oC In Me.Controls
If TypeName(oC) = "CheckBox" Then
MsgBox oC.Caption
End If
Next
For Each oC In Me.Controls
If TypeOf oC Is msForms.CheckBox Then
MsgBox oC.Caption
End If
Next
End Sub
13.1.32 Accessing A Userform From Another Workbook
Book1.xls contains a userform (userform1) with a button (commandbutton1) with an event
procedure, commandbutton1_click:
Private Sub CommandButton1_Click()
MsgBox "button clicked"
Me.Hide
End Sub
The WB also contains a standard module with one procedure:
Sub showform()
229
'unload form if it is still in memory
Unload UserForm1
UserForm1.Show
End Sub
Book2 contains a standard module with the test procedure:
Sub testBook1()
book1.Module1.Showform
End Sub
After saving Book1.xls and establishing a reference via Tools, References in the Visual Basic
editor from Book2 to Book1.  Running testBook1 results in userform1 popping up.  Clicking on
the sole button run the correct event procedure running.
What are the consequences of this mumbo
-
jumbo?  First, unless the designer(s) of Book1
thought of 
-
and accommodated 
-
this type of access, the side
-
effects could, potentially, be
disastrous.  Second, this sneaks around an intended VBA feature.  If MS decides to block this
"ability" those exploiting it are on their own.
13.1.33 Iterating Through Objects In A Frame
The following illustrates how to iterate through a collection of text boxes that are  contained in a
userform frame using theFor Each...Next statement
Dim ctl As Control
For Each ctl In UserForm1.Frame1.Controls
If TypeOf ctl Is MSForms.TextBox Then
MsgBox ctl.Name
End If
Next ctl
13.1.34 Looping Through Controls On A Userforms
The easy way it is to fully qualify the object you're looking for, telling VBA exactly which object
library you want it to look in.  This not only solves your problem but makes for faster code as
well.
Private Sub UserForm_Initialize()
Dim ctl As Control
For Each ctl In Me.Controls
If TypeOf ctl Is MSForms.CheckBox Then
'''More code here.
ElseIf TypeOf ctl Is MSForms.TextBox Then
'''More code here.
230
End If
Next ctl
End Sub
13.1.35 Passing Values From A Userform To A Sub
First, declare a public variable at the top of a normal module.  For example
Public bResponse As Boolean
Let's assume you have two buttons on the form, one an OK button and one a Cancel button.  If
you double click on the OK button in the form editor, it will display the button click code.  In that
subroutine put
bResponse = True
Me.Hide
Repeat on the Cancel button but put
bResponse = False
Me.Hide
When the form closes, check bResponse to see if the user clicked OK or Cancel.  If they clicked
Cancel, you will probably want to unload the form and exit your subroutine.
13.1.36 Useful Internet Articles On UserForms And
DialogSheets
Here are some sources which might prove helpful on creating userform and dialogsheets.
http://support.microsoft.com/support/kb/articles/q164/9/23.asp
How to Fill a UserForm ListBox with Database Values
http://support.microsoft.com/support/kb/articles/q161/5/98.asp
XL97:  How to Add Data to a ComboBox or a ListBox
http://support.microsoft.com/support/kb/articles/q183/1/83.asp
XL98: How to Fill ListBox Control with Multiple Ranges (works for XL97
too)
http://support.microsoft.com/support/kb/articles/q165/5/70.asp
XL97:  How to Use the TextColumn Property
Documents you may be interested
Documents you may be interested