Удаление пробелов из динамического диапазона - PullRequest
0 голосов
/ 21 февраля 2019

Я понимаю, как использовать функцию смещения для динамического диапазона, но что если этот динамический диапазон находится в пределах определенного числа дополнительных столбцов?Например, скажем, у меня есть лист со столбцами A: N, а именованный диапазон относится к D2: E2.Если я добавлю еще два столбца, этот диапазон должен расшириться до D2: G2, но не включать столбцы F и далее.

В настоящее время я использую функцию смещения с функцией счетчика, чтобы сделать это, но в этом диапазоне есть несколько естественных пустых ячеек (из-за объединенных ячеек).Есть ли способ удалить эти пробелы для использования в раскрывающемся списке?

В настоящее время я определил имя как:

=OFFSET('Sheet 1'!$D$2,0,0,1,COUNTA('Sheet 1'!$D2:$ZZ2))

, которое возвращает все значения, которые я ищу, но также несколько пробелов, которые мне не нужны в раскрывающемся списке.,

В настоящее время я использую следующий код во время инициализации пользовательской формы, но, похоже, он тоже не работает:

Dim Rng As Range
Dim i As Long
Me.ComboBox1.RowSource = ""
    Set Rng = Range("Combo")
    For i = 1 To Rng.Rows.Count
        If Rng(i) <> "" Then
            Me.ComboBox1.AddItem Rng(i)
        End If
    Next i

Я также пытался

Dim aCell As Range, ws1 As Worksheet, lastColumn As Long,  stopColumn As Long


Set ws1 = Worksheets("sheet 1")

With ws1
lastColumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
stopColumn = lastColumn - 12
Me.ComboBox1.RowSource = ""
With ws1
    For Each aCell In .Range("D2", .Cells(2, stopColumn))
        If aCell.Value <> "" Then
            Me.ComboBox1.AddItem aCell.Value
        End If
    Next
End With

Хотя ни одна попытка не сработала, раскрывающийся список выпадающего списка пуст.

1 Ответ

0 голосов
/ 22 февраля 2019

Вторая часть кода выше фактически работала, я просто использовал неправильное имя процедуры.Я использовал UserForm2 и переименовал процедуру инициализации Private Sub UserForm2_Initialize(), когда вместо этого должно было быть `Private Sub UserForm_Initialize ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...