Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
900to904
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
900to904
900to904
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Daten entfernen und neu laden

Daten entfernen und neu laden
05.09.2007 10:24:37
König
Ich möchte gern Daten in einem Excel Datenblatt entfernen
[a2:r10000].Select
Selection.ClearContents
Damit ich die Formeln in einem anderen Blatt die sich darauf beziehen nicht verliehre, kann ich kein
Delet machen, somit bleibt mir nur ClearContents.
Dann möchte ich Neue Daten einspielen
Dabei Prüfe ich nochmals ob Daten in dem Blatt sind, wenn ja, dann soll er die Daten hinten
anfügen, wenn nicht, dann sollen die Daten ein Feld unter der Überschirft eingefügt werden.
DS_ANZAHL = objCHECK.CHECK_ANZAHL(Blatt$, objDA.KURZ)
If DS_ANZAHL = 0 Then
MsgBox "Fuer Datenart " & objDA.DATENART & " sind noch keine Daten importiert !"
' Wieviel Datensaetze gibt es Im Blatt$ ueberhaupt ?
DS_ANZAHL = objCHECK.CHECK_ANZAHL_OHNE(Blatt$)
' Ermittle die Zeile wo die Daten hin sollen
If DS_ANZAHL = 0 Then
DS_ANZAHL = 2
Else
DS_ANZAHL = DS_ANZAHL + 3
End If
Das Problem ist nun jedoch, das Die Daten immer an die vorher bereinigten angehängt werden und
nicht oben. Damit habe ich ein Blatt was eigentlich oben leer ist und danach die Werte enthält.
Gibt es einen Trick wie ich das hinbekomme.

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten entfernen und neu laden
05.09.2007 12:05:00
fcs
Hallo König,
das Problem ist kein Trick sonder deine Function objCHECK.CHECK_ANZAHL_OHNE(Blatt$) oder deine If-Konstruktion, die du uns ja nicht vollständig verraten hast.
Die Function spuckt in der Zeile
DS_ANZAHL = objCHECK.CHECK_ANZAHL_OHNE(Blatt$)
scheinbar ein falsches Ergebnis aus, wenn keine Daten im Blatt sind.
Warum denn diese ganze Prüferei, wenn du die Zellinhalte gelöscht hast, dann sind sie fort. Da brauchste hinterher nicht mehr zu prüfen, ob noch Daten da sind.
Gruß
Franz

AW: Daten entfernen und neu laden
05.09.2007 13:19:00
König
Hallo nochmal,
ich brauche diese Prüfung leider. Kurze erklärung:
Ich bekomme aus verschiedene Ländern excel Files mit unterschiedlichen Daten, die Daten haben
immer eine bestimmt kennung dabei (kurz) diese wird ausgelsen und in das tool geschrieben, nach
der ersten Datenart kann nun auch noch eine zweite oder dritte kommen, daher muss ich bevor ich die neue Einspiele schauen, an welche Stelle ich Sie nun schreiben muß, die komplette Einlese Prozedzre lautet so:

