Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1164to1168
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
Inhaltsverzeichnis

wohin gehört Blatt umbenennen?

wohin gehört Blatt umbenennen?
Jörg-HH
Guten Abend zusammen!
Ich möchte eine Meldung bekommen, wenn ein Blatt mit einem Namen benannt wird, der nicht in einem Dantenbankbereich in Tabelle35, Spalte 2 auftaucht (denn dann wurde vergessen, den Namen vorab einzupflegen). Das klappt im Prinzip mit diesem Code, wenn ich ihn in VBA anstoße. Aber wenn ich dann tatsächlich ein Blatt umbenenne, passiert nix. Also steht der Code wohl an falscher Stelle. Ich hab es schon in einem Modul und im SheetChange probiert - kein Erfolg.
Wohin muß der Code, oder womit muß ich ihn noch ergänzen, damit er dann läuft, wenn ich einen Blattnamen vergebe?
Grüße - Jörg
Public Sub BlätterBenennen()
Dim ws As Worksheet, wks As Worksheet, Zeile As Long
Set wks = Tabelle35       '=Blatt DBank
For Each ws In ThisWorkbook.Worksheets
If ws.Index > ThisWorkbook.Worksheets("Formular").Index And ws.Index  wks.Cells(Zeile, 1).Value Then
MsgBox "bubu"
End If
Next Zeile
End If
Next ws
End Sub

AW: wohin gehört Blatt umbenennen?
Josef

Hallo Jörg,
der Code gehört in das Modul "Diese Arbeitsmappe".

' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
  Dim ws As Worksheet, wks As Worksheet
  Set wks = Tabelle35 '=Blatt DBank
  For Each ws In Worksheets
    If ws.Name <> "Formular" And Not ws Is wks Then
      If Not IsNumeric(Application.Match(ws.Name, wks.Columns(1), 0)) Then
        MsgBox "bubu"
        Exit For
      End If
    End If
  Next ws
End Sub

Gruß Sepp

Anzeige
ah, Calculate... aber fehlt noch irgendwas...
Jörg-HH
Hallo Sepp
danke für den Tip - auf das Calculate wäre ich ja nie gekommen. Ich dachte immer, das hat was mit Berechnungen im Blatt zu tun...
Der Bereich, in dem der Code greifen soll, ist der nach dem Blatt "Formular". Wenn ich schreibe
If ws.Name "Formular" And Not ws Is wks Then
dann betrifft das ja alle Blätter außer Formular und Tabelle35. Aber andere Blätter können beliebig benannt werden. Genaugenommen können die letzten drei auch beliebig benannt werden. Der Bereich müßte dann heißen
If ws.Index > ThisWorkbook.Worksheets("Formular").Index And ws.Index
Allerdings komm ich mit dem Code aus der MsgBox nicht mehr raus... :-(((
Jörg
Anzeige
AW: ah, Calculate... aber fehlt noch irgendwas...
Josef

Hallo Jörg,
das Umbenennen eines Blattes löst auch die Berechnung aus.
Probier es mal so.

' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
  Dim ws As Worksheet, wks As Worksheet
  
  Set wks = Tabelle35 '=Blatt DBank
  
  On Error GoTo ErrExit
  Application.EnableEvents = False
  
  For Each ws In Worksheets
    If ws.Index > Sheets("Formular").Index Then
      If Not IsNumeric(Application.Match(ws.Name, wks.Columns(1), 0)) Then
        MsgBox "bubu"
        Exit For
      End If
    End If
  Next
  
  ErrExit:
  Application.EnableEvents = True
End Sub

Gruß Sepp

Anzeige
...Problem bleibt bestehen
Jörg-HH
...auch jetzt kein Entrinnen aus der MsgBox. Übrigens kommt die auch, wenn ich einen richtigen Namen eingebe.
Wieso eigentlich wks.Columns(1)? Ich will doch was aus der 2. Spalte wissen...
Grüße - Jörg
AW: ...Problem bleibt bestehen
Josef

Hallo Jörg,
in deinem Originalcode hast du aber in der Spalte A gesucht!
Ändere halt die 1 in 2!

Gruß Sepp

Anzeige
AW: ...Problem bleibt bestehen
Jörg-HH
...ja, sorry - war'n Tippfehler.
Jetzt kommt die Box nicht, wenn ich einen richtigen Namen eingebe - aaaaber auch nicht bei einem falschen :-)
wat nu?
AW: ...Problem bleibt bestehen
Josef

Hallo Jörg,
schreib in eine nichtbenötigte/ausgeblendete Zelle =Jetzt(), dann sollte es laufen.

Gruß Sepp

AW: ...Problem bleibt bestehen
Jörg-HH
...wie? In irgendeine von irgendeinem Blatt...?
Anzeige
Ja! o.T.
Josef
Gruß Sepp

hmm... geht auch nich
Jörg-HH
Hallo Sepp, abgesehen davon, daß ich die Bedeutung der Jetzt()Zelle nicht verstehe - es geht auch damit nicht :-((
jetzt geh ich erstmal schlafen
Gute Nacht - Jörg
AW: hmm... geht auch nich
Josef

Hallo Jörg,
also bei mir funktioniert es tadellos, kannst du mal die Datei hochladen?

Gruß Sepp

Anzeige
dann machst Du sicher irgendwas falsch
Matthias
Hallo
Ich hab Sepp sein Beispiel jetzt mal in einer Datei eingebaut und das klappt einwandfrei.
https://www.herber.de/bbs/user/70288.xls
Gruß Matthias
bei mir tut sich nix... :-((
Jörg-HH
Hi Matthias
deine Beispieldatei gibt die Fragestellung genau wieder. Ich hab sie runtergeladen, ohne jegliche Änderung, und richtige und falsche Blattnamen eingegeben - es zeigt sich keine MsgBox....
Das finde ich jetzt seltsam - es ist unverändert die Datei, die bei euch läuft wie gewünscht. Hab schon mal vorsichtshalber meine Häkchen in den Sicherheitseinstellungen geprüft - alles ok, kann keine versehentlichen Änderungen entdecken.
Wenn ich bei Private Sub Workbook_SheetCalculate(ByVal Sh As Object) einen Haltepunkt setze, sehe ich, daß der Code gar nicht berührt wird.
Woran könnte das denn liegen...?
Schönen Sonn(en)tag! - Jörg
Anzeige
Berechnung auf manuell? o.T.
Josef
Gruß Sepp

steht auf automatisch oT
Jörg-HH
was ergibt Msgbox Application.EnableEvents?
Matthias
außerhalb Kontext, Empty oT
Jörg-HH
Bahnhof! WAHR oder FALSCH
Matthias
Hallo
Userbild
sollte das Ergebnis FALSCH zurückgeben setze EnableEvents auf True
Gruß Matthias
...läuft :-)) ...
Jörg-HH
ähämm... hatte ApplEnableEv als Überwachungsausdruck eingestellt - siehe VBA_Level :-)
Habe jetzt EnableEvents = False auskommentiert, und seitdem läuft die Sache wie gewünscht.
Danke an alle Beteiligten - hab damit eine weitere Fehlbedienungsmöglichkeit ausgeschaltet - eine von werweißwievielen :-)
Schönen Restsonntag - Jörg
Anzeige
AW: ...läuft :-)) ...
Josef

