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

Codemodifizierung

Codemodifizierung
20.01.2023 08:26:57
Dieter
Hallo liebe Excel-Gemeinde,
ich habe einen funktionierenden VBACode, mit dem ich nach ArtikelNr filtere.
Sub Autofilter()
'Blattschutz aufheben
    Tabelle1.Unprotect
Tabelle1.Range("B11").Autofilter 3, Tabelle1.Range("D10").Value                             'nach ArtikelNr filtern
Tabelle1.Range("D10").ClearContents
'Blattschutz aufheben
  Tabelle1.Protect
End Sub
Den gefundenen ArtikelNr, samt den Daten in der Zeile, möchte ich in eine andere Tabelle (Buchung) übertragen.
An der Stelle -Selection.Delete Shift:=xlUp- scheitere ich und bekomme Fehlermeldung: Zellen in einem gefilternen Bereich oder in einer gefilternen Tabelle
können nicht verschoben werden.
Sub Datenbankzeile_to_Formular()
     Dim rng As Range
     Dim acr As Single
     Dim cpy_rng As Range, to_rng As Range
     Worksheets("Lagerbestand").Unprotect
     acr = ActiveCell.Row
     Set cpy_rng = Range(Cells(acr, "B"), Cells(acr, "L"))
     lz_B = Sheets("Buchung").Cells(Rows.Count, "B").End(xlUp).Row
     Set to_rng = Sheets("Buchung").Cells(lz_B + 1, "B")
     Worksheets("Buchung").Unprotect
     cpy_rng.Cut to_rng                                                                                  'ausschneiden
     Selection.Delete Shift:=xlUp                                                                     'markierte Zeile löschen
     Worksheets("Lagerbestand").Protect
     Sheets("Buchung").Activate
     Buchung.Show 0
     Worksheets("Buchung").Protect
 End Sub
Kann mir bitte jemand helfen dieses Problem zu lösen?
Vielen Dank im Voraus

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Codemodifizierung
20.01.2023 08:41:21
Der
Hallo,
ich kann es leider nicht testen, aber ich würde erst kopieren und dann die Zeilen löschen (statt ausschneiden zu verwenden). Versuch es doch mal so:
Sub Datenbankzeile_to_Formular()
     Dim rng As Range
     Dim acr As Single
     Dim cpy_rng As Range, to_rng As Range
     Worksheets("Lagerbestand").Unprotect
     acr = ActiveCell.Row
     Set cpy_rng = Range(Cells(acr, "B"), Cells(acr, "L"))
     lz_B = Sheets("Buchung").Cells(Rows.Count, "B").End(xlUp).Row
     Set to_rng = Sheets("Buchung").Cells(lz_B + 1, "B")
     Worksheets("Buchung").Unprotect
     cpy_rng.Copy to_rng                                                                                  'ausschneiden
     cpy_rng.EntireRow.Delete                                                                     'markierte Zeile löschen
     Worksheets("Lagerbestand").Protect
     Sheets("Buchung").Activate
     Buchung.Show 0
     Worksheets("Buchung").Protect
 End Sub
Gruß
Michael
Anzeige
AW: Codemodifizierung
20.01.2023 08:54:16
Dieter
Hallo Michael,
super, funktioniert.
Vielen Dank
AW: Codemodifizierung
20.01.2023 08:56:12
Dieter
Eine Frage habe ich noch:
wie kann man den Code abändern, damit ich nach ArtikelNR oder nach Artikel suchen kann?
Sub Autofilter()
  'Blattschutz aufheben
      Tabelle1.Unprotect
  Tabelle1.Range("B11").Autofilter 3, Tabelle1.Range("D10").Value                             'nach ArtikelNr filtern
  Tabelle1.Range("D10").ClearContents
  'Blattschutz aufheben
    Tabelle1.Protect
  End Sub
Kann mir jemand helfen bitte?
AW: Codemodifizierung
20.01.2023 14:31:20
Yal
Hallo Dieter,
Makrorekorder ("MR") starten, Aktion durchführen, Aufnahme beenden, Code anschauen, lesen, verstehen, schlau und gar irgendwann "VBA-Profi" werden.
Sorry für die unterschwellige Frechheit, aber ich habe den Code nicht in Kopf. Brauche ich auch nicht, denn solche Coding lasse ich mir immer vom MR situationabhängig aufzeichnen (nicht faul sondern erfahren). Nur dass ich ein Grundgerüst bräuchte, um es zu machen. Daher ist es schneller (und auch lehrreicher), wenn Du es machst.
VG
Yal
Anzeige
AW: Codemodifizierung
20.01.2023 16:05:31
Dieter
Hallo Yal,
leider bin ich nicht auf dem Stand wie Du.
Ich weiß wie man den MR startet, aber ich weiß nicht wie ich oder-Verknüpfung machen soll, deswegen habe ich eine Frage gestellt.
Kann mir bitte jemand helfen?
LG Dieter
AW: Autofilter mit zwei Kriterien
20.01.2023 16:30:08
GerdL
Moin Dieter,
in welcher Zelle steht der Suchwert für die Artikelbezeichnung
und in welcher Spalte ist die Artikelbezeichnung zu suchen?
In Spalte D wie auch die Artikelnummer?
Dann musst du beim Autofilter Fields:=3, Criteria1:= ... , Operator:= xlOr, Criteria2:= ...
angeben.
Falls nein, brauchst du eine Hilfsspalte mit Formel oder
eine Schleife zum Durchsuchen der Zeilen von ?/ bis ?
um die unrelevanten Zeilen per Code auszublenden.
Gruß Gerd
Anzeige
AW: Autofilter mit zwei Kriterien
21.01.2023 21:54:30
Dieter
Hallo Gerd,
der zu suchende Artikel steht in Zelle E10.
Wie muss der Code verändert werden, damit ich nach ArtNr in D10 oder Artikel in E10 suche?
Sub Autofilter()
      'Blattschutz aufheben
          Tabelle1.Unprotect
      Tabelle1.Range("B11").Autofilter 3, Tabelle1.Range("D10").Value                             'nach ArtikelNr filtern
      Tabelle1.Range("D10").ClearContents
      'Blattschutz aufheben
        Tabelle1.Protect
      End Sub
Vielen Dank im Voraus.
LG Dieter
AW: Autofilter mit zwei Kriterien
23.01.2023 17:56:41
Dieter
Hallo,
vielen Dank für die Antworten.
Ich komme irgendwie nicht weiter. Kann mir bitte jemand helfen da meine Kenntnisse dafür nicht ausreichen.
wie kann man den Code abändern, damit ich nach ArtikelNR oder nach Artikel suchen kann?
In Spalte D stehen ArtikelNR und in Spalte E stehen Artikel.
Der zu suchende ArtikelNr steht in Zelle D10. Der zu suchende Artikel steht in E10.
Oder kann man so machen, dass der zu suchende ArtikelNr oder Artikel in Zelle D10 steht,
aber es wird entweder in Spalte D nach ArtikelNR oder in Spalte E nach Artikel gesucht.

Sub Autofilter()
       'Blattschutz aufheben
           Tabelle1.Unprotect
       Tabelle1.Range("B11").Autofilter 3, Tabelle1.Range("D10").Value                             'nach ArtikelNr filtern
       Tabelle1.Range("D10").ClearContents
       'Blattschutz aufheben
         Tabelle1.Protect
       End Sub
Kann mir jemand helfen bitte?
Anzeige
AW: Autofilter mit zwei Kriterien
23.01.2023 20:40:56
GerdL
Hallo Dieter,
probier mal.
Sub Unit()
With Tabelle1
    .Unprotect
    With .UsedRange.Columns(.UsedRange.Columns.Count + 1)
    .FormulaR1C1 = "=IF(OR(RC4=R10C4,RC5=R10C5,ROW()11),"""",1)"
    .Formula = .Value
    End With
    With .UsedRange.Columns(.UsedRange.Columns.Count)
        If WorksheetFunction.CountA(.Cells) Then
            .SpecialCells(xlCellTypeConstants).EntireRow.Hidden = True
            .Clear
        End If
    End With
    .Protect
End With
End Sub
Gruß Gerd
AW: Autofilter mit zwei Kriterien
25.01.2023 20:22:47
Dieter
Hallo Gerd,
vielen Dank für deine Hilfe. Leider funktioniert dein Code zum Teil,
Wenn ich nach ArtikelNr suche, findet er auch sofort. Nachdem ich den Code ausgebucht habe, habe ich aber keine Tabelle mehr.
Mein Autofiltersymbol funktioniert nicht mehr.
Wenn ich nach Artikel suche, mal findet man, mal nicht.
Ich füge die Tabelle bei, damit es verständlicher wird.
https://www.herber.de/bbs/user/157470.xlsm
Vielen Dank nochmal.
Gruß Dieter
Anzeige
AW: Codemodifizierung
20.01.2023 16:47:56
Yal
Hallo Dieter,
wenn die beide Information in 2 verschiedenen Spalten vorliegen, gibt es keine Lösung, weil 2 Filter sich immer "und" ergänzen.
Man kann eine temporäre Hilfespalte einführen, wo Nummer und Bezeichnung zusammengesetzt werden und ein Filter "enthalt" Inhalt von D10.
Andere Möglichkeit: die Liste als Tabelle umwandeln (sog. intelligente Tabelle: Menü "Einfügen", "Tabelle") und mit einer Abfrage* filtern: Menü "Daten", "aus Tabelle", dort eine benutzerdefinierte Spalte mit Verkettung Nummer und Bezeichnung, Filter "enthält" und abschliessend Spalte entfernen. Dann "Schliessen & laden".
Damit wird die temporäre Hilfespalte erzeugt, gefiltert und anschliessend entsorgt und das Ergebnis kommt an einer andere Stelle.
*: sog. Power Query Abfrage, das "no code/low code" Transformationstool von Excel. Viel leichter zu beherrschen als VBA.
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige