Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1580to1584
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ich Krieg die Krise !!! Fehler nur bei mir?

Ich Krieg die Krise !!! Fehler nur bei mir?
29.09.2017 12:51:50
Christian
Hallo Freunde,
Letzter versuch das Ding zu retten...:-)
Nachfolgende Tabelle geht bei mir beim Druck auf den Button "Auftrag drucken" im Makro "ZellinhaltTrennen" auf einen Fehler. Bei einem zweiten PC, mit identischem Excel läuft es....eigentlich eine ganz einfach Prozedur, aber ich krieg Sie seit stunden nicht zum laufen.....
Wer kann bitte helfen......
https://www.herber.de/bbs/user/116629.xlsm
Das "böse" Script wo bei "manchen PC´s" nicht läuft....

Private Sub Zellinhalt_trennen()
'** Trennen von Zellinhalten an einem vorgegebenen Trennzeichen
Dim strTeilstring()   As String
Dim strTrennzeichen As String
Dim LngY As Long
Dim wsakt As Object
ThisWorkbook.Sheets("Adressetikett").Range("A3:A9").ClearContents
ThisWorkbook.Sheets("Adressetikett").Range("A1").ClearContents
If Sheets("Adressetikett").Cells(14, 2).Value = True Then Sheets("Adressetikett").Cells(1, 1).  _
_
Value = "Postversand"
If Sheets("Adressetikett").Cells(13, 2).Value = True Then Sheets("Adressetikett").Cells(1, 1).  _
_
Value = "Hauspost"
If Sheets("Adressetikett").Cells(12, 2).Value = True Then Sheets("Adressetikett").Cells(1, 1).  _
_
Value = "Selbstabholung"
If Sheets("Adressetikett").Cells(1, 1).Value = "" Then Exit Sub
Set wsakt = ThisWorkbook.Sheets("Auftrag_Kopierzentrale")
Set wsZiel = ThisWorkbook.Sheets("Adressetikett")
strTrennzeichen = "," 'Trennzeichen festlegen z.B. Komma(,) Semikollon(;) Bindestrich(-) etc.
strTeilstring = Split(Trim(wsakt.Cells(13, 8).Value), strTrennzeichen)
LngY = 3
For A = LBound(strTeilstring) To UBound(strTeilstring)
wsZiel.Cells(LngY, 1).Value = Trim(strTeilstring(A))
LngY = LngY + 1
Next A
Application.ScreenUpdating = False
With Sheets("Adressetikett")
.Visible = True
.PrintOut
.Visible = False
End With
Application.ScreenUpdating = True
Worksheets("Auftrag_Kopierzentrale").Activate
End Sub

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
vielleicht?
29.09.2017 13:01:10
Peter(silie)
Hallo,
folgende Sachen:
wsZiel ist nicht deklariert
A ist nicht deklariert
schreibe vor Trim bitte VBA. also VBA.Trim
AW: vielleicht?
29.09.2017 13:33:38
Christian
Hallo Peter,
Du bist mein Retter!!!!
Der Satz vba.trim und habe ich eingefügt, und alles läuft.
Wieso geht es denn bei manchen Rechnern auch ohne den Zusatz?
Viele, vielen ,lieben DANK
Gruß
Christian
Nachtrag: Benutze Option Explicit...
29.09.2017 13:01:54
Peter(silie)

