PDA

Vollständige Version anzeigen : Weitersuchen bei sheetname?


bearni
15.07.2014, 14:46
Hallo ihr lieben!
Ich habe folgendes Problem:
Dim sh As Worksheet
Data = Right(ActiveSheet.Name, 3)
'LastSh = "Summary"
Set Lastsh = ActiveSheet

For Each sh In ThisWorkbook.Sheets
If (InStr(sh.Name, "Summary") + InStr(sh.Name, "Home") + InStr(sh.Name, "Limit_Sheet") + InStr(sh.Name, "Import")) = 0 Then
Data1 = Right(ActiveSheet.Name, 3)
With sh
.Select
'Refsh = ReferenceSheet
Set Refsh = ActiveSheet
'Name a range on the Reference Sheet
Set rgLookup = Refsh.Range("B:X")
If Data = Data1 Then
'Befehle
Next sh
so funktioniert wunderbar...nur das Problem ist ich habe die Übereinstimmung nicht nur bei 2(Summary und Reference) sondern es kann sein dass es mehrere Reference-Sheets gibt. Aber der makro läuft nur drüber findet eine Übereinstimmung und rechnet damit, aber z.b das 2.Sheet wird nicht genommen, nicht mal gefunden....kann mir da jemand helfen?
danke, lg bearni

Mc Santa
15.07.2014, 15:21
Hallo,

ich verstehe nicht genau was dein Code macht.
Zum Testen fehlt leider die zweite Hälfte.

Was mit auffällt, ist dass du Select arbeitest, das ist eigentlich nicht notwendig.
Außerdem führt dieser Code dazu, dass in sh und Refsh das gleiche Blatt gespeichert ist, oder nicht?
With sh
.Select
'Refsh = ReferenceSheet
Set Refsh = ActiveSheet

VG

PS:
Crossposting innerhalb von 3 Minuten muss dann nicht wirklich sein -.-#

aloys78
15.07.2014, 22:22
Hallo bearni,
so funktioniert wunderbar...nur das Problem ist ich habe die Übereinstimmung nicht nur bei 2(Summary und Reference) sondern es kann sein dass es mehrere Reference-Sheets gibt.
Sorry, in diesem Code-Schnipsel kann ich weder nachvollziehen, was funktioniert, noch wo was auf Übereinstimmung geprüft wird.

Kannst du mal die Aufgabenstellung konkreter beschreiben und den dazu schon vorhandenen Code in Gänze übermitteln ?

Gruß
Aloys

bearni
16.07.2014, 06:33
Guten morgen!Danke für die rückmeldungen.


Dim sh As Worksheet
Data = Right(ActiveSheet.Name, 3)
'LastSh = "Summary"
Set Lastsh = ActiveSheet
For Each sh In ThisWorkbook.Sheets
If (InStr(sh.Name, "Summary") + InStr(sh.Name, "Home") Then

Data1 = Right(ActiveSheet.Name, 3)
With sh
.Select
'Refsh = ReferenceSheet
Set Refsh = ActiveSheet
'Name a range on the Reference Sheet
Set rgLookup = Refsh.Range("B:X")
'Data(Ending from"Summary") is equal to Data1(Ending from ReferenceSheet)
If Data = Data1 Then
Lastsh.Select
'Limit
'Hier sollte das RefSh herangezogen werden
SpecZelle.Offset(2, 0).Select
ActiveCell.Formula = "='" & Refsh & "'!R[11]C[3]"
Selection.AutoFill Destination:=Range("S5:S" & Last_Test_row)
Hier sollte RefSh2 herangezogen werden
DriftZelle.Offset(2, -1).Select
ActiveCell.Formula = "=' " & Refsh2 & "'!R[11]C[2]" Selection.AutoFill Destination:=Range("T5:T" & Last_Test_row)
Else
'do nothing
End If
Next sh
Es geht um einen makro der über alle"summary" laufen soll, zusammengefasst werden alle Sheets die die gleich Temperatur oder sonst was haben. aber nicht jede summary hat gleich viele Reference(also wo die Daten hergeholt werden).und mein Problem ist: wenn ein Übereinstimmung gefunden wurde also z.b Summary_A-40 und Hallo_A-40 wird nicht weiter gesucht aber es gibt noch GutenTag_A-40, aber im Limit sollten alle vorkommen. und meine Frage wie kann man es machen dass die Suche nach Übereinstimmungen weitergeht und dann bei der 2.Übereinstimmung das sheet als RefSh2 und so weiter definiert?
mein versuch:
Lastsh.Select
meanZelle.Offset(1, 0).Select
'Wert= Hallo
Wert = ActiveCell
ActiveCell.Offset(0, 1).Select
'Wert2=GutenTag
Wert2 = ActiveCell
'wenn sh.Name Hallo&-40 dann Refsh
If sh.Name = Wert And sh.Name = Data Then
ActiveCell.Formula = "='" & Refsh & "'!R[11]C[3]"
Selection.AutoFill Destination:=Range("S5:S" & Last_Test_row)
Else
End If
'Wenn sh.Name GutenTag&-40 dann Refsh2
If sh.Name = Wert2 And sh.Name = Data Then
sh.Select
Set Refsh2 = ActiveSheet
Lastsh.Select
DriftZelle.Offset(tmpMean - 1, -1).Select
ActiveCell.Formula = "=' " & Refsh2 & "'!R[11]C[2]"
Selection.AutoFill Destination:=Range("T5:T" & Last_Test_row)
End If
Leider funktioniert das so nicht:( ...
danke für die Hilfe, lg bearni

Mc Santa
16.07.2014, 08:20
Hallo,

ich habe wirklich Verständnisprobleme mit deinem Code. Wenn ich ihn in VBA einfüge, lässt er sich nicht einmal ausführen.
Kannst du einmal lösgelöst von deinem Code beschreiben was passieren soll?

Außerdem habe ich dir einmal folgenden Code geschrieben:
Wenn du dich auf einem "Summary"-Sheet befindest, sucht der Code alle Tabellen mit der gleichen Endung. Suchst du so etwas?
Option Explicit

Sub AlleSheetsMitGleicherEndung()
Dim sh As Worksheet
Dim ending As String

'Überprüfe, ob das aktuelle Blatt "Summary" im Namen hat
If InStr(1, ActiveSheet.Name, "Summary") = 1 Then

'Speichere die Blattendung
ending = Right(ActiveSheet.Name, Len(ActiveSheet.Name) - 7)

'gehe alle Tabellenblätter durch
For Each sh In ThisWorkbook.Sheets

'Suche die Blattendung im durchsuchten Tabellenblatt
If InStr(1, sh.Name, ending) Then

'Prüfe. ob wir nicht das Summary-Blatt selbt gefunden haben
If Not sh.Name = ActiveSheet.Name Then


'mach irgendwas mit dem gefundenen Blatt
MsgBox sh.Name
End If
End If
Next sh
End If
End Sub

VG

bearni
16.07.2014, 08:38
Danke dir erst mal für die Antwort.
da ich nicht weiss wie ich es besser beschreiben soll habe ich eine Datei angehängt, um zu veranschaulichen was ich meine mit der Übereinstimmung und der berechnung...ich hoffe da erkennt man besser was ich meine. sorry dass ich mich so unklar ausdrücke aber ich bin noch sehr schwer in der lernphase :upps:

Mc Santa
16.07.2014, 09:28
Hallo,

ich weiß nicht genau, wie ich das als Kriterium formulieren soll.
Wie wäre es nach einem Summary-Sheet solange weitere Blätter einzulesen (unabhängig vom Namen) bis das nächste Summary-Sheet auftaucht?

VG

bearni
16.07.2014, 09:35
Hey...also doch noch einen weg gefunden mein Problem klar zu schildern :-D
das hab ich mir auch gedacht, aber dann bekam ich die Info dass die Reihenfolge nicht immer gleich ist...und leider habe ich keine Ahnung wie ich die Sache angehen soll.
Dachte mir bei "summary" das 2.Suchkriterium rausfinden(Wert=A), weil die Endung hab ich ja schon. dann wäre es doch einfach wenn man sag sh.Name like Wert und like Ending....aber so bekomme ich das auch nicht hin oder es gibt eine weise auf die ich nicht draufkomme, also wie ich es richtig mache?, lg bearni

Mc Santa
16.07.2014, 09:42
Hallo,

das Problem ist, dass es zweimal eine Endung mit drei Zeichen gibt, und einmal eine Endung mit nur zwei Zeichen. Wie kann das erkannt werden?

VG

bearni
16.07.2014, 09:51
Hi Santa!Nachdem der makro dann bei anderen Dateien auch gesetzt werden soll, wo die Endung zahlen oder Buchstaben sein können war dann die Anweisung, okay die letzten 3"Zeichen" als Übereinstimmung...
gibt's irgendeine Möglichkeit, dass man einfach alle Sheets mit der gleichen Endung nach einander aufruft und dann mit "eigenen"namen arbeitet in den Formeln?? also wie ich versucht habe mit RefSh und dann RefSh2....oder hat das keinen Sinn? danke dir, lg bearni