BG Development


  Reply to this topicStart new topicStart Poll

> Помощ за програмен код, Повтаряемост спрямо UserRange
Tihomir_Mitov
  Публикувано на: 23-02-2017, 15:48
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 3
Регистриран на: 23.02.17



Здравейте,

Сравнително нов съм в програмирането и за това ще ви помоля за малко помощ icon_smile.gif

Описание:

Имам таблица, която съдържа определена информация. Искам когато избера определен брой от редове, информацията да се попълва в template и веднага да се принтира, но това да се повтаря за всеки ред от избраните.

Написал съм код, който попълва информацията и веднага принтира нужният tempate (GCC), но го прави само за един ред, а не за целият диапазон. Целта е колкот редове избера, толкова копия да ми изкара с информацията за съответният ред. Информацията ми се дърпа от Sheet "Serial Numbers" колони 1,2 и 5, се пейства в Sheet GCC в клетки D10,D12 и D14.

Ще съм благодарен ако ми помогнете да си реша проблема.
---------
Private Sub CommandButton1_Click()

Dim UserRange As Range
Dim Totrownum As Integer
Dim i As Integer

Totrownum = 0
i = 0

Set UserRange = Application.InputBox(Prompt:="Select range by marking entire rows:", Title:="Range Select", Type:=8)
Totrownum = UserRange.Rows.Count
MsgBox ("Total number of selected rows: " & Totrownum)


Application.ScreenUpdating = False


Sheets("GCC").Range("D10").Value = UserRange.Cells(i + 1, 5)
Sheets("GCC").Range("D12").Value = UserRange.Cells(i + 1, 2)
Sheets("GCC").Range("D14").Value = UserRange.Cells(i + 1, 1)

Sheets("GCC").Select
Range("A1:E39").Select
Selection.PrintOut Copies:=1, Collate:=True
Sheets("Checking List").Select
Range("A1:D93").Select
Selection.PrintOut Copies:=1, Collate:=True
Sheets("GCC").Select
Range("D10:D14").Select
Selection.ClearContents




End Sub
PMEmail Poster
Top
Антон Яначков
Публикувано на: 23-02-2017, 20:36
Quote Post



Име: Антон Яначков
Група: Потребител
Ранг: Активен

Мнения: 156
Регистриран на: 27.07.16



Ти искаш при избиране на няколко реда от таблица Serial Numbers, да се принтира област от таблица GCC, която ползваш като тамплетна, но броя на копията да съответства на избраните редове, като всяко копие е с информация взета от съответния ред. Ако правилно съм разбрал, то нещата ще работят с този сорс:


CODE


Sub Macro1()

On Error GoTo dolu
Set UserRange = Application.InputBox(Prompt:="Маркирай редове за принтиране:", Title:="Избор на редове", Type:=8)
Totrownum = UserRange.Rows.Count ' брой избрани редове
red = UserRange.Row ' номер на първия избран ред
MsgBox "Избрани са : " & Totrownum & " реда"
i = 0
For j = red To red + Totrownum - 1
i = i + 1
   Sheets("GCC").Range("D10").Value = UserRange.Cells(i, 5)
   Sheets("GCC").Range("D12").Value = UserRange.Cells(i, 2)
   Sheets("GCC").Range("D14").Value = UserRange.Cells(i, 1)

   Sheets("GCC").Select
   Range("A1:E39").Select
   'MsgBox "принтирам от таблица GSS A1:E39 с информация за ред=" & j
   Selection.PrintOut Copies:=1, Collate:=True
   'Почистване не е нужно, защото винаги заместващ информацията преди да принтираш
Next j

dolu:
End Sub


А бутона ще ти задейства макроса с този сорс:
CODE

Private Sub CommandButton1_Click()
Macro1
End Sub


Ето и линк към работещ пример:
Изтегли от ТУК
Махнал съм ненужните декларации и излишните операции, но съм добавил манипулатор на грешка, за да не ти брейква кода, когато затвориш InputBox без да избереш нищо.
Продължавай да дерзаеш, пожелавам ти успех!
PMEmail PosterUsers Website
Top
Tihomir_Mitov
Публикувано на: 23-02-2017, 21:19
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 3
Регистриран на: 23.02.17



Здравей, Антон,

Хиляди благодарности, работи перфектно!!! icon_wink.gif icon_wink.gif
Спести ми доста главоболия !!!

Надявам се, че няма да бъда нахален ако питам за още една добавка към кода?

След като задействам този макрос искам , като започне да принтира нужните копия от tamplate-a GCC, едновременоо с това да започне да принтира и друг sheet, който винаги да бъде различен и който аз да селектирам.

Благодаря!
Поздрави,
PMEmail Poster
Top
Антон Яначков
Публикувано на: 23-02-2017, 23:19
Quote Post



Име: Антон Яначков
Група: Потребител
Ранг: Активен

Мнения: 156
Регистриран на: 27.07.16



QUOTE (Tihomir_Mitov @ 23-02-2017, 21:19)
След като задействам този макрос искам ,  като започне да принтира  нужните копия от  tamplate-a GCC, едновременоо с това да започне да принтира и друг sheet, който винаги да бъде различен  и който аз да селектирам.

Не те разбирам, опитай се да изясниш въпроса.
PMEmail PosterUsers Website
Top
Tihomir_Mitov
Публикувано на: 24-02-2017, 05:53
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 3
Регистриран на: 23.02.17



Здравей,

GCC е бланка, която винаги се принтира, като стандартен документ, но към нея се добавя друг документ, който винаги е различен. Целта е когато започна да печатама GCC бланката, ексела да ме пита кой друг документ още искам да принтирам, така че да станат комплект.


Поздрави
PMEmail Poster
Top
Антон Яначков
Публикувано на: 24-02-2017, 10:43
Quote Post



Име: Антон Яначков
Група: Потребител
Ранг: Активен

Мнения: 156
Регистриран на: 27.07.16



QUOTE (Tihomir_Mitov @ 24-02-2017, 05:53)
Целта е когато започна да печатама GCC бланката, ексела да ме пита кой друг документ още искам да принтирам, така че да станат комплект.

Предлагам да добавиш форма в която да вкарваш един ListBox.
Сорс за формата:
CODE

'При активиране на формата запълваш ListBox с таблици между, които трябва да се избира
Private Sub UserForm_Activate()
   ListBox1.AddItem "Документ-1"
   ListBox1.AddItem "Документ-2"
   ListBox1.AddItem "Документ-3"
End Sub
'При кликане върху ListBox1 селектираш и принтираш
Private Sub ListBox1_Click()
   Sheets(ListBox1.Text).Select
   Selection.PrintOut Copies:=1, Collate:=True
End Sub


В първоначалния бутон, който ти задействаше макроса, добавяш ред, който да покаже формата:
CODE

Private Sub CommandButton1_Click()
   Macro1
   UserForm1.Show
End Sub

Другото остава непроменено.
Ето ти работещ пример, за да не се чудиш за каква форма ти говоря:
Изтегли пример от ТУК
PMEmail PosterUsers Website
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2015 | BG Development | All Rights Reserved
RSS 2.0