< návrat zpět

Obecná diskuse


Téma: tisk vba rss

Zaslal/a 16.6.2016 9:43

Zdravím, tisknu adresní štítky na balíky příklad: náklad je 250 ks balík je 200 ks má to tedy vytisknout 2 štítky označení 1/2 jako první balík ze dvou s balíkem 200 ks, a 2/2 jako druhý ze dvou se zbytkem 50ks. Pokud ale náklad 100 ks a balík 100 ks vytiskne se 1 štítek 1/1 náklad 100 ks a balík 100 ks OK.
Jak ale dám náklad třeba 211 ks a balík 200 ks dostanu 3 balíky 2x100 a jeden 11 ks ( mají býd jen 2 1x 100 a 1x 11ks) Můžete někdo poradit, kde je chyba v kódu?

Private Sub CommandButton21_Click()
Dim i, balik As Long
Dim adresa As String
Dim naklad As Long
Dim celychbaliku As Long
Dim poslednibalik As Long
'Dim zbytek As Long
EnvironConst1 = Environ("UserName")

Titulek_dialogu2 = "zadej náklad"
Titulek_dialogu3 = "zadej velikost v balíku"
Titulek_dialogu5 = "zadej adresu"

'pocet = InputBox(Titulek_dialogu)
naklad = InputBox(Titulek_dialogu2)

balik = InputBox(Titulek_dialogu3)

adresa = InputBox(Titulek_dialogu5)

celychbaliku = naklad / balik
poslednibalik = (naklad Mod balik)

If poslednibalik > 0 Then celychbaliku = celychbaliku + 1
If poslednibalik = 0 Then celychbaliku = celychbaliku

'If celychbaliku = celychbaliku Then balik = poslednibalik



For i = 1 To celychbaliku
Cells(30, 2).Value = i & "/" & celychbaliku
Cells(29, 4).Value = naklad

If i = celychbaliku And poslednibalik = 0 Then Cells(29, 2).Value = naklad
If i = celychbaliku And poslednibalik > 0 Then Cells(29, 2).Value = poslednibalik
If i < celychbaliku And poslednibalik > 0 Then Cells(29, 2).Value = balik
If i < celychbaliku And poslednibalik = 0 Then Cells(29, 2).Value = naklad
If i < celychbaliku Then Cells(29, 2).Value = balik

Cells(12, 2).Value = adresa
ActiveSheet.PageSetup.CenterFooter = ("&B&8 strany: " & i & " / " & celychbaliku)
ActiveSheet.PageSetup.LeftFooter = ("&B&8Uživatel: " & EnvironConst1)
''********* vloží do patičky listu - do levého oddílu ****&B&12 - font tučné velikost 8

'ActiveWindow.SelectedSheets.PrintOut ´******************Tisk na předvolenou
ActiveSheet.PrintOut Preview:=True '********************Ukázka před tiskem
Next i

End Sub

Zaslat odpověď >

#031767
elninoslov
Skôr ako začnem študovať kód, ujasnite si túto vetu
Jak ale dám náklad třeba 211 ks a balík 200 ks dostanu 3 balíky 2x100 a jeden 11 ks ( mají býd jen 2 1x 100 a 1x 11ks)

1x100
1x11
spolu 111 a nie 211

EDIT: Váš kód mi dá správne pri množstve 211 a veľkosti balíka 200, počet balíkov 2, z toho prvý o veľkosti 200 a druhý o veľkosti 11. No problemo.

EDIT2: Tak som to skúsil aj inak, tiež v pohode funguje, a dalo by sa ešte kratšie...
Private Sub CommandButton21_Click()
Dim i, balik As Long
Dim adresa As String
Dim naklad As Long
Dim celychbaliku As Long
Dim poslednibalik As Long
Dim baliku As Long

EnvironConst1 = Environ("UserName")

naklad = InputBox("zadej náklad")
balik = InputBox("zadej velikost v balíku")
adresa = InputBox("zadej adresu")

celychbaliku = naklad / balik
poslednibalik = (naklad Mod balik)
baliku = celychbaliku + (poslednibalik > 0 And 1)

Cells(29, 4).Value = naklad
Cells(12, 2).Value = adresa

For i = 1 To baliku
Cells(30, 2).Value = i & "/" & baliku
If i * balik <= naklad Then Cells(29, 2).Value = balik Else Cells(29, 2).Value = poslednibalik

