Должно произойти следующее:
1.Пользовательская форма с 2 элементами управления RefEdit отображается
2.Первый RefEdit используется для выбора диапазона
3.Событие RefEdit_Change устанавливает второй элемент управления RefEdit на .offset (0,1) диапазона
Здесь мой код до сих пор:
Модуль 1:
Dim frmSelectXY As New frmSelectImportData
With frmSelectXY
.Show
.DoStuffWithTheSelectedRanges
End With
UserForm: frmSelectImportData
Option Explicit
Private Type TView
IsCancelled As Boolean
xrng As Range
yrng As Range
End Type
Private this As TView
Public Property Get IsCancelled() As Boolean
IsCancelled = this.IsCancelled
End Property
Public Property Get yrng() As Range
Set yrng = this.yrng
End Property
Public Property Get xrng() As Range
Set xrng = this.xrng
End Property
'Here is where the fun happens
Private Sub RefEdit1_Change()
'RefEdit2.Value = RefEdit1.Value
If InStr(1, RefEdit1.Value, "[") <> 0 And InStr(1, RefEdit1.Value, "!") <> 0 Then
RefEdit2.Value = Range(RefEdit1.Value).offset(0, 1).Address(External:=True)
ElseIf InStr(1, RefEdit1.Value, "!") <> 0 Then
RefEdit2.Value = Range(RefEdit1.Value).offset(0, 1).Parent.Name & "!" & Range(RefEdit1.Value).offset(0, 1).Address(External:=False)
Else
RefEdit2.Value = Range(RefEdit1.Value).offset(0, 1).Address(External:=False)
End If
End Sub
Private Sub SaveBTN_Click()
Set this.xrng = Range(RefEdit1.Value)
Set this.yrng = Range(RefEdit2.Value)
If Not validate Then
MsgBox "x-values and y-values need to have the same size."
Else
Me.Hide
End If
End Sub
Function validate() As Boolean
validate = False
If this.xrng.count = this.yrng.count Then validate = True
End Function
RefEdit1_Change
должен отрегулировать значение RefEdit2 так, чтобы оно показывало ссылку на столбец рядом с ним или лучше.offest(0,1)
к нему.
Но это не то, что происходит .. значение не меняется.Как только Пользователь нажимает на RefEdit2, если RefEdit1 уже был изменен, программа прерывается без сообщения об ошибке.Если вы отменили пользовательскую форму, у меня также были серьезные сбои в Excel.Я временно исправил проблему, перестроив пользовательскую форму с нуля и переименовав RefEdits.Но в какой-то момент оно появилось снова.Кажется, что это проблема, присущая Excel / VBA.
Кто-нибудь знает, как это исправить?
Уродливые хаки и обходные пути приветствуются, все лучше, чем, прервать без сообщения об ошибке.