View Single Post
  #3   Report Post  
Posted to microsoft.public.excel.programming
Rumplestiltskin[_2_] Rumplestiltskin[_2_] is offline
external usenet poster
 
Posts: 6
Default Reference Label from TextBox

On Sun, 20 Jul 2008 16:54:07 +0100, "Peter T" <peter_t@discussions
wrote:

With a little more Google searching I've found how to access the
label. The routine I'm using creates a UserForm dynamically, and
places controls based on worksheet cell information. The UserForm name
changes if it detects a similarly named UserForm in the Forms folder.
I've got all that working well. Now, all I need is the method to
access the userform from the class.

Your routine "SetLabel" doesn't make any sense, what do you want it to do.

Regards,
Peter T

"Stephen Newman" wrote in message
.. .
I am using a class I found here that works very well for my needs. Now
I would like to reference and change the caption of a label of the
same name (number) as the text box.

The Class:

Public WithEvents txtBox As MSForms.TextBox, CtlNum As String
Public laBl As String

Private Sub Class_Terminate()
Set txtBox = Nothing
End Sub

Private Sub txtBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 46, 48 To 57
If Right(txtBox, 2) = ".5" Then KeyAscii = 0
If KeyAscii = 46 Then SendKeys ("5")
''' These are all number. No Problem
Case Else
''' Some other kind of character. Beep and cancel it.
Beep
KeyAscii = 0
End Select
SetLabel
End Sub

Private Sub txtBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger,
ByVal Shift As Integer)
If KeyCode = 8 Then txtBox.Value = ""
End Sub

Private Sub txtBox_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
If Len(txtBox.Text) = 3 And Right(txtBox.Text, 2) < ".5" Then txtBox
= Null
If Len(txtBox.Text) 4 Then txtBox = Null
End Sub

'Here's where it fails.

Sub SetLabel()
'This returns the TextBox number
CtlNum = Mid(txtBox.Name, 8, Len(txtBox.Name))
'Currently, Me is invalid. I need the name of the active UserForm
MsgBox Me.Controls("Label" & CtlNum).Object.Caption
End Sub

All help will be appreciated.

Thank you.


I can write what I need into the routine later. Right now all I need
to be able to do is access the control from the class.