powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Диапазон данных ячеек, не получается сформировать
8 сообщений из 8, страница 1 из 1
Диапазон данных ячеек, не получается сформировать
    #34195607
AnatolyOil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Вот такая проблема:
На листе есть кнопка-список значений "Drop Down 7". Сделано, чтобы можно было выбирать только заранее внесенные значения. Список значений формируется по диапазону ячеек. Первоначально вручную, но затем есть необходимость изменить его макросом.
Вот так, к примеру:

Sheets("Sheet1").Select
ActiveSheet.Shapes(Drop Down 7).Select
With Selection
.ListFillRange = "SPR!$C$5:$C$11" ' работает
' .ListFillRange = Range(Cells(RowFirst, ColFirst), Cells(RowLast, ColFirst)) ' не работает
End With

У меня есть номера столбцов и строк, формирующих диапазон. Это переменные RowFirst, ColFirst, RowLast, ColFirst. Как правильно заполнить параметр ListFillRange? Учитывая еще и имя листа (SPR).
Прошу, помогите плз.
...
Рейтинг: 0 / 0
Диапазон данных ячеек, не получается сформировать
    #34195650
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
ListFillRange = "SPR!$" & ColumnNumberToLetters(ColFirst) _
            & "$" & RowFirst _
            & ":$" & ColumnNumberToLetters(ColLast) _
            & "$" & RowLast


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Function ColumnNumberToLetters(ColumnNumber As Long) As String
Dim lngMOD As Long
Dim lngDIV As Double
Dim Character1 As String
Dim Character2 As String
Const LettersInAlphabet =  26 
    lngMOD = ColumnNumber Mod (LettersInAlphabet)
    If lngMOD =  0  Then lngMOD =  26 
    
    lngDIV = Round((ColumnNumber - lngMOD) / LettersInAlphabet)
    
    Character1 = Chr(Asc("A") + lngMOD -  1 )
    
    If lngDIV =  0  Then
        Character2 = ""
    Else
        Character2 = Chr(Asc("A") + lngDIV -  1 )
    End If
    
    ColumnNumberToLetters = Character2 & Character1
        
End Function
...
Рейтинг: 0 / 0
Диапазон данных ячеек, не получается сформировать
    #34195852
AnatolyOil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работает, спасибо. Только это обходной путь, как я понял - формирование диапазона "вручную" и перевод номеров в буквы. Но все равно - благодарю!
...
Рейтинг: 0 / 0
Диапазон данных ячеек, не получается сформировать
    #34195939
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в каком смысле обходной? а как нужно?
...
Рейтинг: 0 / 0
Диапазон данных ячеек, не получается сформировать
    #34196007
AnatolyOil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я подозревал, что есть способ с использованием встроенного функционала EXCEL. Ведь в вашем примере вы (точнее мы) вручную формируем, "склеиваем" диапазон из переменных, используем дополнительную самостоятельную функцию. Громоздко. Хотелось бы что-то типа моей неработающей строки - компактно и понятно.
...
Рейтинг: 0 / 0
Диапазон данных ячеек, не получается сформировать
    #34196208
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AnatolyOilДобрый день. Вот такая проблема:
На листе есть кнопка-список значений "Drop Down 7". Сделано, чтобы можно было выбирать только заранее внесенные значения. Список значений формируется по диапазону ячеек. Первоначально вручную, но затем есть необходимость изменить его макросом.
Вот так, к примеру:

Sheets("Sheet1").Select
ActiveSheet.Shapes(Drop Down 7).Select
With Selection
.ListFillRange = "SPR!$C$5:$C$11" ' работает
' .ListFillRange = Range(Cells(RowFirst, ColFirst), Cells(RowLast, ColFirst)) ' не работает
End With

У меня есть номера столбцов и строк, формирующих диапазон. Это переменные RowFirst, ColFirst, RowLast, ColFirst. Как правильно заполнить параметр ListFillRange? Учитывая еще и имя листа (SPR).
Прошу, помогите плз.
просто в ListFillRange передается текстовая строка, поэтому достаточно
Код: plaintext
       .ListFillRange = Range(Cells(RowFirst, ColFirst), Cells(RowLast, ColFirst)).Address
...
Рейтинг: 0 / 0
Диапазон данных ячеек, не получается сформировать
    #34196234
Zaratus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
With ActiveSheet
    .Shapes("Drop Down 7").ControlFormat.ListFillRange = "'" & .Name & "'!" & _
        .Range(.Cells(RowFirst, ColFirst), .Cells(RowLast, ColFirst)).Address
End With
...
Рейтинг: 0 / 0
Диапазон данных ячеек, не получается сформировать
    #34196287
AnatolyOil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.Range(.Cells(RowFirst, ColFirst), .Cells(RowLast, ColFirst)).Address

Вот! Вот этого я и хотел! Не нашел св-ва Address . Работает. Спасибо!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Диапазон данных ячеек, не получается сформировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]