всем доброго времени суток
у меня есть class module:
Код |
---|
Option Explicit
Public WithEvents eBx1 As MSForms.TextBox
Public WithEvents eBx2 As MSForms.TextBox
...
до Public WithEvents eBx50 As MSForms.TextBox
Private Sub eBx1_Change()
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
If eBx1.Tag = "" Then Exit Sub
Dim lc1 As Long, lc2 As Long, r As Integer, Str
Str = Split(eBx1.Tag, ";")
If UBound(Str) < 1 Then Exit Sub
lc1 = val(Str(0))
lc2 = val(Str(1))
With Worksheets("updateEvent")
If .Cells(5, 2).Value = .Cells(1, 1).Value Then
.Cells(3, lc1).Value = Format(val(eBx1.Value) / 100, "#0%")
Else
.Cells(3, lc2).Value = Format(val(eBx1.Value) / 100, "#0%")
End If
End With
With eBx1
If Not IsNumeric(.Text) And .Text <> "" Then
.Text = Left(.Text, Len(.Text) - 1)
.SelStart = Len(.Text)
End If
End With
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
Private Sub eBx2_Change()
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
If eBx2.Tag = "" Then Exit Sub
Dim lc1 As Long, lc2 As Long, r As Integer, Str
Str = Split(eBx2.Tag, ";")
If UBound(Str) < 1 Then Exit Sub
lc1 = val(Str(0))
lc2 = val(Str(1))
With Worksheets("updateEvent")
If .Cells(5, 2).Value = .Cells(1, 1).Value Then
.Cells(4, lc1).Value = Format(val(eBx2.Value) / 100, "#0%")
Else
.Cells(4, lc2).Value = Format(val(eBx2.Value) / 100, "#0%")
End If
End With
With eBx2
If Not IsNumeric(.Text) And .Text <> "" Then
.Text = Left(.Text, Len(.Text) - 1)
.SelStart = Len(.Text)
End If
End With
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
...
до Private Sub eBx50_Change()
|
возможно ли создать публичную функцию внутри Class Module?
затем использовать ее внутри UserForm
использую следующий код внутри UserForm
Код |
---|
'function for import data from eventsFC to sheet
Dim eVal1() As New eventFC 'название Class Molude
Dim eVal2() As New eventFC
...
до Dim eVal50() As New eventFC
Private Sub UserForm_Initialize()
Application.EnableEvents = False
Application.ScreenUpdating = False
Dim c, r As Integer
If Sheets("updateEvent").Cells(1, 2).Value = "New" Then
Else
ReDim eVal1(1 To 12)
For c = 1 To 12
Set eVal1(c).eBx1 = eventsFC.frmEvent.Controls("txtBrand1_" & c)
Next c
ReDim eVal2(1 To 12)
For c = 1 To 12
Set eVal2(c).eBx2 = eventsFC.frmEvent.Controls("txtBrand2_" & c)
Next c
...
до
ReDim eVal50(1 To 12)
For c = 1 To 12
Set eVal50(c).eBx50 = eventsFC.frmEvent.Controls("txtBrand50_" & c)
Next c
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
|
можно ли добавить в этот код еще один цикл?
код у меня работал когда использовал в User Form 12 наименование товара
основная задача заключается в том что если пользователь меняет данные в UserForm, данные должны менятся внутри Excel
есть ли у вас какая-то идея по этому поводу
заранее спасибо за потраченное время