Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1080to1084
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

End Funktion

End Funktion
12.06.2009 10:09:03
gröbi
Hallo,
ich rufe au einer Access Applikation Excel mit Late-Binding (CreateObject...) auf.
Dabei benutze ich die End-Funktion um die letzte Zeile einer Spalte zu ermitteln.
Die Konstante xlUp, die ich dabei benötige habe ich als globale Konstante in
einem Standardmodul hinterlegt(Public Const xlUp = - 4162).
Die folgende Coldezeile liefert mir nur falsche Werte:
xlTabellenende = xlWb.ActiveSheet.Cells(xlWb.ActiveSheet.Rows.Count, colArtNr_Kunde).End(xlUp).Rows
Die End Funktion liefert folgenden Blödsinn:
Befinden sich der gesuchten Spalte nummerische Werte (in meinem Fall eine Artikelnummer), dann gibt die Funktion den nummerischen Wert der letzten Zeile in der Spalte wieder.
Ist in der letzten Zeile der Spalte ein Wert, der als String zu erkennen ist, wird der Variablen xlTabellenende ein String zugewiesen, was logischerweise eine Laufzeitfehler erzeugt, weil ich die Variable xlTabellenende als Long deklariert habe.
Alle Variablen und Konstanten sind deklariert, das Formularmodul wurde mit Opiton Explict debuggt.
Die Maschine liefert keine Fehler beim Debuggen. Was ist an der Funktion falsch?
Ich ärgere mich schon einen halben Tag damit. Wenn nötig übermittle ich den Code der Prozedur bis zur fehlerhaften Zeile, ist aber eine Menge.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: End Funktion
12.06.2009 10:34:28
Roland
Hallo gröbi,
xlUp würde ich nicht als Variablenbezeichnung verwenden, und wenn doch, dann so
Public Const xlUp as Long = - 4162&
Aber nach deiner Fehlerbeschreibung zweifle ich, dass es ausschließlich daran liegt. Stelle doch den betreffenden Code ins Forum, ich schaus mir gerne mal an.
Gruß
Roland Hochhäuser
AW: End Funktion
12.06.2009 10:47:24
gröbi
Hallo, habe den Wert -4162 probeweise direkt in die Funktion geschrieben. Damit ändert sich nichts.
Aber hier der Code:
Private Sub Verkaufsmeldung_importieren()
On Error GoTo Fehler0
'Access Objekte
Dim db As DAO.Database
Dim Sql As String
Dim rsImport As DAO.Recordset
'Die Deklaration für die Datentypen der Excel-Funktionen
'sind im Modul Globale_Elemente hinterlegt
'Excel Objekte
Dim xlApp As Object
Dim xlDatei As String
Dim xlWb As Object
Dim xlTabname As String
Dim xlTabellenende As Long
Dim xlFehlerzeilen As Long
Dim z As Long
Dim colArtNr_Kunde As Integer
Dim colMenge As Integer
Dim colAbrechnungsdatum As Integer
Dim valArtNr_Kunde
Dim valMenge
Dim valAbrechnungsdatum
Dim lngDatensätze As Long
Dim lngFehlersätze As Long
Dim strImportstatus As String
DoCmd.OpenForm "frmInfo"
Forms("frmInfo").Controls("lbInfo").Caption = "Importdatei wird geöffnet..."
Forms("frmInfo").Repaint
Sleep 2000
Set db = CurrentDb
db.Execute "Delete from Import_Verkaufsmeldungen"
Set rsImport = db.OpenRecordset("Import_Verkaufsmeldungen", dbOpenDynaset)
Set xlApp = CreateObject("Excel.Application")
xlDatei = tbDatei.Value
Set xlWb = xlApp.Workbooks.Open(xlDatei)
xlTabname = liboTabellen.Value
xlWb.Sheets(xlTabname).Select
xlApp.DisplayAlerts = False
colArtNr_Kunde = CInt(tbÜbernahme_Artikelnummer.Tag)
colMenge = CInt(tbÜbernahme_Menge.Tag)
colAbrechnungsdatum = CInt(tbÜbernahme_Abrechnungsdatum.Tag)
xlFehlerzeilen = 0
lngDatensätze = 0
lngFehlersätze = 0
xlTabellenende = xlWb.ActiveSheet.Cells(xlWb.ActiveSheet.Rows.Count, 1).End(xlUp).Rows
'Fehlerbeginn***********************************
xlApp.Visible = True
xlWb.ActiveSheet.Cells(xlTabellenende, 1).Select
Exit Sub
'Ende der Durchsage*****************************
Anzeige
AW: End Funktion
12.06.2009 10:39:51
Luschi
Hallo gröbi,
da Du sicher die Zeilen-Nummer der letzten Zeile haben willst, dann so:
xlTabellenende = xlWb.ActiveSheet.Cells(xlWb.ActiveSheet.Rows.Count, colArtNr_Kunde).End(xlUp).Row
Also ohne das 's' am Schluß, denn Rows gibt lt. Excel-Vba-Hilfe ein Range-Objekt zurück.
Gruß von Luschi
aus klein-Paris
AW: End Funktion
12.06.2009 10:54:32
gröbi
Vielen Dank Luschi, das erklärt den Laufzeitfehler. Ein Range-Objekt ist kein Datentyp Long.
habe in Excel diese Funktion x-Male verwendet, aber einen Schreibfehler begangen.
Damit ist die Sache geritzt.
Danke, Gruß, gröbi.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige