Пользователь может выбрать один из месяцев например "МАРТ" необходимо сделать цикл чтобы макрос обработал "март" потом "3 мес" потом "апрель". То есть выбранное значение плюс еще два следующих. Я предполагал что если добавить в код цикл в виде, произойдет чудо и все заработает, чуда не было. Прошу опытный взгляд для решения тривиальной задачи
Код
For p = 0 To 2 CombBox1.ListIndex = ComboBox1.ListIndex + p
произойдет чудо и все заработает, чуда не было. Прошу опытный взгляд для решения тривиальной задачи
Код
otbor = FuncOtbor(kategorii(j), Workbooks(wkbName).Sheets(ComboBox1.Value).Cells(k, 33), Workbooks(wkbName).Sheets(ComboBox1.Value).Cells(k, 45))
If otbor Then
For p = 0 To 2
CombBox1.ListIndex = ComboBox1.ListIndex + p
Cells(AnRows, 2) = Workbooks(wkbName).Sheets(ComboBox1.Value).Cells(k, 1)
If AnRows = AnRowsKat + 1 Then
Call FillRow("B", AnRows, DiapazonVPR)
Call ColorTheme(AnRows)
End If
Range("A" & CStr(AnRows)).Interior.Pattern = xlLightUp ' штриховка первого столбца заливка
AnRows = AnRows + 1
Next
End If
End If
то есть задача сводится к тому что необходимо изменить значения которое будет выдавать комбо бокс. Если выбрали второе значение "Февраль", то в CombBox1.ListIndex будет хранится "1", мы должны повысить значение на "+1" при следующем проходе получим CombBox1.ListIndex = 2 Вот тут я не пойму как после того что мы получили вот это CombBox1.ListIndex = 2 получить с ComboBox1.Value = "март"
Kentavrik7,приложите файл с образцом данных и с Вашим комбобоксом. Может, Ваша задача решится другим способом. Например, на первый взгляд, мне кажется, что список для комбобокса можно хранить на листе, тогда и заморочек типа "CombBox1.ListIndex" можно будет избежать
Kentavrik7, столько текста с описанием вашего каламбура, а так и непонятно что нужно на выходе. Плюс название темы совсем ни о чем. Задача ведь не в цикле, насколько я понимаю.
Kentavrik7 написал: необходимо сделать цикл чтобы макрос обработал "март" потом "3 мес" потом "апрель". То есть выбранное значение плюс еще два следующих.
Что следует понимать под обработкой? И покажите Ваш файл-пример - не рисовать же нам форму с этим ComboBox.
_Igor_61 написал: что список для комбобокса можно хранить на листе
нет на листе не получитсмя
Цитата
Dima S написал: столько текста с описанием вашего каламбура, а так и непонятно что нужно на выходе.
Нужно чтобы при выборе значения с комбобокса можно было прогнать по всему коду сначала его, потом следующее значение потом следующее. Можно организовать более проще конечно (я не знаю как это кодом написать) Изменить массив на : .List = Array("1 квартал", "2 квартал", "3 квартал", "4 квартал")
и при выборе в комбобоксе пользователем например "1 квартал", пройти циклом по коду, сначала "январь" затем "февраль" потом "март". Вопрос по такому варианту следующий как организовать это? Я как понимаю через CombBox1.ListIndex могу выдернуть число от 0 до 3 и через "if" пройти, но тоже вопрос как пройти по трем месяцам? или можно как то по другому? БМВ, спасибо, если вот так как я выше описал может получится более лаконично все организовать
Прочитал несколько раз , так и не понял что нужно сделать. Приложите файл пример с кодом который есть, и вкратце что вы хотите иметь на выходе. Только не нужно очередной раз писать ComboBox.ListIndex (а то уже глаза мозолит).
"Все гениальное просто, а все простое гениально!!!"
Kentavrik7: Изменить массив на :.List = Array("1 квартал", "2 квартал", "3 квартал", "4 квартал")и при выборе в комбобоксе пользователем например "1 квартал", пройти циклом по коду, сначала "январь" затем "февраль" потом "март". Вопрос по такому варианту следующий как организовать это?
ответ по цитате, не вникая в суть (вдруг угадал): смотрите, если массивы равны, то второго цикла не нужно, поскольку, зная индекс выбранного элемента, например arr_1(5), мы сможем вытянуть по нему (индексу) соответствующий элемент другого массива, например arr_2(5)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Если на листе/форме размещен ComboBox1, то код в модуле этого же листа/формы:
Код
' Выполнить 1 раз - заполнить комбобокс
Sub Init()
Me.ComboBox1.List = Array("январь", "февраль", "2 мес.", "март", "3 мес.", "апрель", "4 мес.", "май", "5 мес.", "июнь", "6 мес.", "июль", "7 мес.", "август", "8 мес.", "сентябрь", "9 мес.", "октябрь", "10 мес.", "ноябрь", "11 мес.", "декабрь", "12 мес.")
End Sub
' После выбора значения в комбобоксе этот код запишет в a() 3 последовательных значения
Sub Test()
Dim a(1 To 3)
With Me.ComboBox1
If .ListIndex < 0 Then Exit Sub
a(1) = .Value
On Error Resume Next ' <-- на случай выбора "декабрь" или "12 мес."
a(2) = .List(.ListIndex + 1)
a(3) = .List(.ListIndex + 2)
End With
Debug.Print a(1), a(2), a(3)
End Sub