Skriver ett litet program åt en frimärkssamlare, han vill ha utskrifterna så att alla frimärksnummer ligger i nummer ordning(inga problem) samt i 5-6- kolumner(från vänster till höger) Du skall använda den här principen. JAg tycker din kod ser lite skum ut: Ibland krånglar man till det... <b>Ny fråga! Hur kan man skriva ut med posterna högerställda?Skriva ut i kolumner
Följande kod men det är lite problem här. Tror att jag stirrar mej blind!
With rsStamp 'recordset open
'i = .RecordCount
Do Until .EOF
i = i + 1
For i = 1 To 5 'count 5 columns
strStamp = CStr(rsStamp!Number) & CStr(rsStamp!Letter) 'save to string-variable
Printer.Print strStamp; Space(25 - Len(strStamp)); 'print to 5 columns
If Not .EOF Then .MoveNext
If i = 5 Then 'if 5 columns then new row
Printer.Print strStamp; Space(25 - Len(strStamp))
If Not .EOF Then
.MoveNext
End If
End If
Next i
Loop
.Close
End With
Set rsStamp = NothingSv: Skriva ut i kolumner
Tex Tab(13) betyder här att Namn alltid kommer på platsen
för det 13 tecknet med den Font med sin Width du valt.
Tab(41) är 41 tecken in från vänster , dvs 41- 13 tecken = 28
kolumnen Namn kan innehålla 28 tecken och börjar alltid på plats 13
"Start" kolumnen kan innehålla 51 - 41 = 10 tecken osv. osv.
<code>
Printer.CurrentY = 5 'Rubrik rad
Printer.Print ; Tab(13); "Namn"; _
Tab(41); "Start"; _
Tab(51); "Mål"; _
Tab(61); "Seglad Tid"; _
Tab(75); "LysTal"; _
Tab(84); "Korrigerad Tid"; _
Tab(103); "Plac."
'Skriv ut resultat rad för rad
Printer.CurrentY = 6
With frmResultat.lvw
For i = 1 To .ListItems.Count 'Skriv ut data i respektive kolumn
Set .SelectedItem = .ListItems(i)
Printer.Print ; Tab(13); .SelectedItem; _
Tab(41); .SelectedItem.SubItems(1); _
Tab(51); .SelectedItem.SubItems(2); _
Tab(63); .SelectedItem.SubItems(3); _
Tab(76); .SelectedItem.SubItems(4); _
Tab(87); .SelectedItem.SubItems(5); _
Tab(105); .SelectedItem.SubItems(6)
If i > 2 Then Printer.Print ' tomrad
'Väljer ny sida om det finns multiplar av 60 rader
If i Mod 60 = 0 Then Printer.NewPage
Next 'i
End With
Printer.NewPage
Printer.EndDoc
</code>Sv: Skriva ut i kolumner
Do Until rsStamp.EOF
i = i + 1
strStamp = CStr(rsStamp("Number")) & CStr(rsStamp("Letter")) 'save to string-variable
Printer.Print strStamp; Space(25 - Len(strStamp)); 'print to 5 columns
If i = 5 Then 'if 5 columns then new row
Printer.Print vbCrLf
i = 0
End If
rsStamp.MoveNext
Loop
rsStamp.Close
Set rsStamp = Nothing
Sv:Skriva ut i kolumner
Sven-Åkes's princip är ju naturligtvis OK, men jag fick problem med Tab(20), därför Space i stället.
Andreas, koden är skum, nu funkar det perfekt.
Ny fråga! Hur kan man skriva ut med posterna högerställda?
Har försökt här med Space(25-Len(strStamp)) men det blir inte så bra.Sv: Skriva ut i kolumner
Har försökt här med Space(25-Len(strStamp)) men det blir inte så bra.</b>
Som du säkert förstår måste du bestämma hur många tecken max som får finnas i varje kolumn
Mitt exempel:
Skall högerställa Tab(20);strStamp
då blir det den som kommer efter här Tab(Din nästa Tab efter 20 - Len(strStamp))
Dvs istället för att skriva Tab(20);strStamp
Skriver du enl mitt exempel
<code>
'OBS (;) tecknet Viktigt !
;Tab(Din nästa Tab efter 20 - Len(strStamp));strStamp;Tab(Nästa);
</code>
Ta ett vanligt A4 och dela in det i dom kolumner och bred(max antal tecken dom skall ha).
Döp varje Tab början till ett nummer från 0 - 82 eller efter ditt behov pga av Font Width