Помогите, пожалуйста разобраться: как нужно присвоить диапазоны для ValidationList (с 1-го по 3-ий), что бы данные брались не с Листа2 (как сейчас), а брались бы с Листа3 ? Ещё не могу присвоить свойство MatchRequired = True (нельзя ввести значения, отличные от списка) для ComboBox1, куда нужно добавить строку со свойством ? Заранее Большое Спасибо за помощь!!!
Sub ComboChange(cb As ComboBox) If Not Events Then Exit Sub ActiveCell.Value = cb.Value HideCombo cb End Sub
Private Sub ComboBox1_Change() ComboChange Me.ComboBox1 End Sub
Private Sub ComboBox2_Change() ComboChange Me.ComboBox2 End Sub
Private Sub ComboBox3_Change() ComboChange Me.ComboBox3 End Sub
Sub FillCombo(cb As ComboBox, validList As String) Dim cell As Range cb.Clear For Each cell In Range(validList).Cells cb.AddItem cell Next cb.ListRows = Range(validList).Cells.Count cb.Value = ActiveCell.Value: cb.Font.Size = 10 End Sub
Sub HideCombo(cb As ComboBox) With cb .Top = 0: .Left = 0: .Width = 0: .Height = 0 End With End Sub
Sub ShowCombo(cb As ComboBox, Target As Range) With cb .Top = Target.Top: .Left = Target.Left .Width = Target.Width + 16: .Height = Target.Height End With End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not (Intersect(Target, [e4:e6]) Is Nothing) Then Events = False ShowCombo Me.ComboBox1, Target FillCombo Me.ComboBox1, ValidationList1 Events = True End If
If Not (Intersect(Target, [b4:b6]) Is Nothing) Then Events = False ShowCombo Me.ComboBox2, Target FillCombo Me.ComboBox2, ValidationList2 Events = True End If
If Not (Intersect(Target, [h4:h6]) Is Nothing) Then Events = False ShowCombo Me.ComboBox1, Target FillCombo Me.ComboBox1, ValidationList3 Events = True End If
End Sub
Здравствуйте!
Помогите, пожалуйста разобраться: как нужно присвоить диапазоны для ValidationList (с 1-го по 3-ий), что бы данные брались не с Листа2 (как сейчас), а брались бы с Листа3 ? Ещё не могу присвоить свойство MatchRequired = True (нельзя ввести значения, отличные от списка) для ComboBox1, куда нужно добавить строку со свойством ? Заранее Большое Спасибо за помощь!!!
Sub ComboChange(cb As ComboBox) If Not Events Then Exit Sub ActiveCell.Value = cb.Value HideCombo cb End Sub
Private Sub ComboBox1_Change() ComboChange Me.ComboBox1 End Sub
Private Sub ComboBox2_Change() ComboChange Me.ComboBox2 End Sub
Private Sub ComboBox3_Change() ComboChange Me.ComboBox3 End Sub
Sub FillCombo(cb As ComboBox, validList As String) Dim cell As Range cb.Clear For Each cell In Range(validList).Cells cb.AddItem cell Next cb.ListRows = Range(validList).Cells.Count cb.Value = ActiveCell.Value: cb.Font.Size = 10 End Sub
Sub HideCombo(cb As ComboBox) With cb .Top = 0: .Left = 0: .Width = 0: .Height = 0 End With End Sub
Sub ShowCombo(cb As ComboBox, Target As Range) With cb .Top = Target.Top: .Left = Target.Left .Width = Target.Width + 16: .Height = Target.Height End With End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not (Intersect(Target, [e4:e6]) Is Nothing) Then Events = False ShowCombo Me.ComboBox1, Target FillCombo Me.ComboBox1, ValidationList1 Events = True End If
If Not (Intersect(Target, [b4:b6]) Is Nothing) Then Events = False ShowCombo Me.ComboBox2, Target FillCombo Me.ComboBox2, ValidationList2 Events = True End If
If Not (Intersect(Target, [h4:h6]) Is Nothing) Then Events = False ShowCombo Me.ComboBox1, Target FillCombo Me.ComboBox1, ValidationList3 Events = True End If
Sub FillCombo(cb As ComboBox, validList As String) Dim cell As Range cb.Clear For Each cell In Sheets(2).Range(validList).Cells cb.AddItem cell Next cb.ListRows = Range(validList).Cells.Count cb.Value = ActiveCell.Value: cb.Font.Size = 6 End Sub
[/vba]
С MatchRequired = True можно зайти в свойства комбобокса и добавить один раз вручную. Но что-то не срабатывает...
С второго листа так:
[vba]
Code
Sub FillCombo(cb As ComboBox, validList As String) Dim cell As Range cb.Clear For Each cell In Sheets(2).Range(validList).Cells cb.AddItem cell Next cb.ListRows = Range(validList).Cells.Count cb.Value = ActiveCell.Value: cb.Font.Size = 6 End Sub
[/vba]
С MatchRequired = True можно зайти в свойства комбобокса и добавить один раз вручную. Но что-то не срабатывает...Hugo