Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
468to472
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
468to472
468to472
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Suche Zellenwert

Suche Zellenwert
16.08.2004 22:41:35
Alexander
Hallo hab mal wieder ein VBA Problem:
Ich würde gerne in der ersten Zeile nach einem bestimmten Zellenwert suchen z.B. Name3.
Falls Name3 vorhanden ist soll der Spaltenwert zurück gegeben werden.
z.B. Falls Name3 z.B. in der Spalte „V“ steht soll diese Spalte so übergeben werden, dass sie wie folgt weiter verwendet werden kann.
Oder falls Name3 in Spalte H steht soll H übergeben werden
Set spalte1 = Workbooks("Mappe1.xls").Worksheets("Process").Columns("V",bzw. “H”)
Ich hab schon viel versucht aber leider klappt das alles nicht.
Habt Ihr dazu ein paar Tipps?
Gruß und Danke schon mal
Alexander

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suche Zellenwert
Ramses
Hallo
das würde ich in eine Funktion auslagern

Sub test_Find()
Dim sStr As Variant
sStr = InputBox("Suchbegriff eingeben:", "Suche")
If sStr = "" Then Exit Sub
If simple_FindF(sStr) = False Then
Debug.Print "Nicht gefunden"
Else
Debug.Print "Suchbegriff in Spalte " & simple_FindF(sStr)
End If
End Sub


Function simple_FindF(fStr As Variant) As Variant
'by Ramses
'Sucht Begriff und zeigt an ob gefunden oder nicht
'Aufruf in B1 mit =Simple_Find(A1)
'wenn der Suchbegriff in A1 steht
Dim myC As Excel.Range
Dim wkb As Workbook, wks As Worksheet
Set wkb = Workbooks("Mappe3")
Set wks = wkb.Worksheets("Process")
With wks.UsedRange
Set myC = .Find(fStr, LookIn:=xlValues)
If Not myC Is Nothing Then
simple_FindF = "Begriff in " & wks.Name
simple_FindF = myC.Column
Exit Function
Else
simple_FindF = False
End If
End With
End Function

Verwenden kannst du das dann aber auch so
spalte1 = Workbooks("Mappe1.xls").Worksheets("Process").Columns(Simple_find("Dein Suchbegriff")
Gruss Rainer
Anzeige
AW: Suche Zellenwert
18.08.2004 18:43:48
Alexander
Hallo Ihr Zwei,
Danke vielmals für Eure Hilfe.
Jetzt hab ich es im Prinzip hinbekommen, auch wenn ich alles in eine Sub gepackt habe. Über die Funktion auffrufen hab ich leider nicht hinbekommen.
Darf ich mich deswegen nochmals an Euch wenden ?
Gruß Alexander
AW: Suche Zellenwert
18.08.2004 22:50:21
Matthias
Hallo Alexander,
die Bezeichnung "Spalte" der Funktion muss geändert werden, denn diese Funktion gibt es schon. Also z.B. spalte0():

Function spalte0(n)
Dim a As Range, s As Integer
Set a = Range("1:1").Find(what:=n, lookat:=xlWhole)
If Not a Is Nothing Then s = a.Column Else s = 0
spalte0 = s
End Function

Gruß Matthias
Anzeige
AW: Suche Zellenwert
19.08.2004 15:38:11
Alexander
Hallo ich mal wieder,
Wie schon geschrieben hab ich es nicht geschafft das ganze über eine Function aufzurufen.
Ich hab alles in ein Sub. gepackt und leider auch nur wie folgt in bekommen aber es läuft, obwohl das ziemlich kaotisch ist. Du hast natürlich recht, wenn ich die Funktion spalte2(n) nenne usw.
Das hab ich auch schon versucht, aber halt nicht hinbekommen.
Mein Problem liegt wohl daran, das ich zwei verschiedene Mappen habe. Den Code ruf ich über ein Macro in einer weiteren Mappe auf, aber gesucht wird in der anderen Mappe (Mappe1) in der Tabelle (Process).
Hier mal ein Ausschnitt, ich kann Dir aber auch den gesamte Code schicken.
Public Sub Main_Test1()

'On Error GoTo Err_In_Main_Test

Dim spalte, tabelle, kriterium, spalte1, tabelle1, kriterium1, spalte2, tabelle2, kriterium2, spalte3, tabelle3, kriterium3
Dim spalte4, tabelle4, kriterium4, n As Variant


'Für Sucessors aus Spalte X Kriterium 8
n = "Successors"
Dim s
Dim myC As Excel.Range
Dim wkb As Workbook, wks As Worksheet
Set wkb = Workbooks("Mappe1.xls")
Set wks = wkb.Worksheets("Process")
With wks.UsedRange
Set myC = Workbooks("Mappe1.xls").Worksheets("Process").Range("1:1").Find(what:=n, lookat:=xlWhole)
If Not myC Is Nothing Then
s = Left(myC.EntireColumn.Address(0, 0), InStr(myC.EntireColumn.Address(0, 0), ":") - 1)
Set spalte2 = Workbooks("Mappe1.xls").Worksheets("Process").Columns(s)
Else
s = ""
End If
End With

Set tabelle2 = Workbooks("TestDatei_2.xls").Worksheets("Export")
kriterium2 = 8




'Für gewährtem Zeittyp aus Spalte V bei 8

m = "Gewährter Zeittyp"
Dim sG
Dim myCG As Excel.Range
Dim wkbG As Workbook, wksG As Worksheet
Set wkbG = Workbooks("Mappe1.xls")
Set wksG = wkbG.Worksheets("Process")
With wksG.UsedRange
Set myCG = Workbooks("Mappe1.xls").Worksheets("Process").Range("1:1").Find(what:=m, lookat:=xlWhole)
Und das ganze noch weitere 3 mal.
Geht das auch irgendwie kürzer?
Gruß Alexander
Anzeige
AW: Suche Zellenwert
16.08.2004 23:44:11
Matthias
Hallo Alexander,
mein Vorschlag:

Function spalte(n)
Dim a As Range, s As Integer
Set a = Range("1:1").Find(what:=n, lookat:=xlWhole)
If Not a Is Nothing Then s = a.Column Else s = 0
spalte = s
End Function

Zu verwenden so:
MsgBox Spalte("test")
wenn z.B. in Spalte F "test" steht wird 6 zurückgegeben, wenn es nicht gefunden wird, 0.
Ich finde, die Spaltennummer ist besser weiterzuverwenden als der Buchstabe.
Wenn du doch den Buchstaben brauchst, kannst du ihn so erhalten:

Function spalte2(n)
Dim a As Range, s As String
Set a = Range("1:1").Find(what:=n, lookat:=xlWhole)
If Not a Is Nothing Then
s = Left(a.EntireColumn.Address(0, 0), InStr(a.EntireColumn.Address(0, 0), ":") - 1)
Else
s = ""
End If
spalte2 = s
End Function

Gruß Matthias
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige