Schleife+Funktion geht nicht

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Schleife+Funktion geht nicht
von: Steffen
Geschrieben am: 30.10.2003 14:30:22

Hallo,

ich brauche nochmal bitte Eure Hilfe:

Ich habe folgende Funktion:


Function TabelleVorhanden(TabellenName As String) As Boolean
   Dim TB As Worksheet
   TabelleVorhanden = False
   For Each TB In Worksheets
      If TB.Name = TabellenName Then
         TabelleVorhanden = True
         Exit For
      End If
   Next TB
End Function


Diese klappt in einem normalen Makro auch super, bei ich Sie aber in die Schleife:


Sub test()
'Blattschutz
 Dim wkb As Workbook
 Dim wks As Worksheet
  For Each wkb In Workbooks
     If TabelleVorhanden("Leer") = True Then
      For Each wks In wkb.Worksheets
         wks.Protect Password:=PSWDTP, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True
      Next wks
     End If
  Next wkb
End Sub


ein, so geht sie nicht mehr, ich möchte Sie aber gern als Funktion verwenden, da ich Sie in meheren Schleifen benötige, was mache ich falsch???

Danke Euch schonmal im voraus:


Steffen
Bild


Betrifft: danke für die Rückmeldung...
von: ChrisL
Geschrieben am: 30.10.2003 14:31:44

http://xlforum.herber.de/messages/330724.html
... da hilft man auch gerne wieder


Bild


Betrifft: Sorry, aber kannst
von: Steffen
Geschrieben am: 30.10.2003 14:36:32

Du mir vielleicht nochmal helfen?!

Wie gesagt ich brauche die Sache als Funktion, zum verwenden in verschiedenen Schleifen.

So wie Du das gemacht hast muss ich es in jeder Schleife, als "Mehr-Code" einfügen.

Danke Die schonmal

Steffen


Bild


Betrifft: AW: Sorry, aber kannst
von: Michael Scheffler
Geschrieben am: 30.10.2003 14:55:43

Option Explicit


Sub TabTest()
Dim strGesucht As String
strGesucht = "test"
On Error Resume Next
Sheets(strGesucht).Select
If Err.Number <> 0 Then MsgBox "Tabelle " & strGesucht & " jibbet nicht", vbInformation
Err.Clear
End Sub



Bild


Betrifft: AW: Sorry, aber kannst
von: ChrisL
Geschrieben am: 30.10.2003 15:00:33

Hi Steffen

Genau wie von Martin beschrieben. Hier eine mögliche Lösung...

Option Explicit


Function TabelleVorhanden(TabellenName As String, wkb As Workbook) As Boolean
   Dim TB As Worksheet
   TabelleVorhanden = False
   For Each TB In wkb.Worksheets
      If TB.Name = TabellenName Then
         TabelleVorhanden = True
         Exit For
      End If
   Next TB
End Function




Sub test()
'Blattschutz
 Dim wkb As Workbook
 Dim wks As Worksheet
  For Each wkb In Workbooks
     If TabelleVorhanden("Leer", wkb) = True Then
      For Each wks In wkb.Worksheets
         wks.Protect Password:=PSWDTP, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True
      Next wks
     End If
  Next wkb
End Sub


Gruss
Chris


Bild


Betrifft: AW: Schleife+Funktion geht nicht
von: Martin Bolleter
Geschrieben am: 30.10.2003 14:52:52

Hallo Steffen

deine Funktion prüft nur die Tabellen des aktiven Workbook, in der Schleife gehst du aber über mehrere Workbooks, allerdings OHNE sie zu aktivieren!
Baue mal die Zeile
wkb.activate
ein, nach dem For Each wkb ...

Dann könnte es gehen.

Gruss
Martin


Bild


Betrifft: noch ne Frage,
von: Steffen
Geschrieben am: 30.10.2003 15:03:51

ich gehe über mehere Workbooks dies ist richtig, aber dies muss geschehen OHNE sie
zu aktivieren, weil es schleifen gibt die ohne aktivieren funktionieren.

Wie kann ich dies machen?!

Danke Steffen


Bild


Betrifft: AW: noch ne Frage,
von: Martin Bolleter
Geschrieben am: 30.10.2003 15:22:32

Hallo Steffen

dann musst du aus deiner Schleife das jeweilige Workbook an die Funktion übergeben, die Funktion muss natürlich entspr angepasst werden, damit sie damit was anfangen kann. zB so:


Function TabelleVorhanden(TabellenName As String, Wbook As Workbook) As Boolean
   Dim TB As Worksheet
   TabelleVorhanden = False
   For Each TB In Wbook.Worksheets
      If TB.Name = TabellenName Then
         TabelleVorhanden = True
         Exit For
      End If
   Next TB
End Function





Sub test()
'Blattschutz
 Dim wkb As Workbook
 Dim wks As Worksheet
  For Each wkb In Workbooks
     If TabelleVorhanden("Leer", wkb) = True Then
      For Each wks In wkb.Worksheets
         wks.Protect Password:=PSWDTP, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True
         MsgBox "ok"
      Next wks
     End If
  Next wkb
End Sub



Gruss
Martin


Bild


Betrifft: danke geht jetzt prima
von: Steffen
Geschrieben am: 30.10.2003 16:11:24

Ihr seit echt super.

BiBa

Steffen


 Bild

Beiträge aus den Excel-Beispielen zum Thema " Nr. der letzten Spalte"