Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1148to1152
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

Ereignisprogrammierung soll für alle Mappen gelten

Ereignisprogrammierung soll für alle Mappen gelten
Stefan
Hallo Experten,
ist es eigentlich möglich, eine Ereignis-Prozedur (hier: nach worksheet_change wird automatisch die Spaltenbreite an die Breite des eingegebenen Textes angepasst) für ALLE worksheets gültig zu machen, um nicht jedem worksheet diese Programmierung anhängen zu müssen ? Anders ausgedrückt: Ich möchte es erreichen, dass sich bei ALLEN in Excel bearbeiteten Mappen nach einem Eintrag in einer Zelle, automatisch die entsprechende Spaltenbreite anpasst (die Programmierung kann ich selber, muss nur wissen, ob und wo ich sie hinterlegen muss - falls es denn überhaupt geht).
Vielen Dank für einen Tipp und lieben Gruss
Stefan
AW: Ereignisprogrammierung soll für alle Mappen gelten
14.04.2010 14:01:09
mumpel
Hallo!
Das geht. Stichwort: Workbook_SheetChange.
Beispiel, der Code muss in "DieseArbeitsmappe"
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
   Dim lngI As Long

   If Sh.Name <> "Muster" Then Exit Sub
   If Target.Address <> "$E$4" Then Exit Sub

   If Len(Target) < 32 And Target <> "" Then
      For lngI = 1 To Sheets.Count
         If Sheets(lngI).Name = "" & Target Then
            MsgBox "Das Blatt " & Target & " gibt es schon!"
            Exit Sub
         End If
      Next lngI
      Sheets("Muster").Copy After:=Sheets(lngI - 1)
      ActiveSheet.Name = Target
   End If
End Sub
Code eingefügt mit VBA in HTML 2.0size>
Gruß, René
Anzeige
AW: Ereignisprogrammierung soll für alle Mappen gelten
14.04.2010 14:02:31
Reinhard
Hallo Stefan,
Im Modul "DieseArbeitsmappe"

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
End Sub

Gruß
Reinhard
AW: Ereignisprogrammierung soll für alle Mappen gelten
14.04.2010 14:03:07
Oberschlumpf
Hi Stefan
1. Klick im VBA-Editor doppelt auf "diese Arbeitsmappe"
2. Wähle aus der linken Combobox "Workbook" aus
3. Wähle aus der rechten Combobox "SheetChange" aus
4. Füge jetzt deinen Code zwischen die Zeilen
Nun wird bei jeder Zelländerung dein Code ausgeführt.
Hilfts?
Ciao
Thorsten
mein gott, bin ich dämlich....
14.04.2010 14:14:26
Stefan
sorry jungs, erstmal 1000dank für all die gut gemeinten tipps. ich habe mich aber leider
falsch ausgedrückt. ich wollte, dass dieses Ereignis für alle MAPPEN gilt, also workBOOKS!
das heisst, ich öffne eine neue mappe u. dann soll das ereignis auch hier funzen... :/ (hust, hust)
Anzeige
AW: mein gott, bin ich dämlich....
14.04.2010 14:17:08
Rudi
Hallo,
dafür brauchst du eine Klasse der Application in einem Addin.
Nicht ganz einfach.
Gruß
Rudi
dafür brauchst du...
14.04.2010 14:17:11
Oberschlumpf
...ein AddIn, denke ich
Aber Stefan, damit kenn ich mich leider nich so aus.
Ciao
Thorsten
AW: dafür brauchst du...
14.04.2010 15:15:47
Stefan
jau, kein problem. besten dank :o)
AW: mein gott, bin ich dämlich....
14.04.2010 14:30:04
Rudi
Hallo,
erstelle eine neue Mappe
In ein Modul:
Public objApp As clsApplication

In DieseArbeitsmappe:
Private Sub Workbook_Open()
Set objApp = New clsApplication
End Sub

In das Klassenmodul clsApplication:
Public WithEvents myApp As Application
Private Sub Class_Initialize()
Set myApp = Application
End Sub
Private Sub Class_Terminate()
Set myApp = Nothing
End Sub

Im linken Dropdown myApp auswählen, im rechten das Ereignis.
Wenn du fertig bist, die Mappe als AddIn speichern und über den Addin-Manager einbinden.
Gruß
Rudi
Anzeige
AW: mein gott, bin ich dämlich....
14.04.2010 14:43:44
mumpel
Soll das Ereignis in allen Arbeitsmappen (also global) gelten, dann benötigst Du ein Add-In mit Klassenprogrammierung. Erstelle hierzu eine neue Arbeitsmappe und folge den Anweisungen.
1. Den folgenden Code in "DieseArbeitsmappe"
Option Explicit

Private Sub workbook_open()
Call Load_clsSheetChange
End Sub
Code eingefügt mit VBA in HTML 2.0
size>
2. Ein Modul einfügen und dorthinein den folgenden Code
Option Private Module
Option Explicit

Public X_SheetChanges As New clsSheetChange

Public Sub Load_clsSheetChange()
Set X_SheetChanges.App = Application
End Sub

Code eingefügt mit VBA in HTML 2.0size>
3. Ein Klassenmodul einfügen und in clsSheetChangecolor> umbenenen. Dann den folgenden Code einfügen. Diesen kannst Du dann anpassen.
Option Explicit
Public WithEvents App As Application

Public Sub App_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Value > "100" Then
MsgBox "Der Wert ist zu groß. Bitte ändern"
Target.Select
End If
End Sub
Code eingefügt mit VBA in HTML 2.0size>
4. Datei als Add-In speichern.
5. Excel neu starten und das Add-In über den Add-In-Manager einbinden.
Anzeige
AW: mein gott, bin ich dämlich....
14.04.2010 16:36:12
Stefan
jau, kinder. hat wunderbar geklappt !!! 1000dank nochmals an euch hier, dass ihr eure zeit geopfert habt :)
AW: mein gott, bin ich dämlich....
14.04.2010 15:17:14
Stefan
wow, cool. werde ich gleich versuchen. allerbesten dank vorab :o)))

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige