В файле два листа "ReportS" - отчет, и "Nomenclature" - справочники. На листе "ReportS" есть работающие связанные списки, созданные через "проверку данных": "Категории" и "Номенклатура". Каждому элементу из "умной" таблицы "Категории" соответствует "умная" таблица Номенклатуры с таким же названием. При наличии пробелов в названиях Категорий происходит замена на "_". Значения из списков "Категории" и "Номенклатура" использовались как условия для создания отчета продаж, реализованном с помощью формул (самого отчета в примере нет, дабы не загромождать). Решил заменить стандартные списки на ComboBox. Первый ComboBox1 работает. Пытался использовать в ComboBox2 переменную, которой присваивается значение из ComboBox1. Но не работает. Прошу помочь.
[vba]
Код
Private Sub ComboBox1_Change() Worksheets("ReportS").ComboBox2.Clear With Worksheets("Nomenclature") Worksheets("ReportS").ComboBox1.ListFillRange = "'" & .Name & "'!" & .ListObjects("Категорія").ListColumns("Категорія").DataBodyRange.Address End With End Sub
[/vba]
[vba]
Код
Sub ComboBox2_Change() Dim ComboBox1Value As String ComboBox1Value = Replace(ComboBox1.Value, " ", "_") With Worksheets("Nomenclature") Worksheets("ReportS").ComboBox2.ListFillRange = "'" & .Name & "'!" & .ListObjects("ComboBox1Value").ListColumns("ComboBox1Value").DataBodyRange.Address End With End Sub
[/vba]
И еще вопрос, а то не совсем понимаю. Возможно ли использовать значение, выбранное в ComboBox, в обычных формулах Excel? Т.е., если при использовании обычных списков, я могу подставить в формулу значение из ячейки (например, как условие в функции "ЕСЛИ"), то как теперь это сделать при использовании ComboBox? Или это возможно только через предварительную запись значения из ComboBox в какую-то ячейку (Cells(ХХ, ХХ) = ComboBox1.Value), и в формуле уже ссылаться на нее?
Здравствуйте.
В файле два листа "ReportS" - отчет, и "Nomenclature" - справочники. На листе "ReportS" есть работающие связанные списки, созданные через "проверку данных": "Категории" и "Номенклатура". Каждому элементу из "умной" таблицы "Категории" соответствует "умная" таблица Номенклатуры с таким же названием. При наличии пробелов в названиях Категорий происходит замена на "_". Значения из списков "Категории" и "Номенклатура" использовались как условия для создания отчета продаж, реализованном с помощью формул (самого отчета в примере нет, дабы не загромождать). Решил заменить стандартные списки на ComboBox. Первый ComboBox1 работает. Пытался использовать в ComboBox2 переменную, которой присваивается значение из ComboBox1. Но не работает. Прошу помочь.
[vba]
Код
Private Sub ComboBox1_Change() Worksheets("ReportS").ComboBox2.Clear With Worksheets("Nomenclature") Worksheets("ReportS").ComboBox1.ListFillRange = "'" & .Name & "'!" & .ListObjects("Категорія").ListColumns("Категорія").DataBodyRange.Address End With End Sub
[/vba]
[vba]
Код
Sub ComboBox2_Change() Dim ComboBox1Value As String ComboBox1Value = Replace(ComboBox1.Value, " ", "_") With Worksheets("Nomenclature") Worksheets("ReportS").ComboBox2.ListFillRange = "'" & .Name & "'!" & .ListObjects("ComboBox1Value").ListColumns("ComboBox1Value").DataBodyRange.Address End With End Sub
[/vba]
И еще вопрос, а то не совсем понимаю. Возможно ли использовать значение, выбранное в ComboBox, в обычных формулах Excel? Т.е., если при использовании обычных списков, я могу подставить в формулу значение из ячейки (например, как условие в функции "ЕСЛИ"), то как теперь это сделать при использовании ComboBox? Или это возможно только через предварительную запись значения из ComboBox в какую-то ячейку (Cells(ХХ, ХХ) = ComboBox1.Value), и в формуле уже ссылаться на нее?Jenialij
Ошибку у себя нашел. Для ComboBox2 названия столбцов должны быть с пробелами.
[vba]
Код
Sub ComboBox2_Change()
Dim ComboBox1Value As String, ComboBox1Value2 As String ComboBox1Value = Replace(ComboBox1.Value, " ", "_") ComboBox1Value2 = ComboBox1.Value
With Worksheets("Nomenclature") Worksheets("ReportS").ComboBox2.ListFillRange = "'" & .Name & "'!" & .ListObjects("ComboBox1Value").ListColumns("ComboBox1Value2").DataBodyRange.Address End With End Sub
[/vba]
Но все равно не работает.
Ошибку у себя нашел. Для ComboBox2 названия столбцов должны быть с пробелами.
[vba]
Код
Sub ComboBox2_Change()
Dim ComboBox1Value As String, ComboBox1Value2 As String ComboBox1Value = Replace(ComboBox1.Value, " ", "_") ComboBox1Value2 = ComboBox1.Value
With Worksheets("Nomenclature") Worksheets("ReportS").ComboBox2.ListFillRange = "'" & .Name & "'!" & .ListObjects("ComboBox1Value").ListColumns("ComboBox1Value2").DataBodyRange.Address End With End Sub