Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Диапазон данных ячеек, не получается сформировать / 8 сообщений из 8, страница 1 из 1
13.12.2006, 10:42:35
    #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
13.12.2006, 10:58:54
    #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
13.12.2006, 11:35:43
    #34195852
AnatolyOil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон данных ячеек, не получается сформировать
Работает, спасибо. Только это обходной путь, как я понял - формирование диапазона "вручную" и перевод номеров в буквы. Но все равно - благодарю!
...
Рейтинг: 0 / 0
13.12.2006, 11:51:57
    #34195939
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон данных ячеек, не получается сформировать
в каком смысле обходной? а как нужно?
...
Рейтинг: 0 / 0
13.12.2006, 12:04:05
    #34196007
AnatolyOil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон данных ячеек, не получается сформировать
Я подозревал, что есть способ с использованием встроенного функционала EXCEL. Ведь в вашем примере вы (точнее мы) вручную формируем, "склеиваем" диапазон из переменных, используем дополнительную самостоятельную функцию. Громоздко. Хотелось бы что-то типа моей неработающей строки - компактно и понятно.
...
Рейтинг: 0 / 0
13.12.2006, 12:54:56
    #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
13.12.2006, 12:59:51
    #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
13.12.2006, 13:10:53
    #34196287
AnatolyOil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон данных ячеек, не получается сформировать
.Range(.Cells(RowFirst, ColFirst), .Cells(RowLast, ColFirst)).Address

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


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