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

Suche Zellenwert

Betrifft: Suche Zellenwert von: Alexander
Geschrieben am: 16.08.2004 22:41:35

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

  


Betrifft: AW: Suche Zellenwert von: Ramses
Geschrieben am: 16.08.2004 23:11:32

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


  


Betrifft: AW: Suche Zellenwert von: Alexander
Geschrieben am: 18.08.2004 18:43:48

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


  


Betrifft: AW: Suche Zellenwert von: Matthias G
Geschrieben am: 18.08.2004 22:50:21

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


  


Betrifft: AW: Suche Zellenwert von: Alexander
Geschrieben am: 19.08.2004 15:38:11



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


  


Betrifft: AW: Suche Zellenwert von: Matthias G
Geschrieben am: 16.08.2004 23:44:11

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


 

Beiträge aus den Excel-Beispielen zum Thema "Suche Zellenwert "