VBA führt Druckbefehl falsch aus!

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: VBA führt Druckbefehl falsch aus! von: Johannis Paulix
Geschrieben am: 08.03.2005 15:27:03

Hey Leute!

Ich habe folgendes Problem! Ich habe ein Programm geschrieben, was mir Daten aus einer Tabelle liest, und sie dann in einer Anordnung als Etikett drucken soll! Nun habe ich das Programm fertig.
Wenn ich nun z.B. den Bereich A2:A3 markiere, dann soll er mir den Inhalt der beiden Zeilen auf ein Etikett drucken! Das Problem ist jetzt, das er mir auf beide Etiketten nur das Druckt was in Zelle A3 steht!

Wenn ich den Bereich A2:A10 markiere und den Befehl ausführe, dann druckt er mir 8 x das, was in Feld A10 steht aus!

Warum ist das so! Ich habe den Code angehängt, damit ihr mal nachschauen könnt! Danke schon im Vorraus

MfG Grevi

https://www.herber.de/bbs/user/19363.txt

Bild


Betrifft: AW: VBA führt Druckbefehl falsch aus! von: Volker
Geschrieben am: 08.03.2005 16:51:10

Hallo Grevi,

ich bin's wieder.
Im Schreiben in Txt-files bin ich zwar nicht so fit, aber das kriegen wir schon hin.

Zuerst mal ein Tip: wenn Dein Code nicht das macht, was Du willst, kannst Du ihn mit F8 einzeln abarbeiten. Durch klick auf den linken Rand kannst Du Haltepunkte setzen.
Wenn Du mit dem Cursor auf eien Variable gehst, wird ihr Wert angezeigt.

Hab mal ein bisschen rumprobiert und ein paar bugs gefunden:
Wenn Du innerhalb der Schleife dein file löscht, ist natürlich alles futsch, was bis zum next i drin gestanden hat und öffnen mußt Du es auch nur einmal.

also:

If Dir("D:\BARCODE.TXT") <> "" Then
Kill "D:\BARCODE.TXT"
End If

FileNum = FreeFile
Open "D:\BARCODE.TXT" For Output As #FileNum

gehören vor die Schleife.

Und schließen solltest Du das file natürlich erst nach der Schleife:

Next i
Close #FileNum ' close the file

End Sub

Hier noch mal das Ganze komplett:


Private Sub cmb_Starten_Click()
    
    Dim InventurNr As String
    Dim LogischerName As String
    Dim IP_Adresse As String
    Dim Speicher As String
    Dim System As String
    Dim iMax As Integer
    Dim i As Integer
    Dim FileNum As String
    Dim Bereich As String
    Dim Zeile As Integer
    Dim Spalte As Integer
    
    Zeile = ActiveCell.Row
    MsgBox "Die 1 Zeile im markierten Bereich ist: " & Zeile
    Bereich = Selection.Address(0, 0)
    Worksheets!Tabelle2.Cells(1, 1) = Bereich
    Range(Bereich).Activate     'ist überflüssig, da schon selectiert
    i = CInt(Mid(Bereich, 2, 1))
    iMax = CInt(Mid(Bereich, 5, 1))
    
    If Dir("D:\BARCODE.TXT") <> "" Then
    Kill "D:\BARCODE.TXT"
    End If
    
    FileNum = FreeFile
    Open "D:\BARCODE.TXT" For Output As #FileNum
    For i = i To iMax
       
    InventurNr = Worksheets!Tabelle1.Cells(Zeile, 1).Value
    LogischerName = Worksheets!Tabelle1.Cells(Zeile, 2).Value
    IP_Adresse = Worksheets!Tabelle1.Cells(Zeile, 3).Value
    System = Worksheets!Tabelle1.Cells(Zeile, 4).Value
    Speicher = Worksheets!Tabelle1.Cells(Zeile, 5).Value
    
    
    Print #FileNum, Chr(2) & "m" & Chr(10) ' & Chr(13)
    Print #FileNum, Chr(2) & "S2" & Chr(10) ' Chr(13)
    Print #FileNum, Chr(2) & "L" & Chr(10) ' Chr(13)
    Print #FileNum, Chr(2) & "L" & Chr(10) ' Chr(13)
    Print #FileNum, "PC" & Chr(10) '  Chr(13)
'-- Allgemeine Groesse
    Print #FileNum, "D11" & Chr(10) ' Chr(13)
'-- Druck Intednsitaet Druckkopf Temperatur
    Print #FileNum, "H20" & Chr(10) ' Chr(13)
'-- Offset rechter Rand
    Print #FileNum, "C0000" & Chr(10) ' Chr(13)
'-- on every row
'-- Druck von links-unten
'-- Druck id  |yyyyxxxx
         
    Print #FileNum, "161100002400025" & Trim(InventurNr) & Chr(10)  ' Chr(13)
    Print #FileNum, "141100002700270" & Trim(LogischerName) & Chr(10) ' Chr(13)
    Print #FileNum, "131100001700025" & "IP_Adresse: " & Trim(IP_Adresse) & Chr(10) ' Chr(13)
    Print #FileNum, "131100001300025" & "Speicher:   " & Trim(Speicher) & Chr(10)   ' Chr(13)
    Print #FileNum, "131100000900025" & "System:     " & Trim(System) & Chr(10) ' Chr(13)
    
    Print #FileNum, "1a6208000180025" & InventurNr & LogischerName & Chr(13) & Chr(10) ' Chr(13)
    Print #FileNum, Chr(2) & "E" & Chr(10) ' Chr(13)
    Print #FileNum, Chr(13) & Chr(10) ' Chr(13)
    'Close #FileNum ' close the file    'siehe unten
    
    'Shell (Environ$("COMSPEC") & " /c " & "Copy c:\temp\barcode.txt \\k100\tmp\barcode")
    'Shell (Environ$("COMSPEC") & " /c " & "rsh k100 -l tbnw -n lp -dbar1 /tmp/barcode/barcode.txt")
    Zeile = Zeile + 1
    
    Next i
    Close #FileNum ' close the file
    
End Sub


Bin gespannt, ob's jetzt geht

Gruß
Volker


 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA führt Druckbefehl falsch aus!"