Do Loop VBA Excel на Mac Office 2016 - PullRequest
0 голосов
/ 28 августа 2018

У меня есть этот код для генерации партии штрих-кодов с использованием формы. Моя дилемма - когда я использовал файл на моем Mac, он не работает должным образом. Кажется, что количество цикла очень необычно увеличивается, и чем дольше я его использую, тем больше цикл умножается, хотя пакет кода верен только в том случае, если он повторяется снова. Кстати, ошибок даже не было.

Пожалуйста, прокомментируйте. Ниже приведен код, который я использовал, и прогноз результата.

Sub Example()
    InventoryLog.Activate

    er = Cells(Rows.count, 1).End(xlUp).Offset(1, 0).Row
    Cells(er, 1) = TemporaryDataHolder.Range("StockInventoryYear").value
    Cells(er, 2) = TemporaryDataHolder.Range("StockInventoryMonth").value
    Cells(er, 3) = TemporaryDataHolder.Range("SIPONumberLine").value
    Cells(er, 4) = TemporaryDataHolder.Range("SIPurchaseInvoiceDateLine").value
    Cells(er, 5) = TemporaryDataHolder.Range("SIPurchaseInvoiceNumberLine").value
    Cells(er, 6) = TemporaryDataHolder.Range("SIProductNameLine").value
    Cells(er, 7) = TemporaryDataHolder.Range("SIBarcodeStart").value & "-" & TemporaryDataHolder.Range("SIBarcodeEnd").value
    Cells(er, 8) = TemporaryDataHolder.Range("SIQuantityLine").value
    Cells(er, 9) = TemporaryDataHolder.Range("SIBarcodeStart").value
    Cells(er, 10) = "In"
    Cells(er, 11) = "N/A"
    Cells(er, 12) = TemporaryDataHolder.Range("SILoggedByLine").value
    Cells(er, 13) = Now()

    Cells(er + 1, 1) = TemporaryDataHolder.Range("StockInventoryYear").value
    Cells(er + 1, 2) = TemporaryDataHolder.Range("StockInventoryMonth").value
    Cells(er + 1, 3) = TemporaryDataHolder.Range("SIPONumberLine").value
    Cells(er + 1, 4) = TemporaryDataHolder.Range("SIPurchaseInvoiceDateLine").value
    Cells(er + 1, 5) = TemporaryDataHolder.Range("SIPurchaseInvoiceNumberLine").value
    Cells(er + 1, 6) = TemporaryDataHolder.Range("SIProductNameLine").value
    Cells(er + 1, 7) = TemporaryDataHolder.Range("SIBarcodeStart").value & "-" & TemporaryDataHolder.Range("SIBarcodeEnd").value
    Cells(er + 1, 8) = TemporaryDataHolder.Range("SIQuantityLine").value
    Cells(er + 1, 9) = SIBarcodeStartTextBox.text + 1
    Cells(er + 1, 10) = "In"
    Cells(er + 1, 11) = "N/A"
    Cells(er + 1, 12) = TemporaryDataHolder.Range("SILoggedByLine").value
    Cells(er + 1, 13) = Now()

    Do
        Cells(Rows.count, 1).End(xlUp).Offset(1, 0).Rows.Select

        ActiveCell.value = TemporaryDataHolder.Range("StockInventoryYear").value
        ActiveCell.Offset(0, 1) = TemporaryDataHolder.Range("StockInventoryMonth").value
        ActiveCell.Offset(0, 2) = TemporaryDataHolder.Range("SIPONumberLine").value
        ActiveCell.Offset(0, 3) = TemporaryDataHolder.Range("SIPurchaseInvoiceDateLine").value
        ActiveCell.Offset(0, 4) = TemporaryDataHolder.Range("SIPurchaseInvoiceNumberLine").value
        ActiveCell.Offset(0, 5) = TemporaryDataHolder.Range("SIProductNameLine").value
        ActiveCell.Offset(0, 6) = TemporaryDataHolder.Range("SIBarcodeStart").value & "-" & TemporaryDataHolder.Range("SIBarcodeEnd").value
        ActiveCell.Offset(0, 7) = TemporaryDataHolder.Range("SIQuantityLine").value
        Cells(Rows.count, 9).End(xlUp).Select
        ActiveCell.Offset(1, 0).value = Selection.value + 1
        ActiveCell.Offset(1, 1) = "In"
        ActiveCell.Offset(1, 2) = "N/A"
        ActiveCell.Offset(1, 3) = TemporaryDataHolder.Range("SILoggedByLine").value
        ActiveCell.Offset(1, 4) = Now()

        Cells(Rows.count, 9).End(xlUp).Select
        If Selection.value = SIBarcodeEndTextBox.text Then Exit Do
    Loop

    Application.DisplayAlerts = False
End Sub

Результат кода:

enter image description here

...