MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 19.10.2017, 17:17   #1
knuepel
Neuer Benutzer
Neuer Benutzer
Standard Excel 2013 - wenn Inhalt Zelle X dann bestimmte Zellen kopieren (Werte) und Inhalt löschen

Hallo zusammen,
ich hoffe mir kann jemand weiterhelfen. Ich habe eine Excel Datei mit zwei Tabellen Blätter
Tabelle1
Tabelle2

Zudem gibt es eine extra Excel Datei mit den Namen Archiv


Es werden in der Tabelle1 in den Zellen M bis O Werte (Datum, Uhrzeit, Text) eingetragen und diese werden mit einer Formel in der Tabelle2 in den Zelllen P bis R dargestellt.

Anschließend wird in der Tabelle2 Zelle S das Wort/Wert "Bearbeitet" eingeben und dieses wird mit Hilfe einer Formel in der Tabelle1 in Zelle P dargestellt.

Nach einigen weitern nicht relevanten Schritte wird in der Tabelle2 in Zelle AB das Wort"erledigt" ausgewählt. Dadurch weiß das unten aufgeführte Makro welche Zelle in der Tabelle2 bearbeitet werden soll.

Das Makro kopiert die ganze Spalte (inklusive Formeln), fügt User hinzu und speichert es in ein Archiv ab. Anschließend wird die ganze Spalte gelöscht.

Nun zu meine Bitte:
leider haben sich unseren Arbeitsschritte geändert und das Makro müsste angepasst werden, dafür fehlt mir leider das nötige Fachwissen :-(
Das Makro müsste bei Eingabe "erledigt" in der Tabelle2 Zelle AB die entsprechende Spalte die Werte (nicht Formeln) der Zellen A bis AE kopieren und im Archiv abspeichern.
Anschließend sollen nur in der Tabelle1 die einsprechende Spalte die Inhalte in den Zellen M bis O gelöscht werden und in der Tabelle2 die einsprechende Spalte die Inhalte in den S bis AB.

Code:

Option Explicit


Private Const cstrFileArchive As String = "D:UsersDesktopTestArchiv Artikel_Archiv.xls" 'Pfad und Name der Archivdatei
Private Const cstrMasterTabelle As String = "Tabelle2" 'Name Tabellenblatt in 'Master'
Private Const cstrArchiveTabelle As String = "Tabelle1" 'Name Tabellenblatt in 'Archiv'
Private Const cstrArchiveWritePW As String = "strenggeheim" 'Schreibschutz-Passwort der Archiv-Datei
Private Const cstrMasterTabPW As String = "" 'Passwort für Master-Tabelle
Private Const cstrArchiveTabPW As String = "" 'Passwort für Archiv-Tabelle
'##### ENDE EINSTELLUNGEN #####

Sub copyAndDelete()
  Dim objWbMaster As Workbook, objWbArchive As Workbook
  Dim objShSrc As Worksheet, objShTgt As Worksheet
  Dim rng As Range, rngCopy As Range
  Dim strFirst As String
  Dim lngNext As Long, lngC As Long
  Dim blnOpen As Boolean
  
  On Error GoTo ErrExit
  
  Set objWbMaster = ThisWorkbook
  
  Set objShSrc = objWbMaster.Sheets(cstrMasterTabelle)
  
  With objShSrc
    .Unprotect cstrMasterTabPW
    Set rng = .Range("AB:AB").Find(What:="erledigt", LookAt:=xlWhole, _
      LookIn:=xlValues, MatchCase:=False, After:=.Range("AB" & .Rows.Count))
  End With
  
  If Not rng Is Nothing Then
    strFirst = rng.Address
    
    Do
      lngC = lngC + 1
      If rngCopy Is Nothing Then
        Set rngCopy = rng.EntireRow
      Else
        Set rngCopy = Union(rngCopy, rng.EntireRow)
      End If
      
      Set rng = objShSrc.Range("AB:AB").FindNext(rng)
    Loop While Not rng Is Nothing And strFirst <> rng.Address
    
  End If
  
  If Not rngCopy Is Nothing Then
    For Each objWbArchive In Application.Workbooks
      If objWbArchive.FullName = cstrFileArchive Then Exit For
    Next
    
    If objWbArchive Is Nothing Then
      Set objWbArchive = Workbooks.Open(cstrFileArchive, WriteResPassword:=cstrArchiveWritePW)
      blnOpen = True
    End If
    
    Set objShTgt = objWbArchive.Sheets(cstrArchiveTabelle)
    
    With objShTgt
      .Unprotect cstrArchiveTabPW
      lngNext = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
      rngCopy.Copy .Cells(lngNext, 1)
      .Cells(lngNext, 40).Resize(lngC, 1) = Now
      .Cells(lngNext, 41).Resize(lngC, 1) = Environ("USERNAME")
      .Protect cstrArchiveTabPW
    End With
    
    If blnOpen Then
      objWbArchive.Close True
    Else
      objWbArchive.Save
    End If
    
    rngCopy.Delete
    
    objShSrc.Protect cstrMasterTabPW
    objWbMaster.Save
    
    MsgBox "Es wurden " & CStr(lngC) & " 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 objWbMaster = Nothing
  Set objWbArchive = Nothing
  Set rng = Nothing
  Set rngCopy = Nothing
End Sub

Geändert von knuepel (19.10.2017 um 17:26 Uhr).
knuepel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 20.10.2017, 11:56   #2
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Moin,

wenn Du Dir Hilfe erhoffst, solltest Du die Datei bereitstellen. Niemand wird sich die Mühe machen, den Code (der falsch,unsinnig, ungeeignet sein kann) zu erschließen und daraus eine Lösung herzuleiten.

Vom Umfang her scheint die Frage eher ins Brett Jobbörse zu gehören. Im Forum wird Hilfestellung geboten, mehr nicht.

__________________

Gruß
Ralf
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 20.10.2017, 14:51   #3
fkw48
Neuer Benutzer
Neuer Benutzer
Standard

Die Jobbörse meint die Excel ist kein unbedingter Kündigungsgrund, berechtigt aber zur Abmahnung.
Datei gibt es hier: http://www.herber.de/forum/messages/1586885.html

__________________


Wer meine Fehler findet hat wenigsten nachgedacht
fkw48 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 20.10.2017, 16:04   #4
Superingo2
MOF Koryphäe
MOF Koryphäe
Standard

Ich hasse es, wenn einer Crossposting betreibt.
Nur weil es etwas kostenlos gibt, muss man es nicht gleich mehrfach konsumieren!!!!!!
Das sind Egoisten, die es meist noch nicht einmal selber wahrnehmen können. Solchen Leuten helfe ich mittlerweile vom Prinzip nicht mehr. Denn wenn sie mit Crossposting trotzdem Erfolg haben, werden sie es niemals sein lassen.

Ein frustriertes Helferlein!

__________________

Viel Spaß


.....ein Feedback wäre nett.....
Superingo2 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 20.10.2017, 17:58   #5
knuepel
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Zitat: von drambeldier Beitrag anzeigen

Moin,

wenn Du Dir Hilfe erhoffst, solltest Du die Datei bereitstellen. Niemand wird sich die Mühe machen, den Code (der falsch,unsinnig, ungeeignet sein kann) zu erschließen und daraus eine Lösung herzuleiten.

Vom Umfang her scheint die Frage eher ins Brett Jobbörse zu gehören. Im Forum wird Hilfestellung geboten, mehr nicht.

Das habe ich leider nicht geschafft, ich kann zudem auch den Beitrag nicht mehr bearbeiten. Nachdem ich diesen gestern bearbeitet habe fehlt mir die Funktion Beitrag bearbeiten.


Zitat: von Superingo2 Beitrag anzeigen

Ich hasse es, wenn einer Crossposting betreibt.
Nur weil es etwas kostenlos gibt, muss man es nicht gleich mehrfach konsumieren!!!!!!
Das sind Egoisten, die es meist noch nicht einmal selber wahrnehmen können. Solchen Leuten helfe ich mittlerweile vom Prinzip nicht mehr. Denn wenn sie mit Crossposting trotzdem Erfolg haben, werden sie es niemals sein lassen.

Ein frustriertes Helferlein!


wie schon oben geschrieben habe ich es leider nicht geschafft eine Beispiel Datei hochzuladen, anschließend konnte/kann ich meinen Beitrag nicht mehr bearbeiten. Deshalb habe ich mich entschlossen die Frage/Bitte in einen andren Forum zu schreiben. Das hat nicht mit Crossposting oder ähnliches zu tun, deshalb gehe ich auch gar nicht auf deine Äußerung "Das sind Egoisten" ein. Dennoch möchte ich dir einen Tipp geben, schieße nicht ohne Hintergrundwissen los, das konnte dich noch mehr frustrieren .

Na ja, ein toller Einstieg hier in diesen Forum .
knuepel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 20.10.2017, 17:59   #6
knuepel
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Die Erklärung, ich bin doch nicht zu doof

Kann ich meine eigenen Beiträge ändern?
Wenn Sie sich registriert haben, können Sie Ihre Beiträge bearbeiten und löschen. Beachten Sie aber, dass der Administator diese Funktion sperren kann, wenn er es wünscht. Die Funktion, Ihre Beiträge zu bearbeiten, kann auch zeitbegrenzt sein, abhängig davon, wie der Administrator das Forum eingestellt hat.

Um Ihre Beiträge zu bearbeiten oder zu löschen, klicken Sie auf die Grafik in dem Beitrag, den Sie bearbeiten möchten. Wenn Ihr Beitrag der erste im Thema war, kann das Löschen des Beitrags das gesamte Thema löschen!

Nachdem Sie Ihre Änderungen durchgeführt haben, kann im Beitrag eine Anmerkung erscheinen, die andere Benutzer darauf hinweist, dass Sie Ihren Beitrag bearbeitet haben. Administratoren und Moderatoren können Ihre Beiträge auch bearbeiten, aber die Anmerkung, dass sie Ihren Beitrag bearbeitet haben, erscheint dann möglicherweise nicht.

Geändert von knuepel (20.10.2017 um 18:04 Uhr).
knuepel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 20.10.2017, 19:01   #7
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Das hat man davon, wenn man die Hilfe durchliest :-)))