ActiveSheet.PageSetup.CenterFooter = ("&B&8 strany: " & i & " / " & baliku)
ActiveSheet.PageSetup.LeftFooter = ("&B&8Uživatel: " & EnvironConst1)
''********* vloží do patičky listu - do levého oddílu ****&B&12 - font tučné velikost 8

'ActiveWindow.SelectedSheets.PrintOut ´******************Tisk na předvolenou
ActiveSheet.PrintOut Preview:=True '********************Ukázka před tiskem
Next i
End Sub
citovat
#031769
avatar
Díky moc,perfektní řešení 1
Mohl bych poprosit o ještě jeden algoritmus kde by přibyl ještě jeden InputBox " zbytkový balík "

( pobud je standardní balík zadaný př. 100ks, náklad př. 211 ks, pak se poslední balík se udělá samostatně jako 11 ks.
Při použití InputBox " zbytkový balík " by zbytkový balík do 20ti kusů byl připočítán k poslednímu balíku.
tj. 1 balík 100 ks a druhý poslední 111 kscitovat
#031772
avatar
upřesnění ten "zbytkový balík" by se zadal 220ks, standardní 200 - zbytek do 20 ks by se přihodil na poslední balíkcitovat
#031774
elninoslov
Otestujte. Ten zbytkový sa pýta na množstvo naviac, ktoré je považované ešte za také, aké sa dá pripočítať k poslednému balíku. Teda ak zadáte množstvo 211, balík 100, zbytok 20, tak dostanete balíky 100+111, ale by ste zadal zbytok iba 10, tak dostanete balíky 100+100+11
Private Sub CommandButton21_Click()
Dim i, balik As Long
Dim adresa As String
Dim naklad As Long
Dim celychbaliku As Long
Dim poslednibalik As Long
Dim baliku As Long
Dim jezbytkovy As Boolean, zbytek As Long

EnvironConst1 = Environ("UserName")

naklad = InputBox("zadej náklad")
balik = InputBox("zadej velikost v balíku")
zbytek = InputBox("zadej zbytkové množství v balíku")
adresa = InputBox("zadej adresu")

celychbaliku = naklad / balik
poslednibalik = (naklad Mod balik)
jezbytkovy = zbytek <> 0 And poslednibalik > 0 And poslednibalik <= zbytek
baliku = celychbaliku + ((Not jezbytkovy And poslednibalik > 0) And 1)

Cells(29, 4) = naklad
Cells(12, 2) = adresa

For i = 1 To baliku
Cells(30, 2) = i & "/" & baliku
If i * balik <= naklad Then Cells(29, 2) = balik + IIf(jezbytkovy And i = baliku, poslednibalik, 0) Else Cells(29, 2) = poslednibalik

ActiveSheet.PageSetup.CenterFooter = ("&B&8 strany: " & i & " / " & baliku)
ActiveSheet.PageSetup.LeftFooter = ("&B&8Uživatel: " & EnvironConst1)
''********* vloží do patičky listu - do levého oddílu ****&B&12 - font tučné velikost 8

'ActiveWindow.SelectedSheets.PrintOut ´******************Tisk na předvolenou
ActiveSheet.PrintOut Preview:=True '********************Ukázka před tiskem
Next i
End Sub

Mne to zadávanie ale nieje po chuti, a viac by sa mi páčilo ošetrenie chýb na nezadané čísla a ošetrenie vloženia znakov (nečísel), a ja by som si to urobil cez formulár, kde by boli zadávané hodnoty pekne pod sebou, a hlavne dalo by sa to pred tlačou ešte zrušiť, atď...citovat
#031775
avatar
Děkuji teď nejsem na pc zítra to otestuju zatím moc děkujicitovat
#031790
avatar
Otestováno - všechno funguje perfektně jak bylo potřeba.
Díky, když vidím to řešení tak to navede bezvadně.
Mám ještě dotaz - jak se vkládá ten kód zde do těchto stránek, že je to v tom zeleném poli?

Kdybych prosím potřeboval ještě s něčím píchnout mám se ozvat zase zde? zdravím titus15@seznam.czcitovat
#031797
elninoslov
Označíte kód v editore príspevkov myšou a stlačíte to tlačítko $. Označený text dostane Tagy na začiatku a konci.

Ak budete potrebovať pomoc ohľadom tejto témy balíkov, tak píšte sem, ak ohľadom nejakej inej Excel témy, tak vytvorte novú, rovnakým spôsobom ako túto. Treba ale aj skúsiť vyhĺadávanie, či sa požadovaný problém už niekde nevyriešil. Aj tento balíkovy prob. tu už niekde je.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje