У меня есть вопрос, я пытался найти в Интернете много, но havent нашел решение, которое поможет мне.dropdownmenu автоматически проверяет флажок
Heres my problem: У меня есть выпадающее меню в sheet3 (ws_step3 в vba) в ячейке J3. Выпадающее меню имеет 9 вариантов, где 2 из этих опций автоматически следует включить флажок (назовём флажок "CoffeeCup")
9-варианты A, B, C и т.д.
Im ищет VBA код, который автоматически проверяет, что флажок, если 2 из вариантов проверяются (позволяет сказать, что его C и F, который проверяет флажок)
Im использованием активных флажков X, и с помощью выпадающего меню
Надежда кто-нибудь может мне помочь ,
TY заранее от новичка в VBA :-)
/Klaus
Edit # 1 - Пытались это первый
Private Sub Worksheet_Calculate()
If ws_Step3.Range("J3").Value = "C" Then
ws_Step3.CheckBoxes("Coffeecup").Value = xlOn
Else
ws_Step3.CheckBoxes("Coffeecup").Value = xlOff
End If
End Sub
Edit # 2 - Кредит DDuffy за помощь на этом - у меня уже есть это в моем Private Sub Worksheet_Change (ByVal Target As Range) для J3
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$J$3" Then
'Hvis værdien hedder "fremført cykelsti":
If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(2, 2).Value Then
'Default value sættes til det første i dropdown
ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(3, 2).Value
End If
'Hvis værdien hedder "Afkortet cykelsti":
If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(13, 2).Value Then
'Default value sættes til det første i dropdown
ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(14, 2).Value
End If
'Hvis værdien hedder "Venstresving fra langsiden af T-kryds":
If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(17, 2).Value Then
'Default value sættes til det første i dropdown
ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(18, 2).Value
End If
'Hvis værdien hedder "Cykelbane":
If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(21, 2).Value Then
'Default value sættes til det første i dropdown
ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(22, 2).Value
End If
'Hvis værdien hedder "Ingen cykelfaciliteter":
If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(27, 2).Value Then
'Default value sættes til det første i dropdown
ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(28, 2).Value
End If
'Hvis værdien hedder "Højresvingsshunt":
If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(31, 2).Value Then
'Default value sættes til det første i dropdown
ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(32, 2).Value
End If
'Hvis værdien hedder "Hollænderboks":
If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(42, 2).Value Then
'Default value sættes til det første i dropdown
ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(43, 2).Value
End If
'Hvis værdien hedder "Cykelsti i eget trace":
If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(46, 2).Value Then
'Default value sættes til det første i dropdown
ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(47, 2).Value
End If
'Hvis værdien hedder "Tilladt højresving for rødt":
If ws_Step3.Cells(3, 10).Value = WS_DDL.Cells(57, 2).Value Then
'Default value sættes til det første i dropdown
ws_Step3.Cells(8, 12).Value = WS_DDL.Cells(58, 2).Value
End If
End If
End Sub
И DDuffys внушения со тезы здесь (изменили его к реальной проблеме, не более обиняков)
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
Application.EnableEvents = False
On Error GoTo Errortrap
'~~> Change it to the relevant string with which you want to compare
StringToCheck1 = "Hoejresvingsshunt"
StringToCheck2 = "Tilladt Hoejresving for roedt"
If Not Intersect(Target, Range("J3")) Is Nothing Then
'~~> Check for the cell value
If Target.Value = StringToCheck1 Then
'change checkbox value to true if it matches
Worksheets("ws_Step3").HoejreD.Value = True
ElseIf Target.Value = StringToCheck2 Then
'change checkbox value to true if it matches
Worksheets("ws_Step3").HoejreD.Value = True
Else
'change checkbox value to false if it doesn't match
Worksheets("ws_Step3").HoejreD.Value = False
End If
End If
LetsContinue:
Application.EnableEvents = True
Exit Sub
Errortrap:
MsgBox Err.Description
Resume LetsContinue
End Sub
Мой вопрос теперь, как я объединить их с рабочим листом изменения?
У меня есть образ моего листа здесь: http://imgur.com/D4NXDI8
Что вы пробовали? Тренировка - забавная часть. Вы хотите думать о своем псевдокоде, а затем перевести столько, сколько сможете, в VBA. так что вам нужно что-то вроде: Если ws_steps.Text равно «C» и «F», тогда CheckBoxName.Value равно true. Попробуйте преобразовать это в VBA и покажите нам, что у вас есть. Люди здесь не склонны делать вашу работу за вас, но есть много, которые помогут, если вы застрянете. – DDuffy
Забыл упомянуть, что если вы выбрали опцию C/F и хотите повторно выбрать из раскрывающегося меню для любой опции A или B, флажок должен быть снят снова, но только для опции A или B, остальные должны оставить его выбраным, если он уже был выбран из chossing C/F. – Klaus
Пробовал это:.. Private Sub Worksheet_Calculate() Если ws_Step3.Range ("J3") Значение = "C" Тогда ws_Step3.CheckBoxes ("Coffeecup") Значение = xlOn Else ws_Step3.CheckBoxes ("Coffeecup") .Value = xlOff End If End Sub – Klaus