Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

VBA Werte in Spalte suchen

Betrifft: VBA Werte in Spalte suchen von: Sergen I.
Geschrieben am: 15.09.2020 07:38:09

Guten Morgen,
ich benötige Hilfe bei meinem VBA Code..

Und zwar habe ich eine Suchfunktion eingebaut. Der eingegebene Wert wird in der 1. Spalte gesucht und z.B. der Wert 3 Spalten weiter rechts ausgegeben. Das habe ich mit der Funktion Offset gemacht. Nun möchte ich jedoch, dass ich die Spalte mit dem "Namen" anspreche, da es sein kann, dass in Zukunft der Wert nicht mehr in der Spalte 3 weiter rechts, sondern 7 Spalten weiter rechts stehen wird. Hier ein Ausschnitt wie ich es habe.

If Not Sachnummer Is Nothing Then 'Falls die Sachnummer gefunden wurde
Dim Spezifikation As Range 'setze Spezifikation als Variable
Dim beh?lter As Range 'setze beh?lter als Variable
Dim Prozent As Range 'setze Prozent als Variable
Dim L?nge As Range 'setze L?nge als Variable
Set beh?lter = Sheets("Sachnummern").Columns(1).Find(what:=TextBox1.Text, lookat:=xlWhole)
Set Spezifikation = Sheets("Spezifikationen").Columns(1).Find(what:=Sachnummer.Offset(0, 6).Value, lookat:=xlWhole)
If Not Spezifikation Is Nothing Then 'Wenn das Feld der Spezifikation nicht leer ist, dann
Sheets("Kontrolle").TextBoxR.Caption = Spezifikation.Offset(0, 2).Value
Sheets("Kontrolle").TextBoxa.Caption = Spezifikation.Offset(0, 3).Value
Sheets("Kontrolle").TextBoxB.Caption = Spezifikation.Offset(0, 4).Value
Sheets("Kontrolle").TextBoxc.Caption = Spezifikation.Offset(0, 5).Value

Vielen dank im Voraus
MFG Sergen

Betrifft: AW: VBA Werte in Spalte suchen
von: ChrisL
Geschrieben am: 15.09.2020 08:07:16

Hi

Ich vermute in etwa so...
Sachnummer.Offset(0, Range("myName").Column - 1).Value
cu
Chris

Betrifft: AW: VBA Werte in Spalte suchen
von: Sergen I.
Geschrieben am: 15.09.2020 08:15:15

Hallo, erst mal vielen Dank für die schnelle Rückmeldung.

Leider funktioniert es so auch nicht. Es wird folgende Fehlermeldung angezeigt:

Die Methode range für das Objekt _Global ist fehlgeschlagen. :(

Betrifft: AW: VBA Werte in Spalte suchen
von: fcs
Geschrieben am: 15.09.2020 08:45:45

Hallo Sergen,

du musst dann vor der Zeile mit dem Offset die Spalte mit dem Namen suchen und dann den Offset entsprechend anpassen.

LG
Franz
Sub aa()
Dim Spezifikation As Range 'setze Spezifikation als Variable
Dim behälter As Range 'setze behälter als Variable
Dim Prozent As Range 'setze Prozent als Variable
Dim Länge As Range 'setze L?nge als Variable
Dim lngspalte As Long

If Not Sachnummer Is Nothing Then 'Falls die Sachnummer gefunden wurde
  Set behälter = Sheets("Sachnummern").Columns(1).Find(What:=TextBox1.Text, lookat:=xlWhole)
  
  lngspalte = fncSpalte(wks:=Worksheets("Spezifikation"), zeile:=1, varSuch:="Textxy")
  If lngspalte = 0 Then Exit Sub
  
  Set Spezifikation = Sheets("Spezifikationen").Columns(1).Find(What:=Sachnummer.Offset(0, _
    lngspalte - 1).Value, lookat:=xlWhole)
  If Not Spezifikation Is Nothing Then 'Wenn das Feld der Spezifikation nicht leer ist, dann
      Sheets("Kontrolle").TextBoxR.Caption = Spezifikation.Offset(0, 2).Value
      Sheets("Kontrolle").TextBoxa.Caption = Spezifikation.Offset(0, 3).Value
      Sheets("Kontrolle").TextBoxB.Caption = Spezifikation.Offset(0, 4).Value
      Sheets("Kontrolle").TextBoxc.Caption = Spezifikation.Offset(0, 5).Value
'...
'...
  End If
End If

End Sub

Function fncSpalte(wks As Worksheet, zeile As Long, varSuch) As Long
    'Ermittelt in der Zeile des Tabellenblatts die Nummer der Spalte mit dem Suchbegriff
    Dim rngSpalte As Range
    With wks
      Set rngSpalte = .Rows(zeile).Find(What:=varSuch, LookIn:=xlValues, lookat:=xlWhole)
    End With
    If rngSpalte Is Nothing Then
      fncSpalte = 0
      MsgBox "Suchtext """ & varSuch & """ in Zeile " & zeile & " in Blatt """ & wks.Name _
        & """ nicht gefunden",  vbOKOnly, "Spaltentitel suchen"
    Else
      fncSpalte = rngSpalte.Column
    End If
End Function


Beiträge aus dem Excel-Forum zum Thema "VBA Werte in Spalte suchen"