Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Datenimport startet nicht in Zelle(1, 1)

Betrifft: Datenimport startet nicht in Zelle(1, 1) von: Knoof
Geschrieben am: 14.08.2014 11:33:29

Hallo,

In meiner UserForm kann ich per Button einen Datenimport durchführen, dieser importiert aus einer Quelldatei eine Tabelle ins ActiveSheet und testet anhand einer ID ob dieser Datensatz bereits in meinem ActiveSheet enthalten ist, wenn ja wird dieser Datensatz nicht erneut importiert.

Das funktioniert soweit super, wenn in meinem ActiveSheet bereits eine Tabelle enthalten ist. Die neuen Datensätze werden sauber unten angehängt.

Das Problem ist nun, Wenn mein ActiveSheet komplett leer ist, und ich dann den Datenimport durchführe wird die Tabelle nicht ab der ersten Zeile eingefügt sondern irgendwo weiter unten. Ich habe den Fehler nicht gefunden, vielleicht kann einer von euch den Fehler finden.

Private Sub cmdimport_Click()

Dim Zelle As Range
Dim quRows As Long
Dim zuRows As Long
Dim suche As Range

Dim QWB As Workbook, ZWB As Workbook
Dim qsh As Worksheet, zsh As Worksheet
Dim ordner As Variant
'Wenn die Datei erst geöffnet werden muss

Set ZWB = ThisWorkbook                  ' Ziel, Workbook mit diesem Makro
Set zsh = ZWB.Sheets("Sheet 1")    ' Ziel
ordner = Application.GetOpenFilename("Manche Dateien (*.txt),*.txt,Alle Dateien,*.*")
Set QWB = Workbooks.Open(ordner)          ' Quelle, aus der die Tabelle41 kopiert werden soll

Set qsh = QWB.Worksheets("Sheet 1")   ' Quelle

If MsgBox("Wollen Sie die Daten aktualisieren?", vbYesNo) = vbNo Then
    Exit Sub             ' oder before
    QWB.Close
Else

    quRows = qsh.UsedRange.Rows.Count
    For Each Zelle In qsh.Range(qsh.Cells(1, 1), qsh.Cells(quRows, 1))
        Set suche = zsh.Columns(1).Find(Zelle, , xlValues, xlWhole)
        If suche Is Nothing Then
            'zeile wird ins zielsheet unten angefügt
            Zelle.EntireRow.Copy zsh.Cells(zsh.UsedRange.Rows.Count + 1, 1)
        End If
    Next
End If
QWB.Close          ' Wenn die Datei wieder geschlossen werden soll


End Sub
Gruß,
Knoof

  

Betrifft: AW: Datenimport startet nicht in Zelle(1, 1) von: Luschi
Geschrieben am: 14.08.2014 12:26:23

Hallo Knoof,

UsedRange ist leider nicht sehr zuverlässig, wenn es darum geht, die letzte
beschriebene Zeile einer Spalte zu ermitteln. Deshalb mache ich das so:

Dim letzteZeile As Long
With zsh
     letzteZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
     If .Cells(letzteZeile, 1).Value <> "" Then
        letzteZeile = letzteZeile + 1
     End If
End With
    
Zelle.EntireRow.Copy zsh.Cells(letzteZeile, 1)
Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: Datenimport startet nicht in Zelle(1, 1) von: Ewald
Geschrieben am: 14.08.2014 13:33:43

Hallo,

wie wärs wenn du erstmal Rückmeldung in deinen anderen Beiträgen gibst.

Wie du hier Hilfe zu deinem Problem erwartest, erwarten die Helfer auch eine Rückmeldung ob es gepaßt hat oder auch nicht.

Eigentlich gebieten das auch schon Höflichkeit und Anstand.

Gruß Ewald