Я пытаюсь написать макрос VBA, который принимает значения ячеек в заданном столбце, строка за строкой, и собирает SQL-запрос для копирования.Он в основном объединяет фрагменты текста и переменные в ячейке.Для запроса требуются номера карт и порядковые номера, следовательно, переменные.
Макрос почти готов, но он застревает в бесконечном цикле while.
Sub Query()
Dim Row As Integer
Row = 8
Dim Cardnumber As String
Cardnumber = Range("D" & Row)
Dim Number As Integer
Number = 1
Range("E30").Select
ActiveCell.Value = "SELECT cardnumber, first_name || ' ' || last_name FROM ( SELECT cardnumber, first_name, last_name, c.OrderNo FROM ag_cardholder ch, (SELECT '%" & Cardnumber & "%' cardmask, " & Number & " OrderNo from dual "
While IsNull(Cardnumber) = False
Row = Row + 1
Number = Number + 1
Cardnumber = Range("D" & Row)
ActiveCell.Value = ActiveCell.Value & "UNION ALL SELECT '%" & Cardnumber & "%', " & Number & " OrderNo from dual "
Wend
ActiveCell.Value = ActiveCell.Value & ") c WHERE ch.cardnumber LIKE c.cardmask ORDER BY c.OrderNo ) t"
End Sub
Я пробовал IsEmpty() вместо IsNull (), результат тот же.Пожалуйста, дайте мне знать, что мне здесь не хватает.Кроме того, не стесняйтесь давать мне советы, как сделать код более элегантным, так как это моя первая попытка в VBA.Заранее благодарим вас за ваши усилия.