Private Sub CMD002_Click()
Dim Blatt$
Dim HELP$
Dim DS_ANZAHL As Integer
Dim I As Integer
Dim Antwort
' Wie lautet die Tabelle (Tabelle=KENNUNG)
Blatt$ = objGES.KENNUNG & "1"
' Gibt es schon Daten fuer die Berichtsform ?
'DS_ANZAHL = 0  ' objCHECK.CHECK_ANZAHL(Blatt$, objDA.KURZ)
DS_ANZAHL = objCHECK.CHECK_ANZAHL(Blatt$, objDA.KURZ)
If DS_ANZAHL = 0 Then
MsgBox "Fuer Datenart " & objDA.DATENART & " sind noch keine Daten importiert !"
' Wieviel Datensaetze gibt es Im Blatt$ ueberhaupt ?
DS_ANZAHL = objCHECK.CHECK_ANZAHL_OHNE(Blatt$)
' Ermittle die Zeile wo die Daten hin sollen
If DS_ANZAHL = 0 Then
DS_ANZAHL = 2
Else
DS_ANZAHL = DS_ANZAHL + 3
End If
' Originaldaten holen und schreiben "Tabelle1" gibt vor wie Originaltabelle heißen muß
With objIMP
.Query_IMPORT myExl, _
EXCELDatei, _
"Tabelle1", _
Blatt$, _
objGDA.BAUMUSTER, _
objGDA.TYPKLASSE, _
objGDA.GEBIET, _
objGDA.BERICHT, _
objGDA.wert, _
objGES.WK, _
objGDA.EBZ, _
objGDA.VON, _
objGDA.BIS, _
objDA.KURZ, _
objGES.WERTART, _
objGES.MONAT, _
objGES.JAHR, _
objGES.DEZ
.DATEN_SCHREIBEN Blatt$, DS_ANZAHL
End With
Else
With objIMP
.Query_IMPORT myExl, _
EXCELDatei, _
"Tabelle1", _
Blatt$, _
objGDA.BAUMUSTER, _
objGDA.TYPKLASSE, _
objGDA.GEBIET, _
objGDA.BERICHT, _
objGDA.wert, _
objGES.WK, _
objGDA.EBZ, _
objGDA.VON, _
objGDA.BIS, _
objDA.KURZ, _
objGES.WERTART, _
objGES.MONAT, _
objGES.JAHR, _
objGES.DEZ
End With
Antwort = MsgBox("Daten an vorhandene anhaengen ?", vbYesNo, "ACHTUNG")
If Antwort = vbYes Then
With objIMP
.DATEN_SCHREIBEN Blatt$, DS_ANZAHL + 3
End With
Else
'      objCHECK.Query_DELETE Blatt$, objDA.KURZ
' Tabelle aktivieren
Sheets(Blatt).Select
' Löschen der Zeilen
For I = DS_ANZAHL + 1 To 2 Step -1
HELP$ = I & ":" & I
Rows(HELP$).Select
Selection.ClearContents
Next I
With objIMP
.DATEN_SCHREIBEN Blatt$, DS_ANZAHL + 3
End With
End If
MsgBox "Alle Daten eingefügt"
End If
End Sub


Hier ist noch der Teil den ich zum Daten löschen benutze.


Private Sub Löschen_Click()
Dim Datum1, ZF1, ZF2
Dim Blatt$
Dim anzahl As Long
Dim ausgabestring As String
Dim HELP$
Dim DS_ANZAHL As Integer
Dim I As Integer
' Wie lautet die Tabelle (Tabelle=KENNUNG)
Blatt$ = objGES.KENNUNG & "1"
Sheets(Blatt$).Select
' Gewaehlte Tabelle aktivieren
[a2:r10000].Select
Selection.ClearContents
MsgBox "Daten gelöscht"
Leider kann ich meiner Meinung nach nicht auf die Prüfung verzichten, da ich dann die Daten  _
immer wieder
überschreiben würde.
Ich würde mich sehr freuen, wenn da noch jemand eine Idee hat.
Vielen Dank

Anzeige
AW: Daten entfernen und neu laden
05.09.2007 16:15:14
fcs
Hallo König,
die Berechnung der Variablen DS_ANZAHL muss irgendwo im Code fehlerhaft sein oder fehlen oder sonst irgendwas.
Da hier scheinbar sehr intensiv mit Klassen-Modulen geabeitet wird ist es für einen Aussenstehenden kaum möglich konkret festzustellen, an welcher Stelle nicht korrekte Daten an Prozeduren übergeben werden.
Da wird dir wohl nichts anderes übrigbleiben, als die Werte der Variablen im Überwachungsmodus zu verfolgen und die kritischen Prozeduren dann im Schrittmodus abzuarbeiten um die Problemstelle zu finden.
Sehr merkwürdig ist für mich der folgened Abschnitt:

'      objCHECK.Query_DELETE Blatt$, objDA.KURZ
' Tabelle aktivieren
Sheets(Blatt).Select
' Löschen der Zeilen
For I = DS_ANZAHL + 1 To 2 Step -1
HELP$ = I & ":" & I
Rows(HELP$).Select
Selection.ClearContents
Next I
With objIMP
.DATEN_SCHREIBEN Blatt$, DS_ANZAHL + 3
End With
End If
MsgBox "Alle Daten eingefügt"
End If
End Sub


Hier werden in der For-Next-Schleife die Inhalte von Zeilen ab DS_ANZAHL+1 abwärts nach 2 gelöscht. Anschließend werden Daten scheinbar ab Zeile DS_ANZAHL+3 geschrieben. Somit bleiben die gelöschten Inhalte wahrscheinlich leer und die neuen Inhalte werden unterhalb eingetragen. ggf. muss du nach der Next-Zeile den Wert von DS_ANZAHL irgendwie neu setzen, damit .DATENSCHREIBEN mit der richtigen Zeile beginnt.
Gruß
Franz

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige