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

Makro anpassen

Makro anpassen
30.11.2018 15:13:49
Albert
Hallo liebes Forum,
ich habe ein paar Fragen bezüglich eines Makros das ich anpasse.
Einmal der Programmablauf:
1.Nachdem in dem Dokument "C2_Auftragsliste_Kundenstraße" in der Seite "C2_Offen" in die Spalte "N" das Wort "erledigt" eingetragen wird, soll die gesamte Zeile in das Excel-Dokument "C2_Auftragsliste_Kundenstraße_Erledigt" in die Seite "C2_Erledigt" kopiert werden.
2.Das Excel-Dokument "C2_Auftragsliste_Kundenstraße_Erledigt" soll abgespeichert werden
3.Die kopierte Zeile aus "C2_Offen" in "C2_Auftragsliste_Kundenstraße" soll nun gelöscht werden
4.Die sich darunter befindlichen Zeilen in "C2_Offen" sollen hochgeschoben werden
5.In "C2_Erledigt" sollen die kopierten Zeilen nacheinander gereiht werden, jedoch durch Filter wieder normal sortiert werden können
Ich habe probiert das Ganze aus einem anderen Artikel anzupassen:
https://www.ms-office-forum.net/forum/showthread.php?t=266470
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************
Option Explicit

Sub copyAndDelete()
Dim objWbC2_Auftragsliste_Kundenstraße As Workbook, objWbC2_Auftragsliste_Kundenstraß _
e_Erledigt As Workbook
Dim objShSrc As Worksheet, objShTgt As Worksheet
Dim rng As Range, rngCopy As Range
Dim strFileArchiv As String, strFirst As String, strMsg As String
Dim lngNext As Long
Dim blnOpen As Boolean
On Error GoTo ErrExit
strFileArchiv = "T:\C2_Auftragsliste_Kundenstraße_Erledigt" 'Pfad und Name der Archivdatei-    _
_
_
_
Anpassen!
Set objWbC2_Auftragsliste_Kundenstraße = ThisWorkbook
Set objShSrc = objWbC2_Auftragsliste_Kundenstraße.Sheets("C2_Offen") 'Tabellenname vom ' _
MasterWorkbook' - Anpassen!
Set rng = objShSrc.Range("N:N").Find(What:="erledigt", LookAt:=xlWhole, _
LookIn:=xlValues, MatchCase:=False, After:=objShSrc.Range("N:N" & Rows.Count))
If Not rng Is Nothing Then
strFirst = rng.Address
Do
If rngCopy Is Nothing Then
Set rngCopy = rng.EntireRow
Else
Set rngCopy = Union(rngCopy, rng.EntireRow)
End If
Set rng = objShSrc.Range("N:N").FindNext(rng)
Loop While Not rng Is Nothing And strFirst  rng.Address
End If
If Not rngCopy Is Nothing Then
For Each objWbC2_Auftragsliste_Kundenstraße_Erledigt In Application.Workbooks
If objWbC2_Auftragsliste_Kundenstraße_Erledigt.FullName = strFileArchiv Then Exit For
Next
If objWbC2_Auftragsliste_Kundenstraße_Erledigt Is Nothing Then
Set objWbC2_Auftragsliste_Kundenstraße_Erledigt = Workbooks.Open(strFileArchiv)
blnOpen = True
End If
Set objShTgt = objWbC2_Auftragsliste_Kundenstraße_Erledigt.Sheets("C2_Erledigt") ' _
Tabellenname in 'Archiv' - Anpassen!
With objShTgt
lngNext = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
rngCopy.Copy .Cells(lngNext, 1)
.Cells(lngNext, 40).Resize(lngNext + rngCopy.Rows.Count - 1, 1) = Now
.Cells(lngNext, 41).Resize(lngNext + rngCopy.Rows.Count - 1, 1) = Environ("USERNAME")
End With
If blnOpen Then
objWbC2_Auftragsliste_Kundenstraße_Erledigt.Close True
Else
objWbC2_Auftragsliste_Kundenstraße_Erledigt.Save
End If
strMsg = rngCopy.Rows.Count
rngCopy.Delete
objWbC2_Auftragsliste_Kundenstraße.Save
MsgBox "Es wurden " & strMsg & " Datensätze übertragen!", vbInformation, "Hinweis"
Else
MsgBox "Es wurden keine Datensätze gefunden!", vbInformation, "Hinweis"
End If
ErrExit:
If Err.Number > 0 Then
MsgBox "Fehlernummer:" & vbTab & Err.Number & vbLf & vbLf & _
"Fehlertext:" & vbTab & Err.Description, vbExclamation, "Fehler"
End If
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
Set objShSrc = Nothing
Set objShTgt = Nothing
Set objWbC2_Auftragsliste_Kundenstraße = Nothing
Set objWbC2_Auftragsliste_Kundenstraße_Erledigt = Nothing
Set rng = Nothing
Set rngCopy = Nothing
End Sub

Beim Durchlauf entsteht die Fehlernummer: 9, da ja die Fehler aufgezählt werden und addiert 9 ergeben und im Msgbox ausgespuckt werden.
Woran liegt das und was genau muss editiert werden um die liste zum kopieren--->in Ereldigt--->speichern Erledigt--->löschen kopierte Zeile--->Offen--->hochschieben Zeile Offen--->speichern--->Offen zu modifizieren, speziell auf meine Liste
Gruß und danke im Voraus
Albert

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro anpassen
01.12.2018 10:55:11
Matthias
Moin!
Nimm mal die Zeile On Error Goto ErrExit raus. Dann zeigt dir der Code beim Fehler die entsprechende Zeile an. Damit könnte man den Fehler eingrenzen. Entweder könnte die DAtei anders heißen (Schreibfehler), der PFad nicht richtig sein oder ggf. das Blatt anders heißen bzw. nicht existieren.
Wenn man das eingegrenzt hat und ggf. behoben hat, kann man schauen, was am Code noch geändert werden muss.
Aber mal ein Hinweis. Versuche die langen Variablennamen zu vermeiden. Für den Code ist es egal aber zum lesen und verfolgen suboptimal. 43 bzw. 34 Zeichen für den Namen machen es unübersichtlich. Evtl. würde ich da nur dier ersten Buchstaben der Teilworte nutzen. Ist aber Geschmackssache.
VG
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige