Office: Range.Find Methode Suche mit oder ohne Leerzeichen möglich?

Helfe beim Thema Range.Find Methode Suche mit oder ohne Leerzeichen möglich? in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo allerseits! Hätte da mal eine Frage. Hab ein tolles VBA-Script gefunden, dass schon fast so tut wie ich will. Ich suche nach einem bestimmten... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von max15_8225, 28. Juli 2019.

  1. Range.Find Methode Suche mit oder ohne Leerzeichen möglich?


    Hallo allerseits!

    Hätte da mal eine Frage.

    Hab ein tolles VBA-Script gefunden, dass schon fast so tut wie ich will.

    Ich suche nach einem bestimmten String in einem anderen Tabellenblatt.
    zB. "HD 80236). Wird dieser Wert in einer Zeile im anderen Tabellenblatt gefunden wird die gesamte Zeile zu den Ergebnissen kopiert. Funktioniert soweit sehr gut.

    Nur bekomme ich das gebacken, dass die Ergebnisse auch kommen, WENN man aus versehen das Leerzeichen vergisst? "HD80236".

    Wäre cool wenn man iwie einen Code hätte der zwischen letzten Buchstaben und erster Ziffer ein Leerzeichen hinzufügt, den neuen String in eine zusätzliche Variable schreibe und dann eventuell beide Werte sucht.

    Weiß nur echt gerade nicht, wie ich das umsetzen soll.
    Hat jemand eine Idee?

    LG und Danke
    Markus

    Hier der Codeausschnitt:

    Code:
    :)
     
    max15_8225, 28. Juli 2019
    #1
  2. Hi,

    versuch mal

    Code:
     
  3. Hi Marco!

    okay, das kann man machen. Funktioniert jetzt auch so.

    Nur hab ich jetzt folgendes Problem:
    Aber wie füge ich den Stern automatisiert ein? Der Suchbegriff wird eingelesen und es kann zB auch sein das der suchwert "W236" ist und dann müsste der neue suchbegriff "W*236" Lauten?

    Der Stern müsste immer zwischen letzten Buchstaben und erster Ziffer eingefügt werden.

    LG und danke für deine Antwort,
    Markus
     
    max15_8225, 30. Juli 2019
    #3
  4. Range.Find Methode Suche mit oder ohne Leerzeichen möglich?

    Nimm den Suchbegriff in eine Schleife und prüfe Zeichen für Zeichen, ab welcher Stelle IsNumeric(Zeichen) = True zurückgibt.

    An dieser Stelle, -1 , dann mit der Mid()-Funktion Deine Zeichenkette entsprechend manipulieren.
     
  5. Hallo!

    Also zählen tut er mir schon mal aber mit dem zuweisen hauts nicht so richtig hin.... Bekomme eine Typenunverträglichkeit angezeigt.

    Gruß

    Code:
     
    max15_8225, 30. Juli 2019
    #5
  6. Du verwendest einmal Suchzelle und einmal Suchbegriff:

    Code:
    Versuch das mal ....
     
  7. Anschließend erlaube ich mir Dir an dieser Stelle ein paar Empfehlungen mitzugeben:

    a)
    Verwende Option Explicit in jedem Modul (stets an erster Stelle) um eine Variablendeklaration zu erzwingen. Somit stellt der Kompiler sicher, dass Variablen verwendet werden welche auch deklariert wurden. (Stichwort: Suchzelle/Suchbegriff)
    Link: https://docs.microsoft.com/de-de/dot...icit-statement

    b)
    Verwende aussagekräftige Variablennamen (was Du bereits machst) plus entsprechende Kennzeichnung des Datentyps (Namenskonvention)
    Link: https://de.wikibooks.org/wiki/VBA_in...nskonventionen
    Hinweis: Ob du strName oder sName für String verwendest is zwar Wurscht; bei dem zuletzt genannten schreibst Du aber zwei Zeichen weniger.

    c)
    Standardeigenschaften von Objekten
    ActiveSheet.Range("B4") ist das Gleiche wie ActiveSheet.Range("B4").Value, da die Value-Eigenschaft die Standardeigenschaft des Range-Objektes ist. Dazu braucht es aber keine Variable des Datentyps Variant, da hier ein String erkannt und zurückgegeben wird.
     
  8. Range.Find Methode Suche mit oder ohne Leerzeichen möglich?

    Hi Mase!

    Danke!
    Es funktioniert, danke dir vielmals für deine Hilfe!

    Hab noch was cooles:

    Meine Ergebnisse werden in einem Tabellenblatt zusammengefasst.

    Da nicht jede Zeile gefüllt ist wird ein bisschen schwer den Range zu definieren.

    Würd die Zeilen nämlich gern abwechselnd einfärben. Den Code dazu hab ich. Jetzt wirds nur interessant wie ich den Range definiere, da dieser ja variabel ist.

    Code:
     
    max15_8225, 30. Juli 2019
    #8
  9. Hallo Marco,

    die Verwendung der 'Ungarischen Notation' im Programmcode verliert immer mehr an Bedeutung, je mehr man sich den modernen Programmiersprachen nähert.
    In Visual Studio 2015/2017/2019 spielt die Variablen-Deklaration nach 'Datentyp.Benennung ' fast keine entscheidende Rolle mehr, denn das Zauberwort heißt 'Typ-Inference' - der Compiler leitet den Datentyp der Variable auf der linken Seite ab vom Ergebnis der rechten Seite des Gleichheitszeichens.
    Gerade bei der Abfrage per LINQ kann man gar nicht mehr so richtig vorher festlegen, welcher Datentyp zum Schluß der Richtige ist, denn hier wird per Punkt-Operator das Ergebnis der einem Operation gleich weitergeleitet an die nächste Auswerte-Operation; zum Beispiel so:
    Where(...).Sort(...)… und der Lambda Operator '=>' tut sein Übriges dazu, die Variablenbezeichnung kurz & bündig zu halten.
    Auch bei der Verwendung von Delegaten und anonymen Funktionen ist die 'Ungarische Notation' mehr ein Hindernis als Fortschritt.

    Gruß von Luschi
    aus klein-Paris
     
    Luschi, 30. Juli 2019
    #9
  10. Hi Luschi,

    mag für die Moderne zutreffen. In VBA bleibts old school bei mir. Schon allein wegen dem Feeling *wink.gif*
     
  11. Warum möchtest Du die ganze Zeile (also bis zu 16384 Spalten) färben?
    Desweiteren habe ich mir hier mal sagen lassen, dass .ColorIndex out und .Color = RGB() angesagt ist.

    Wenn Dir die Zeile und Spalte bekannt ist, kannste mit Range(Cells(),Cells()) arbeiten.
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
  12. Hallo Marco!

    Danke vielmals für deine Hilfe. Hab das aber dann doch selber geschafft.
    Da die Spaltenanzahl bei mir variabel ist hab ich vorher noch eine Zählerschleife gescriptet.

    Der entsprechende Range wird dann alle zwei Zeilen mit grau gefärbt.

    Hätte da noch was Interessantes zu programmieren:
    Ich hab eine Tabelle mit diversen Einträgen. ca 300 Zeilen

    In Spalte A befindet sich: eine Identifikationsnummer
    In Spalte B befindet sich: Tätigkeit (wird in Liste ausgewählt, 5 verschiedene)
    In Spalte C befindet sich: Kalenderwoche

    Was ich brauche würde, wäre eine Sortierfunktion, die erst nach Spalte A, dann nach Spalte B und dann nach Spalte C sortiert, die betreffenden Zeilen untereinander kopiert und dann die Spalte F (hier steht die Stundenanzahlt) summiert. Die Summe wird dann in die nächste freie Zeile von Spalte F.

    Ändert sich ein Kriterium von Spalte A,B,C sollte wieder ein neuer "Block" angefangen werden. (1 Zeile bleibt frei)

    Ist also quasi eine Sortierfunktion, welche recht Praktisch sein kann. Eventuell ist das mit Autofilter (Ergebnisse, temporär kopieren und wieder einfügen zu lösen? Das wird aber bei der Anzahl nicht besonders schnell sein)

    Bin für jeden Ansatz dankbar, Code kommt auf jedenfall dann hier in den Thread wenn er fertig ist.

    LG Markus
     
    max15_8225, 7. August 2019
    #12
  13. Range.Find Methode Suche mit oder ohne Leerzeichen möglich?

    Hi Markus,

    kannst Dein Thema ja neu erstellen, aber dieses als erledigt kennzeichnen.

    Wenn es ein interessantes Thema ist, würde Ich die Öffentlichkeit ansprechen, damit dir ggf. weitere interessante Lösungen angeboten werden.
     
  14. Hi Marco!

    Danke wieder für die schnelle Antwort. Ist echt besser. Werd ich so machen.

    LG Markus
     
    max15_8225, 7. August 2019
    #14
Thema:

Range.Find Methode Suche mit oder ohne Leerzeichen möglich?

Die Seite wird geladen...
  1. Range.Find Methode Suche mit oder ohne Leerzeichen möglich? - Similar Threads - Range Find Methode

  2. SVERWEIS mit Range von bis funktioniert nicht?

    in Microsoft Excel Hilfe
    SVERWEIS mit Range von bis funktioniert nicht?: Hallo, ich komme leider nicht weiter bei meinem SVERWEIS. Spalte A und C werden ausgefüllt. In Spalte B sollte dann der SVERWEIS sein. Leider komm ich mit "von bis" nicht weiter und jedes...
  3. Macro Fehler Subscript out of Range

    in Microsoft Excel Hilfe
    Macro Fehler Subscript out of Range: Hallo Zusammen, ich muesste aus ca. 500 pdf's mit teilweise 90 oder evtl. sogar mehr Seiten, ein paar Daten auslesen. Ich habe ein Makro, dass ich vor Jahren benutzt habe, mit dem ich erst die...
  4. Laufzeitfehler 1004 "Die Methode 'Range' für das Objekt '_Global' ist fehlgeschlagen".

    in Microsoft Excel Hilfe
    Laufzeitfehler 1004 "Die Methode 'Range' für das Objekt '_Global' ist fehlgeschlagen".: Hallo Leute,*:)* nachdem ich in die "addIn 1.2.4" ein Sheet RKL eine Dropdownliste und ein Togglebutton hinzugefügt habe bekomme ich beim aufruf der UF die Fehlermeldung "Laufzeitfehler 1004 "Die...
  5. 2x Worksheet_Change(ByVal Target As Range)

    in Microsoft Excel Hilfe
    2x Worksheet_Change(ByVal Target As Range): Hallo zusammen, ich bin VBA-Anfänger und habe die ersten Codes erstellt. Nun möchte ich 2 von Ihnen, welche einzeln funktionieren, zusammenfügen, so dass beide entsprechend durchgeführt werden....
  6. Turnierdatenbank Punkteausweisung anhand Rang

    in Microsoft Excel Hilfe
    Turnierdatenbank Punkteausweisung anhand Rang: Hallo Habe eine Turnierdatenbank, wo ich aus einem separatem Sheet die entsprechenden Rangpunkte automatisch herauslesen kann und - wenn ich den Rang z.B. 2 eingebe - die Punkte dann auf dem...
  7. Hilfe! Loop ohne Ende ...

    in Microsoft Excel Hilfe
    Hilfe! Loop ohne Ende ...: Sub FindeProd_Zeilen() Dim c As Range Dim firstAddress As String With Worksheets("Terminverschiebungen").Columns(Spalte_Produktion) Set c =...
  8. 1. Zelle eines Range-Objektes per VBA finden

    in Microsoft Excel Hilfe
    1. Zelle eines Range-Objektes per VBA finden: Hallo, Forumsteilnehmer, ich habe eine Xl-2003-Datei, in jedem Blatt ist ein Bereich hinterlegt, der sich aber von Blatt zu Blatt in Größe, Startzeile und -Spalte verändert. Wie kann ich per VBA...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden