View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Chip Pearson Chip Pearson is offline
external usenet poster
 
Posts: 7,247
Default Reset a User Defined Types Values


There is no built-in way to do it. You could, however, write a very
simple procedure that resets the values, and then call that procedure,
passing it the UDT to reset. For example,


Type Sign
Height As Double
Width As Double
Illuminated As Currency
Mounted As Currency
End Type

Sub ResetUDT(ByRef UDT As Sign)
' this resets the values of the Sign UDT
' back to defaults
With UDT
.Height = 0
.Illuminated = 0
.Mounted = 0
.Width = 0
End With
End Sub


Here, the ResetUDT procedure sets the elements back to defaults. You
can use this code as shown below, in particular the line marked with
<<<<. Once you have the ResetUDT proc written, it is a one-liner to
reset the UDT back to defaults.


Sub Test()
Dim UDT As Sign
' setup some values and print them
With UDT
.Height = 100
.Width = 200
.Illuminated = 120
.Mounted = 1234
Debug.Print .Height, .Illuminated, .Mounted, .Width
End With

' reset the UDT back to factory defaults
ResetUDT UDT ' <<<< RESET UDT

' confirm reset values
With UDT
Debug.Print .Height, .Illuminated, .Mounted, .Width
End With
End Sub

Cordially,
Chip Pearson
Microsoft MVP
Excel Product Group
Pearson Software Consulting, LLC
www.cpearson.com
(email on web site)




On Wed, 19 Nov 2008 11:35:01 -0800, RyanH
wrote:

I have a UDT that is used by a userform to calculate the price of a product.
Is there a way to reset the UDT? For example, you can reset an object with
Set Object = Nothing, or reset a variable with Variable = Empty.

The problem occurs when I fill out the userform, set Checkbox1 = True, and
click my CommandButton1 below, a price calculates and the userform remains
open. But if I set Checkbox1 = False then click the buttton, the price
remains the same. The price should be $300 less. This is why I need to
reset the UDT. I have alot of If...Then statements and I would prefer not to
do Else .Illuminated = 0 .Mounted = 0.

'in standard module
Type Sign
Height As Double
Width As Double
Illuminated As Currency
Mounted As Currency
End Type

' userform code
Option Explicit
Base Option 1

Dim TEST As Sign

Sub CommandButtton1_Click()

With TEST
.Height = textbox1
.Width = textbox2
If Checkbox1 = True Then
.Illuminated = 100
.Mounted = 200
End If
End With
End Sub