AW: Nachtrag: Benutze Option Explicit...
29.09.2017 13:35:02
Christian
Das Thema Option Explicit habe ich jetzt noch nicht umgesetzt, da es ja läuft....
was hilft mir das denn noch....
Grüße
Christian
AW: Nachtrag: Benutze Option Explicit...
29.09.2017 14:14:52
Luschi
Hallo Christian,
wenn Du diese Frage wirklich nocht stelltst, hast Du vom System VBA noch nicht viel begriffen.
In anderen Programmiersprachen hättest Du gar keine hance, ohne Deklarierung überhaupt eine Variable zu benutzen. Nur Vba, VBScript und leider auch VB.Net bieten diese Unzulässigkeit und damit Schreibfaulheit an.
Noch 1 Tipp: wenn Trim, Right, Left usw. ohne den Vorsatz Vba. nicht funktionieren, dann hat entweder die Exceldatei einen Schuß weg und geht bald in die Klie - oder aber es sind ungültige Verweise im Vba-Editor gesetzt.
Und noch einmal: 'Option Explicit' ist für jeden halbwegs ensthaften Programmierer einfach PFLICHT!
Setzte unter: Extras-Optionen das Hächchen bei 'Variablendeklaration erforderlich'.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Nachtrag: Benutze Option Explicit...
29.09.2017 14:26:00
Peter(silie)
Hallo,
zuerst zu Trim...
Trim ist eine WorksheetFunction UND eine VBA Text Funktion.
Manchmal hat VBA Probleme den Verweis aufzulösen.
Darauf reagiert VBA schon seit Jahren allergisch drauf.
Zu Option Explicit:
Wenn du Option Explicit am Anfang deines Codes schreibst, musst du alle Variablen IMMER
deklarieren.
Dadurch kannst du einfach lästige Fehler usw. vermeiden, die durch nicht deklarieren
einer Variable entstehen können.
Es ist außerdem ratsam, eine Variable auch immer mit Typ zu deklarieren.
Dann weißt du was dessen wert seien kann bzw. ist und VBA auch, sonst muss vba es erraten und es kann
sich ggf. auf die Geschwindigkeit aber auch auf die Funktionalität deines Codes auswirken
Anzeige
AW: Nachtrag: Benutze Option Explicit...
29.09.2017 14:26:38
Daniel
Bei Option Explicit musst du alle Variablen, die du verwendest, deklarieren.
das klinkt zunächst nach mehr aufwand, hat aber den Riesenvorteil dass das System Tippfehler in Variablenbezeichnungen erkennt und dich spätestens beim Start des Makros gezielt darauf hinweist, so dass du diesen Fehler beheben kannst.
ohne Option Explicit entsteht bei so einen Tippfehler eine neue Variable, die dann den Wert 0/leer hat und mit dieser wird gerechnet.
Dh dein Makro läuft dann normal durch, aber das Ergebnis ist natürlich falsch.
Dh da muss dir erstmal auffallen, dass das Ergebnis falsch ist, und wenn, gehst du auf Fehlersuche ohne einen Anhaltspunkt, wo der Fehler liegen könnte.
Du durchsuchst dann den ganzen Code nach vielleicht einem einfachen Buchstabendreher.
Mit Option Explicit zeigt dir VBA dann sofort diesen Fehler und du kannst ihn korrigieren.
Gruß Daniel
Anzeige
Leidiges Thema - Verweise
29.09.2017 14:50:11
Nepumuk
Hallo Christian,
du hast in deiner Mappe ein paar Überflüssige und einen gebrochenen Verweis. Daher die Fehlermeldung.
Geh im VBA-Editor - Menüleiste Extras - Verweise in die Liste und löschen die letzten 3. Die werden nicht benötigt (siehe Bild).
Userbild
Ich war so frei deinen Code etwas zu bereinigen:
Private Sub Zellinhalt_trennen()
    '** Trennen von Zellinhalten an einem vorgegebenen Trennzeichen
    
    Dim strTeilstring() As String
    Dim strTrennzeichen As String
    Dim LngY As Long, A As Long
    
    With ThisWorkbook.Worksheets("Adressetikett")
        .Range("A1,A3:A9").ClearContents
        
        If .Cells(14, 2).Value Then
            .Cells(1, 1).Value = "Postversand"
        ElseIf .Cells(13, 2).Value Then
            .Cells(1, 1).Value = "Hauspost"
        ElseIf .Cells(12, 2).Value Then
            .Cells(1, 1).Value = "Selbstabholung"
        End If
        
        If Not IsEmpty(.Cells(1, 1).Value) Then
            
            strTrennzeichen = "," 'Trennzeichen festlegen z.B. Komma(,) Semikollon(;) Bindestrich(-) etc.
            
            strTeilstring = Split(ThisWorkbook.Worksheets("Auftrag_Kopierzentrale") _
                .Cells(13, 8).Value, strTrennzeichen)
            
            LngY = 3
            
            For A = LBound(strTeilstring) To UBound(strTeilstring)
                
                .Cells(LngY, 1).Value = Trim$(strTeilstring(A))
                
                LngY = LngY + 1
                
            Next A
            
            Application.ScreenUpdating = False
            
            .Visible = xlSheetVisible
            .PrintOut
            .Visible = xlSheetVeryHidden
            
            Application.ScreenUpdating = True
            
            Worksheets("Auftrag_Kopierzentrale").Activate
            
        End If
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Leidiges Thema - Verweise
29.09.2017 21:33:37
AlterDresdner
Hallo Christian,
wenn Du den Verweis auf AbapEditorScripting rauswirfst, geht es dann auch bei mir (Off210, Win10).
Gruß der ALteDresdner
AW: Leidiges Thema - Verweise
02.10.2017 07:10:18
Christian
Hallo Nepumuk,
Vielen Dank für die Bereinigung!!! Hab es sofort eingesetzt.
Alles läuft, endlich kann es ich es an die Kollegen verteilen.
Bin Megafroh!!!
Danke an dich, und an alle die mitgeholfen haben
Gruß
Christian

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige