Копирование определенных строк VB в другие строки - PullRequest
0 голосов
/ 10 сентября 2018

Утро всем,

Еще один очень интересный вопрос типа. Я снова посмотрел и, возможно, неправильно понимаю, что читаю.

Я написал на прошлой неделе, что у меня возникли проблемы с отображением документа XLSX в документ CSV. Короче говоря, мы создаем форму заказа, защищенную от идиотов, в одном удобном для пользователя формате, который при нажатии на кнопку преобразуется в системную форму.

Пока мой код работает нормально -

Sub ButtonMacroLatest()
'Hide alerts
application.displayalerts = False
'
' Macro8 Macro
'

'Save to users device
    ChDir "U:\WINDOWS"
    ActiveWorkbook.SaveAs Filename:="U:\WINDOWS\OrderForm.xlsx", FileFormat:= _
        xlOpenXMLWorkbook, CreateBackup:=False

'Create new workbook and populate
    Workbooks.Add
    ActiveCell.FormulaR1C1 = "MSG"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "=[OrderForm.xlsx]Order!R[1]C"
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "=[OrderForm.xlsx]Order!R[1]C[3]"
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "1400008000"
    Range("E1").Select
    ActiveCell.FormulaR1C1 = "501346009175"
    Range("F1").Select
    ActiveCell.FormulaR1C1 = "=TODAY()"
    Range("G1").Select
    ActiveCell.FormulaR1C1 = "=Now()"
    Selection.NumberFormat = "[$-x-systime]h:mm:ss AM/PM"
    Range("I1").Select
    ActiveCell.FormulaR1C1 = "HDR"
    Range("J1").Select
    ActiveCell.FormulaR1C1 = "C"
    Range("K1").Select
    ActiveCell.FormulaR1C1 = "1400011281"
    Range("O1").Select
    ActiveCell.FormulaR1C1 = "=[OrderForm.xlsx]Order!R[1]C[3]"
    Range("P1").Select
    ActiveCell.FormulaR1C1 = "=[OrderForm.xlsx]Order!R2C4"
    Range("S1").Select
    ActiveCell.FormulaR1C1 = "STD"
    Range("T1").Select
    ActiveCell.FormulaR1C1 = "=[OrderForm.xlsx]Order!R5C2"
    Range("V1").Select
    ActiveCell.FormulaR1C1 = "=[OrderForm.xlsx]Order!R7C2"
    Range("W1").Select
    ActiveCell.FormulaR1C1 = "=[OrderForm.xlsx]Order!R8C2"
    Range("Y1").Select
    ActiveCell.FormulaR1C1 = "=[OrderForm.xlsx]Order!R9C2"
    Range("Z1").Select
    ActiveCell.FormulaR1C1 = "=[OrderForm.xlsx]Order!R12C2"
    Range("AB1").Select
    ActiveCell.FormulaR1C1 = "POS"
    Range("AE1").Select
    ActiveCell.FormulaR1C1 = "=Row()*10"
    Range("AF1").Select
    ActiveCell.FormulaR1C1 = "=[OrderForm.xlsx]Order!R15C3"
    Range("AG1").Select
    ActiveCell.FormulaR1C1 = "=[OrderForm.xlsx]Order!R15C1"
    Range("AH1").Select
    ActiveCell.FormulaR1C1 = "=[OrderForm.xlsx]Order!R15C2"
    Range("AI1").Select
    ActiveCell.FormulaR1C1 = "=[OrderForm.xlsx]Order!R15C5"
    Range("AJ1").Select
    ActiveCell.FormulaR1C1 = "=[OrderForm.xlsx]Order!R15C7"
    Range("AK1").Select
    ActiveCell.FormulaR1C1 = "GBP"
    Range("AM1").Select
    ActiveCell.FormulaR1C1 = "TRA"
    Range("AP1").Select
    ActiveCell.FormulaR1C1 = "=COUNTIF(C[-3], ""POS"")+COUNTIF(C[-3], ""HDR"")"


'Reinstate alerts
application.displayalerts = True
End Sub

Проблема, с которой я столкнулся, заключается в том, что мне нужно скопировать последний набор из пяти формул с путем к файлу (от AF до AJ) в строку 500, скажем, но только если в исходном листе есть что-то или мне нужно также сделать скидку / удалить нули, если они вставлены в новый лист. Имейте в виду, что это форматируется для загрузки, поэтому дополнительные 0 и т. Д. Просто вызовут ошибки.

Я обыскивал, но не мог найти ничего, что отвечало бы на это прямо, так что извините, если я что-то пропустил.

Я могу попробовать запись, но, конечно, это не работает с «IF», ​​так что все будет в камне.

Просто, чтобы уточнить остальные поля, также необходимо заполнить их вниз, но их не нужно увеличивать, поскольку они все время вытягиваются из одной и той же ячейки. Так есть ли способ кодирования этого в VB, чтобы избавить от необходимости делать это вручную? Я полагаю, я всегда могу записать это и использовать это. Я только спрашиваю, поскольку я уже на tpoic (так, чтобы быть немного дерзким).

Опять, извините, если я пропустил какие-либо статьи. Я не мог найти то, что я был после.

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