Hur lkägger jag detta i en funktion för att sedan anropa detta.... Eftersom du inte har något returvärde ska du göra en sub. Ett litet, eller ganska stort exempel kunde vara att göra såhär: Hej på Er Hej till Andreas Nä denna funktion skall loopas ett antal ggr innan Printer.EndDoc kommer. Om jag gör som Johan säger, en sub...hur stoppar jag då in data i den (tänk på att den skall loopas...) <code> Eller om man som jag, som gillar paranteser (detta inlägg är en enda stor parantes):Funktion
borde la typ vara något liknande detta va....
<code>
Public Function()
Printer.FontSize = 10
Printer.CurrentX = 500
Printer.Print artnr
Printer.CurrentY = 4000
Printer.CurrentX = 2000
Printer.Print produkt
Printer.CurrentY = 4000
Printer.CurrentX = 7000
Printer.Print antal
Printer.CurrentY = 4000
Printer.CurrentX = 8000
Printer.Print FormatCurrency(pris)
End Function
</code>
Och sedan anropa via Function(något)...fan, jag kan inte detta riktigt....Sv: Funktion
<code>
Public Sub min_sub()
Printer.FontSize = 10
Printer.CurrentX = 500
Printer.Print artnr
Printer.CurrentY = 4000
Printer.CurrentX = 2000
Printer.Print produkt
Printer.CurrentY = 4000
Printer.CurrentX = 7000
Printer.Print antal
Printer.CurrentY = 4000
Printer.CurrentX = 8000
Printer.Print FormatCurrency(pris)
End Sub
anropas med:
min_sub
</code>
/JohanSv: Funktion
<code>
Public Sub PrintReport
Dim rsTemp As ADODB.Recordset
Dim fldArtNr As ADODB.Field
Dim fldProdukt As ADODB.Field
Dim fldAntal As ADODB.Field
Dim fldPris As ADODB.Field
Dim RowTop As Single
Dim RowFont As StdFont
RowTop = 4000
Set RowFont = New StdFont
RowFont.Size = 10
Set rsTemp = New ADODB.Recordset
rsTemp.Open "SELECT * FROM TabellNamn ORDER BY Produkt", conn, adOpenForwardOnly, adLockReadOnly
Set fldArtNr = rsTemp("ArtNr")
Set fldProdukt = rsTemp("Produkt")
Set fldAntal = rsTemp("Antal")
Set fldPris = rsTemp("Pris")
Do Until rsTemp.EOF
PrintRow 500, RowTop, RowFont, fldArtNr.Value, fldProdukt.Value, fldAntal.Value, fldPris.Value
RowTop = RowTop + 1000
rsTemp.MoveNext
Loop
End Sub
Public Sub PrintRow(Left As Single, Top As Single, Font As StdFont, ByVal ArtNr As String, ByVal Produkt As String, ByVal Antal As Long, ByVal Pris As Currency)
Set Printer.Font = Font
Printer.CurrentX = Left
Printer.CurrentY = Top
Printer.Print ArtNr
Printer.CurrentX = Left + 1500
Printer.CurrentY = Top
Printer.Print Produkt
Printer.CurrentX = Left + 6500
Printer.CurrentY = Top
Printer.Print Antal
Printer.CurrentX = Left + 7500
Printer.CurrentY = Top
Printer.Print FormatCurrency(Pris)
End Function
</code>
Antar att din funktion skall skriva ut en rad. Skicka därför in left, top och font som parametrar. Samt värden som skall skrivas ut.
Exempel funtionaen loppar igenom ett recordset.Sv: Funktion
Du får inte glömma Printer.EndDoc
sist i din Sub. Sen min uttjatade käpphäst skriv
Printer.ScaleMode = 6 'millmeter eller Printer.ScaleMode = 7 'cm
först i din rutin. Varför ? du kan mycket enkelt planera ditt A4
med linjal på ett A4 ark ,Cm kan skrivas med decimaler
tex Printer.CurrentX = 2.6
mvh
SvenSv: Funktion
"Mycket skrik för lite ull sa käringen när hon klippte grisen"
När börjar din kod skriva ser inget Printer.EndDoc
mvh
SvenSv: Funktion
Det är en faktura specifikation som loopar ut faktura texten...Sv: Funktion
<code>
'Såhär?
artnr = 111
produkt = "Blöjor"
pris = "22,5"
Public Sub min_sub()
Printer.FontSize = 10
Printer.CurrentX = 500
Printer.Print artnr
Printer.CurrentY = 4000
Printer.CurrentX = 2000
Printer.Print produkt
Printer.CurrentY = 4000
Printer.CurrentX = 7000
Printer.Print antal
Printer.CurrentY = 4000
Printer.CurrentX = 8000
Printer.Print FormatCurrency(pris)
End Sub
<code>Sv: Funktion
Anropas med
min_sub 2.1
Public Sub min_sub(pris AS Double)
Printer.FontSize = 10
Printer.CurrentX = 500
Printer.Print artnr
Printer.CurrentY = 4000
Printer.CurrentX = 2000
Printer.Print produkt
Printer.CurrentY = 4000
Printer.CurrentX = 7000
Printer.Print antal
Printer.CurrentY = 4000
Printer.CurrentX = 8000
Printer.Print FormatCurrency(pris)
End Sub
</code>
/JohanSv: Funktion
<code>
Call min_sub(2.1)
</code>
Observera att man, när man använder Call för att anropa Subrutiner, MÅSTE använda paranteser runt inparametrarna!
T ex om man har en subrutin som kräver två in-parametrar:
<code>
Public Sub Add(A As Integer, B As Integer)
Call MsgBox("Summan av " & A & " och " & B & " = " & A + B)
End Sub
</code>
Så skall man alltså anropa den på ett av följande sätt:
<code>
Add 2, 5 'Utan paranteser
Call Add(2, 5) 'Med paranteser
</code>
Man KAN sätta en parantes runt ett enstaka värde när man INTE använder Call - men då betyder det att man vill skicka in det värdet (eller variabeln snarare) som ByVal oavsett hur in-parametern deklareras i aktuell subrutin (eller funktion).
Slut på parantesen... ;-)
// Qezlot