Die Beiträge können eine bestimmte, besser gesagt unbestimmte Zeit geändert werden. Über Sinn oder Unsinn muss nicht mehr diskutiert werden - getret'ner Quark wird breit, nicht stark (J.W. von Goethe).

Du könntest die Beispieldatei in einer Antwort auf den ersten Beitrag unterbringen. Und Crosspostings sind nicht etwa verboten, es sollte aber dorthin verlinkt werden. Man kommt sich blöd vor, wenn man über einer Frage brütet, die vielleicht schon beantwortet ist.

__________________

Gruß
Ralf
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.10.2017, 17:10   #8
knuepel
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Wo liegt der Fehler?

Nun habe ich beschlossen es Stück für Stück zusammen zu bauen und auch zu verstehen.
Ich habe jetzt angehängte Mappe gebastelt, leider werden nicht alle Zeilen kopiert. Es fehlen Zeile 4 und 20, wo liegt der Fehler?
Angehängte Dateien
Dateityp: xlsm Mappe1.xlsm (21,5 KB, 3x aufgerufen)
knuepel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.10.2017, 18:11   #9
fkw48
Neuer Benutzer
Neuer Benutzer
Standard Falsche Spalte

Code:

myLastRow2 = .Cells(Rows.Count, 6).End(xlUp).Row ' sucht die letzte gefüllte Zelle in Spalte A

__________________


Wer meine Fehler findet hat wenigsten nachgedacht
fkw48 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.10.2017, 18:21   #10
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Moin,
Code:

' sucht die letzte gefüllte Zelle in Spalte A
wenn die laufende Zeile in der Spalte A keinen Wert hat, bleibt die Zielzeile stehen. Also nicht in Spalte A suchen! Abhilfe: http://www.excel-inside.de/vba-loesu...-vba-ermitteln

__________________

Gruß
Ralf
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.10.2017, 19:55   #11
knuepel
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Danke, das war der Fehler.

Nun habe ich nicht nur Werte sondern auch Formeln im Tabellen Blatt 2017, schon kopiert er nicht die richtigen Zeilen.
Angehängte Dateien
Dateityp: xlsm Mappe2.xlsm (26,9 KB, 3x aufgerufen)
knuepel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.10.2017, 20:36   #12
knuepel
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Ich werde verrückt, nun habe ich versucht die Löschfunktion einzubauen. Hier habe ich das Problem das die ganze Zeile gelöscht wird.

Ist es eigentlich möglich nur bestimmte Zellen zu löschen?

Beispiel: Blatt 2017 Zeile 10 Zelle F enthält "Test", dann wird nach dem speichern der ganzen Zeile 10 im Blatt Auswertung 2017 die Werte aus Basic1 Zeile 10 Zelle A, B und C und aus Basic2 Zeile 10 Zelle F, G,und H gelöscht. Also die Werte, die auf den Tabellen Blatt 2017 per Formel aus Basic1 und Basic2 dargestellt werden.
Angehängte Dateien
Dateityp: xlsm Mappe4.xlsm (29,4 KB, 1x aufgerufen)

Geändert von knuepel (22.10.2017 um 21:16 Uhr).
knuepel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.10.2017, 09:29   #13
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Moin,

Zellen werden nicht gelöscht, weil sich dabei Verschiebungen ergäben. Ihnen wird mit zB
Code:

Sheets("Auswertung 2017").Cells(2, 1).Clear
ein Leerwert zugewiesen.

__________________

Gruß
Ralf
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.10.2017, 12:54   #14
knuepel
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Ralf,

das verstehe ich leider nicht, ist das auch der Grund auf diese Frage?

Zitat:

Nun habe ich nicht nur Werte sondern auch Formeln im Tabellen Blatt 2017, schon kopiert er nicht die richtigen Zeilen.

Gruß
Frank
knuepel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.10.2017, 14:17   #15
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Berichtige:

Zellen werden dürfen nicht gelöscht werden. weil ...

Auch in Mappe2 sollte auf Spalte F abgefragt werden, nicht auf A.

Die Formeln hatte ich als erledigt angesehen. Zähler laufen richtig, das Problem sind die Formeln. Das kannst Du sehen, wenn Du mal auf einem Blatt kopierst, zB A4 (Basic!A6) nach A20: In A20 steht dann basic1!A20. Frag mich nicht, warum...

(Ich komme allerdings vom Access und würde eh nie kopieren.)

__________________

Gruß
Ralf
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:07 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.