Microsoft Excel

Herbers Excel/VBA-Archiv

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

Zeilenabfrage?



Excel-Version: 10.0 (Office XP)

Betrifft: Zeilenabfrage?
von: Jörn
Geschrieben am: 10.06.2002 - 16:32:53

Hi Leute,
ich habe folgendes Problem:Ich habe zwei Spalten, in diesen Spalten stehen Namen welche doppelt vorkommen können. Ich brauche die Zeilenangabe bestimmter Namenspaare z.B. Peter(in Spalte A, Zeile 5) u. Frank(in Spalte B, Zeile 5): beide diesem Bsp. sollte also "5" als Ergebnis rauskommen.
Danke!
Ciao, Jörn!
  

Re: Zeilenabfrage?
von: WernerB.
Geschrieben am: 10.06.2002 - 19:28:00

Hallo Jörn,

teste doch mal dieses Makro und sage mir, was Du davon hältst (Groß-/Kleinschreibung ist egal):


Option Explicit
Sub NamensPaare()
Dim NaPa As String, n1 As String, n2 As String
Dim As Long, laR As Long
Dim vorh As Boolean
    NaPa = InputBox("Namenspaar - getrennt durch ein Leerzeichen - eingeben:", "Namenspaar")
    If NaPa = "" Then
      MsgBox "Nichts eingegeben - Makroabbruch !", _
        vbExclamation, "Hinweis für " & Application.UserName & ":"
      Exit Sub
    End If
    If InStr(NaPa, " ") = 0 Then
      MsgBox "Eingabe ohne Leerzeichen - Makroabbruch !", _
        vbExclamation, "Hinweis für " & Application.UserName & ":"
      Exit Sub
    End If
    vorh = False
    laR = Cells(Rows.Count, 1).End(xlUp).Row
    n1 = LCase(Left(NaPa, InStr(NaPa, " ") - 1))
    n2 = LCase(Right(NaPa, Len(NaPa) - InStr(NaPa, " ")))
    For i = 1 To laR
      If LCase(Cells(i, 1).Text) = n1 And LCase(Cells(i, 2).Text) = n2 Then vorh = True
      If LCase(Cells(i, 1).Text) = n2 And LCase(Cells(i, 2).Text) = n1 Then vorh = True
      If vorh = True Then Exit For
    Next i
    If vorh = True Then
      MsgBox "Namenspaar '" & NaPa & "' in Zeile " & i & " gefunden !", _
        vbExclamation, "Hinweis für " & Application.UserName & ":"
    Else
      MsgBox "Namenspaar '" & NaPa & "' wurde nicht gefunden !", _
        vbExclamation, "Hinweis für " & Application.UserName & ":"
    End If
End Sub

Viel Erfolg wünscht
WernerB.
  

Nicht schlecht, aber...
von: Jörn
Geschrieben am: 10.06.2002 - 20:58:27

Hallo Werner,
das funktioniert super, aber ist nicht ganz das, was ich suche. In Tabelle 3 habe ich alle Namen aufgelistet. Anhand dieser Namen brauche ich einen Verweis auf eben diese Tabelle 1, damit ich die zu den Namenspaaren gehörigen Werte aus Tabelle 1 in Tabelle 3 auswerten kann, dafür brauch ich aber die Zeilennummer um auf die Werte zugreifen zu können. Zudem soll das alles automatisch, ohne zusätzliche Eingabe funktionieren. Bsp.: In Tabelle 3: Suche das Namenspaar "Tabelle3!A1" u. "Tabelle3!A2" in Tabelle1! und gib mir die Zeilennummer!
Vielleicht noch ne Idee??
Danke!
Ciao, Jörn!
  

Re: Nicht schlecht, aber...
von: WernerB.
Geschrieben am: 10.06.2002 - 21:38:54

Hallo Jörn,

markiere in Tabelle3 die beiden Namen (Strg-Taste) und starte dann dieses Makro:


Option Explicit
Sub NamensPaare()
Dim As Range
Dim NaPa As String, n1 As String, n2 As String
Dim As Long, laR As Long
Dim vorh As Boolean
    For Each c In Selection
      i = i + 1
      If i = 1 Then n1 = LCase(c.Text)
      If i = 2 Then n2 = LCase(c.Text)
    Next c
    If i <> 2 Then
      MsgBox "Es wurden keine zwei Zellen markiert - Makroabbruch !", _
        vbExclamation, "Hinweis für " & Application.UserName & ":"
      Exit Sub
    End If
    NaPa = n1 & " " & n2
    With Sheets("Tabelle1")
      vorh = False
      laR = .Cells(Rows.Count, 1).End(xlUp).Row
      For i = 1 To laR
        If LCase(.Cells(i, 1).Text) = n1 And LCase(.Cells(i, 2).Text) = n2 Then vorh = True
        If LCase(.Cells(i, 1).Text) = n2 And LCase(.Cells(i, 2).Text) = n1 Then vorh = True
        If vorh = True Then Exit For
      Next i
    End With
    If vorh = True Then
      MsgBox "Namenspaar '" & NaPa & "' in Zeile " & i & " gefunden !", _
        vbExclamation, "Hinweis für " & Application.UserName & ":"
    Else
      MsgBox "Namenspaar '" & NaPa & "' wurde nicht gefunden !", _
        vbExclamation, "Hinweis für " & Application.UserName & ":"
    End If
End Sub

Viel Erfolg wünscht
WernerB.
  

Wird immer besser....
von: Jörn
Geschrieben am: 11.06.2002 - 16:27:57

Hallo Werner,
das ist ebenfalls nicht schlecht, aber noch immer nicht das was ich will! Das Problem ist, ich muss ein Makro aufrufen! In Tabelle1 sind den einzelnen Namenspaaren Werte zugeordnet die sich ständig verändern und in Tabelle3 immer aktuell ausgegeben werden sollen ohne extra ein Makro aufzurufen! Ich dachte an eine Formel die in Tabelle1 nach den Namenspaaren sucht, die Zeilennummer errechnet und mit dieser dann auf die Spalte mit den zugehörigen Werten zugreift und auswertet.
Also, wenn du noch ne Idee hast würd ich mich freuen!
Danke!
Ciao, Jörn!

  

Bedaure ....
von: WernerB.
Geschrieben am: 11.06.2002 - 18:13:00

Hallo Jörn,

leider kann ich Dir hier nicht mehr weiterhelfen; solche Formeln sind nicht gerade mein Spezialgebiet.
Sicher wäre es zielführender gewesen, wenn Du von vornherein gesagt hättest, dass Du eine Formel-Lösung suchst.
Vielleicht kann Dir ja einer der Formel-Spezialisten aus dem Forum weiterhelfen.
Und dann wäre da noch diese Adresse:
http://www.excelformeln.de

MfG
WernerB.