Anzeige
Archiv - Navigation
1496to1500
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

VBA - Makro

VBA - Makro
08.06.2016 13:32:38
Chris_CS
Hallo Zusammen,
ich habe eine Übersichtsliste mit diversen Spalten und Inhalten.
Sie sieht grob vereinfacht so aus:
https://www.herber.de/bbs/user/106083.xlsx
Neue Einträge werden immer unten in eine neue Zeile geschrieben.
Ich möchte nun in meinem bestehenden VBA Modul folgendes einführen:
Sobald begonnen wird, ein neuer Eintrag hinzuzufügen, soll nach Ausfüllen von Spalte A und Spalte B (dessen Verkettung in Hilfsspalte C steht und als Suchbegriff dient) geprüft werden, ob in Spalte AB (Abfragespalte zum SVERWEIS) ein X oder ein O steht. Wenn ein X steht, soll der SVERWEIS Makrotechnisch umgesetzt werden und in einer MsgBox (oder sonstiges) ausgegeben werden.
In etwa wie
"Für xyz habe ich folgende(n) Eintra(e)g(e) gefunden:
  • Eintrag 1

  • Eintrag 2

  • Eintrag 3

  • Möchten Sie einen davon verwenden?"
    Dann kann man ja ein UserForm anschließen und die Auswahl in die entsprechende Zelle schreiben lassen. Und der Anwender kann weiter die anderen Spalten füllen.
    Zusammengefasst:
    "Macht jemand einen neuen Eintrag, dann schau ob es zu dem Eintrag schon was gibt.
    Wenn ja, gib ne Message aus"
    Ich habe es mal über das Worksheet_Change Ereignis versucht, es rührt sich aber nix.
    Wie wäre das zu realisieren?
    Danke schonmal
    Viele Grüße
    Chris

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

    Betreff
    Datum
    Anwender
    Anzeige
    AW: VBA - Makro
    10.06.2016 09:02:39
    Chris_CS
    Irgendwelche Ideen?

    AW: VBA - Makro
    11.06.2016 16:49:29
    Hajo_Zi
    Hallo Chris,
    in einer XLSX Datei kann Dein bestehendes Makro nicht enthalten sein.

    AW: VBA - Makro
    13.06.2016 09:45:08
    Chris_CS
    Hallo Hajo,
    ja das ist mir schon klar.
    Ich hab das Ding nur angehängt, damit ihr seht, wie es ungefähr aussieht.
    Selbstverständlich ist meine Datei eine XLSM.
    Meine Anfrage bleibt nach wie vor.
    Mein Code bisher (Ein und Ausblenden von Zeilen, Sortieren etc.):
    Sub CommandButton1_Click()
    '///Deklarationen
    Dim i As Integer 'Dimensionieren einer Zählvariablen
    Dim z As Range 'Variable zur Zellenprüfung
    Dim ymax 'letzte Zeile finden
    Dim bnr As String 'Variable für den SVERWEIS zur Bestellnummer
    ymax = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
    With Application
    .ScreenUpdating = False
    .EnableEvents = False
    .Calculation = xlCalculationManual
    End With
    '///Ausblenden nicht offener Posten
    For y = 3 To ymax '///Schleife über die Zeilen 3 bis "letzte gefüllte Zeile"
    If (Cells(y, 26).Value = "X") Then
    Rows(y).Hidden = True
    Else
    Rows(y).Hidden = False
    End If
    Next y
    With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = xlCalculationAutomatic
    End With
    '///Übersetzung:
    '///Starte bei Zeile 3 (erste gefüllte Zeile nach dem Header)
    '///Wenn in Spalte "Z" ein "X" steht (Abfrage über leere Zellen in Excel, einschließlich  _
    Wertevergleich)
    '///Dann blende die komplette Zeile aus (da Posten nicht offen)
    '///Sollte ein "O" stehen
    '///Prüfe ob in Spalte "AA" ein "X" steht (dann handelt es sich um ****)
    '///Blende aus, wenn in "AA" ein "X"
    '///ansonsten: blende nicht aus, da offener Posten
    End Sub
    Sub CommandButton2_Click()
    Dim i As Integer 'Dimensionieren einer Zählvariablen
    Dim ymax 'letzte Zeile finden
    ymax = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
    '///Alles einblenden
    Rows.EntireRow.Hidden = False
    '///Sortieren
    Application.ScreenUpdating = False
    '///nach Produkt ("A") dann nach Kampagne ("B") dann nach SP Nr. ("D")
    Range("A2:S999").Sort _
    Key1:=Range("A3"), Order1:=xlAscending, _
    Key2:=Range("B3"), Order2:=xlAscending, _
    Key3:=Range("D3"), Order3:=xlAscending, Header:=xlYes
    Application.ScreenUpdating = True
    End Sub
    
    Wie gesagt möchte ich eine Abfrage einbauen, dass wenn ein neuer Eintrag in die Liste kommt, dass er eine Prüfung ausführt ("gibt es zu diesem eintrag schon etwas?"), die dann in einer Ausgabe über MsgBox, Userform oder sonst was erfolgt.
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige