При вводе числа в ячейку выбрать диапазон ячеек и распечатать их - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь создать диапазонную печать, введя число в ячейку. Если человек вводит число 20 (это всего лишь пример, для реального он будет сканировать штрих-код и с формулой будет брать число из другой таблицы, но основы таковы) ... так, когда число 20 в ячейка, чтобы выбрать первые 20 строк из столбца B и распечатать этот выбор. Затем, чтобы удалить все 20 строк.

У меня есть только код печати:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim celltxt As String
celltxt = ActiveSheet.Range("D2").Text
If InStr(1, celltxt, "") Then

 Dim ws As Worksheet
 For Each ws In Worksheets
 If ws.Range("D2") <> "" Then
 Range("D2").PrintOut
 Range("E2").ClearContents
 Application.SendKeys ("{LEFT}")
 End If
 Next ws

Else

End If

End Sub

Этот код является простым кодом для печати ячейки, если ячейка не пуста. Я использую его, но мне нужно обновить его с вышеуказанной идеей. :)

Если у кого-то есть идеи, как его создать, я буду благодарен, поскольку я только начинающий VBA.

enter image description here

1 Ответ

0 голосов
/ 21 февраля 2020

Я тоже нашел решение для этого с FINALIZE

Private Sub Worksheet_Change(ByVal Target As Range)

Dim celltxt As String
Dim n As Range
'H2 is where the entry number is going to be
 Set n = Worksheets("Sheet1").Range("H2")
  On Error GoTo Finalise
 'Select Column C and H2 number
ActiveSheet.Range(Cells(1, 3), Cells(n, 3)).Select

celltxt = ActiveSheet.Range("H2").Text
If InStr(1, celltxt, "") Then
 Dim ws As Worksheet
 For Each ws In Worksheets
 If ws.Range("H2") <> "" Then
 Selection.PrintOut
 Range("H2").ClearContents
 'Application.SendKeys ("{LEFT}")
 End If
 Next ws

Else

End If
Finalise:
    Application.EnableEvents = True
    ActiveSheet.Range("H2").Select
End Sub

Далее ... Как я могу сделать код для получения данных из другого листа. Допустим, H2 находится на листе 1, а данные, которые следует выбрать ActiveSheet.Range(Cells(1, 3), Cells(n, 3)).Select, находятся на листе 2. В конце моего кода я использовал ActiveSheet.Range("H2").Select, но все еще нужно вернуться к H2 в Sheet1.

Также мой шаг после этого состоит в том, чтобы очистить содержимое всех выбранных строк после печати. ​​

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