Как передать выделение в форме переменной в VBA - PullRequest
0 голосов
/ 22 ноября 2018

У меня возникли проблемы со следующим действием: мне нужно передать выбор из 5 различных драйверов (STIMA, STIMA_SEDE, LOTTO, STORICO, UNIFORME), выполненных в форме, в переменную в VBA и выполнить поиск в соответствующем столбце вмой рабочий лист.

До сих пор я пробовал два способа, к сожалению, без результатов:

Первый способ:

    Private Sub UserForm_Initialize()

Dim rngDriver  As Range
Dim ws As Worksheet

Set ws = Worksheets("Data validation")

For Each rngDriver In ws.Range("Drivers")
    Me.cbDriver.AddItem rngDriver.Value
Next rngDriver

End Sub

Private Sub OKbtn_Click()
Dim destValues() As Variant, driverValues() As Variant, totalDriver As Double
    Dim totalValue As Double, offsetDriverCol As Integer, deltaPerc() As Double
    Dim i As Long, j As Long, k As Long, decimalPart As Double, driverRange As Range
    Dim driverCol As Integer, modCol As Integer, DestRange As Range
...
 driverCol = 2
    Do While Cells(23, driverCol).Value <> frmDistribuisci.cbDriver.Value
        driverCol = driverCol + 1
    Loop

Второй способ:

...
If frmDistribuisci.cbDriver.Value Is LOTTO Then
        driverCol = 2
        Do While Cells(23, driverCol).Value <> "Lotto"
            driverCol = driverCol + 1
        Loop
        End If
        'Identificazione colonna driver Stima
        If frmDistribuisci.cbDriver.Value Is STIMA Then
        driverCol = 2
        Do While Cells(23, driverCol).Value <> "Stima"
            driverCol = driverCol + 1
        Loop
        End If
        'Identificazione colonna driver Stima da sede
        If frmDistribuisci.cbDriver.Value Is STIMA_SEDE Then
        driverCol = 2
        Do While Cells(23, driverCol).Value <> "Stima da sede"
            driverCol = driverCol + 1
        Loop
        End If
        'Identificazione colonna driver Storico
        If frmDistribuisci.cbDriver.Value Is STORICO Then
        driverCol = 2
        Do While Cells(23, driverCol).Value <> "Storico"
            driverCol = driverCol + 1
        Loop
        End If

Отладка этого кода, кажется, пропускает шаги If, а также первое решение, так что я застрял ...

Кто-нибудь имеет представление о том, каксделать это?Буду очень признателен, заранее спасибо!

1 Ответ

0 голосов
/ 22 ноября 2018

Это недопустимый синтаксис для сравнения значений:

If frmDistribuisci.cbDriver.Value Is LOTTO Then

Это должно быть If … = … Then, а LOTTO рассматривается как тип / класс (из-за оператора Is, которыйиспользуется для чего-то еще целиком), а не как предполагаемая строка.Строковые литералы должны быть разделены двойными кавычками:

If frmDistribuisci.cbDriver.Value = "LOTTO" Then

Это должно работать как задумано.

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