Hallo Jörg,
da hattest du wohl unbeabsichtigt die Events gecancelt, im Code solltest du jetzt die Auskommentierung wieder entfernen.

Gruß Sepp

kommt noch ganz anders :-(( ...
Jörg-HH
Hallo Erich,
beim Übertragen in meine Datei bin ich jetzt wieder in der Situation, daß ich aus der MsgBox nicht herauskomme - sie erscheint, auch wenn ich gar kein Blatt umbenannt habe. Beim Debuggen wird immer Exit For markiert. Hochladen geht leider nicht, sind 20MB.
Woran könnte das denn liegen...?
Gruß Jörg
Anzeige
reduziere doch eine Kopie Deiner Datei ...
Matthias
Hallo
... um einige Blätter und belasse z. B. nur 4-5 Blätter in der Datei.
Lad dann die Datei hier hoch hoch. Ich bin fast sicher das jemand den Fehler findet.
Wie startest Du Excel ? Mit Add-Ins?
Evtl. solltest Du diese (wenn aktiv) mal deaktivieren um einen Einfluß von da auszuschließen.
Personl.xls aktiv? Wenn ja was steht drin?
Gibts noch mehr Code in der Datei ?
Gruß Matthias
bin jetz mal paar Std außer Haus- bis später oT
Jörg-HH
Anmerkung ...
Tino
Hallo,
Code wird ausgelöst wenn mann auf umbennen klickt.
Gruß Tino
...läuft nich :-(( ...
Jörg-HH
Hi Tino
bei deinen beiden Versionen kann ich ungehindert Blätter umbenennen, auch wenn ich vorsichtshalber per Direktbereich vorher EnableEvents ausdrücklich auf true setze und Calculation auf auto usw.
aber Problem gelöst - siehe meinen Kommentar in der Linie bei Matthias und Sepp...
Dank dir für deine Mithilfe. Übrigens ist dein Code schon jenseits meiner Verständnisgrenzen :-) würd mich natürlich trotzdem interessieren, warum er bei dir läuft und bei mir nicht...
Grüße - Jörg
AfterCalculate erst ab xl2007
Tino
Hallo,
AfterCalculate gibt es wahrscheinlich erst ab xl2007, kann ich aber jetzt nicht prüfen.
Gruß Tino
AW: AfterCalculate erst ab xl2007
Hajo_Zi
Hallo Tino,
die Aktion "AfterCalculate" habe ich auch in 2010 noch nicht gefunden.

AW: AfterCalculate erst ab xl2007
Tino
Hallo,
nur in Klasse als WithEvent verfügbar.
Gruß Tino
Das bisherige Calculate war auch schon...
Luc:-?
„After“, Tino,
Before wäre wohl sinnvoller gewesen — oder gibt's das jetzt auch?
Gruß Luc :-?
Before habe ich nicht gefunden ;-) ...
Tino
Hallo,
die After löst auch ohne Formel aus da reicht es wenn das Blatt umbenannt wird,
das macht die Workbook_SheetCalculate nicht.
Gruß Tino
Naja, ich weiß nicht, bei mir springt die...
Luc:-?
…Berechnungsautomatik bei jedem Quark an (mal nicht, mal doch), Tino;
hab's aufgegeben herauszufinden, wann doch, wann nicht… ;-)
Mit Before… könnte man ggf unnötige Berechnungen abfangen… Schade!
Gruß Luc :-?
keine Berechnung --> keine Event
Tino
Hallo,
wenn keine Formel --&gt keine Berechnung --&gt keine Event.
Warum die After... darauf reagiert,
keine Ahnung sie macht es und ich habe auch keinen anderes Event gefunden,
dass auf umbenennen von Tabellenblätter anspricht.
Gruß Tino

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige