Option Explicit

Bild

Betrifft: Option Explicit
von: junny
Geschrieben am: 27.11.2003 12:11:06

Hallo Leute,
kann mir jemand ein wenig auf die Sprünge helfen??

Wann muss Option Explicit/


Private Sub rein?? Wie siehst da mit F8 aus?
Ich hab hier ein Makro welches in eienm Sheet steht, ist das in Ordnung? sprich läuft es automatisch ab??
DANKE!! Grüsse volker
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
'   alle Buchstaben Groß in einem bestimmten Bereich
    Dim RaBereich As Range, RaZelle As Range
    Application.EnableEvents = False
'   Bereich der Wirksamkeit
    Set RaBereich = Range("I5:I319")
    Application.EnableEvents = False
    For Each RaZelle In Range(Target.Address)
        If Not Intersect(RaZelle, RaBereich) Is Nothing Then
            RaZelle.Value = UCase(RaZelle.Value)
        End If
    Next RaZelle
    Application.EnableEvents = True
    Set RaBereich = Nothing
End Sub




Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim vorigeZelle As Range
Set vorigeZelle = ActiveCell
' automatisches ausfüllen Materialcode Kantengrafik, Gesamtstückzahl
        
    'Serie
    Range("U6").Select
    ActiveCell.FormulaR1C1 = "=IF((RC[-16])>0,R5C21,"""")"
    Selection.AutoFill Destination:=Range("U6:U319"), Type:=xlFillCopy
    
    
    'Materialcode
    Range("W5").Select
    ActiveCell.Formula = "=CONCATENATE(I5,H5)"
    Selection.AutoFill Destination:=Range("W5:W319"), Type:=xlFillDefault
    
    
    'Erfassungsnummer
    Range("X6").Select
    ActiveCell.FormulaR1C1 = "=IF((RC[-19])>0,R5C24,"""")"
    Selection.AutoFill Destination:=Range("X6:X319"), Type:=xlFillCopy
    
    'Kantengrafik
    Range("AV5").Select
    ActiveCell.Formula = "=O5"
    Selection.AutoFill Destination:=Range("AV5:AV319"), Type:=xlFillDefault
    
    
    'Gesamtstückzahl
    Range("AW5").Select
    ActiveCell.Formula = "=E5"
    Selection.AutoFill Destination:=Range("AW5:AW319"), Type:=xlFillDefault
    
vorigeZelle.Select
End Sub

Bild


Betrifft: AW: Option Explicit
von: Russi
Geschrieben am: 27.11.2003 12:15:16

Hallo Volker!

Der Befehl Option Explicit besagt, dass in Modulen eine Variablendeklaration ("DIM ...") unbedingt erforderlich ist. Werden Variablen benutzt, die nicht deklariert sind, führt dies zu einer Fehlermeldung.

Deine Makros laufen automatisch ab. Der Code in Worksheet_Change wird immer ausgeführt, wenn sich das betreffende Arbeitsblatt ändert. Workbook_BeforeSave immer dann, bevor die Datei gespeichert wird.

Viele Grüße
Russi


Bild


Betrifft: AW: Option Explicit
von: junny
Geschrieben am: 27.11.2003 13:14:46

Hai Russi,
Danke, jedoch laufen meine makro Momentan nicht, und ich weiß auch nicht warum (Einzelschritt ist nicht scharf)

weißt Du noch was??

Gruss volker


Bild


Betrifft: AW: Option Explicit
von: Russi
Geschrieben am: 27.11.2003 13:26:27

Moin Volker!

Wie Du angegeben hast machst Du VBA nur mit Recorder, deshalb wage ich die Frage: Hast Du die Module an den richtigen Stellen platziert?

Die Worksheet_Change-Geschichte gehört in den Code Deines Tabellenblattes, der Code von Workbook_BeforeSave in "DieseArbeitsmappe"

Hast Du das so eingetragen?

Russi


Bild


Betrifft: AW: Russi/xXx Option Explicit
von: junny
Geschrieben am: 27.11.2003 13:54:22

Hai Russi,
ja die makros sitzen an den richtigen Stellen, es will trotz allem nicht!

wenn ich aus Privat Sub Workbook BeforeSave....

Sub() mache, kann ich mich auch mit F8 durchtesten das makro an sich passt!!

Option Explicit habe ich entfernt (Tipp von Kollege xXx)

Grüsse volker


Bild


Betrifft: AW: Russi/xXx Option Explicit
von: Russi
Geschrieben am: 27.11.2003 14:06:06

Sorry, aber hier muss ich wohl passen. Ich habe selbst bereits einige Mappen entwickelt, bei denen ich derartige Makros eingebaut habe. Und alle funktionieren...

Zwei Dinge sehen bei mir jedoch immer anders aus:

1. Statt private habe ich public benutzt.
2. ich habe bis heute noch nicht rausgefunden, wozu die Zeile "(ByVal Target As Range)" gut ist. Also hab ich sie generell gelöscht.

Ein sehr dünner Strohhalm, aber vielleicht versuchst Du das auch mal?

Russi


Bild


Betrifft: DANKE Russi
von: volker
Geschrieben am: 27.11.2003 14:17:26

Hai Russi,
Momentan teste ich das an einer ausgefüllten Liste, da hakst manchmal noch bei meiner Vorlage hatte ich den Before Save nicht in der Arbeitsmappe stehen, vielleicht gehts dann zukünftig.

Danke Gruss volker


Bild


Betrifft: AW: Option Explicit
von: xXx
Geschrieben am: 27.11.2003 13:27:07

Hallo,
welcher Fehler?
Lösche Option Explicit

Gruß aus'm Pott
Udo
http://www.excelerator.de

P.S. Das Forum lebt auch von den Rückmeldungen der Frager an die Antworter!


Bild


Betrifft: AW: Option Explicit
von: junny
Geschrieben am: 27.11.2003 14:19:40

Hai Udo,
hab ich mal gemacht.

Kann ich ein Private Sub auch im Einzelschritt ablaufen lassen? wie?

Danke für die Hilfe volker


Bild


Betrifft: AW: Option Explicit
von: FCH
Geschrieben am: 27.11.2003 14:33:24

Hi,

also Option Explicit ist schon sinnvoll, um Fehler bei der Deklaration zu vermeiden.

Das Private sollte auch erhalten bleiben, da diese Subs ja nun mal nicht Puplic sein sollen.

Und nun zu deinem Problem:

Deine Intersect-Syntax war falsch, d.h. du musst irgendwann mal zum Debuggen aufgefordert worden sein und hast dann den Code abgebrochen. Dadurch bleib dein

Application.EnableEvents = False

Erhalten und es tat sich logischer Weise nix mehr.

So müsste es gehen (insTabellenblatt-Modul):

Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
'   alle Buchstaben Groß in einem bestimmten Bereich
    Dim RaBereich As Range, RaZelle As Range
    Application.EnableEvents = False
'   Bereich der Wirksamkeit
    For Each RaZelle In Range(Target.Address)
        If Not Intersect(RaZelle, Range("I5:I319")) Is Nothing Then
            RaZelle.Value = UCase(RaZelle.Value)
        End If
    Next RaZelle
    Application.EnableEvents = True
    Set RaBereich = Nothing
End Sub


Gruß
FCH


Bild


Betrifft: DANKE FCH (hier lernt man richtig was)
von: junny
Geschrieben am: 27.11.2003 14:40:37

o.T.


Bild

Beiträge aus den Excel-Beispielen zum Thema " Option Explicit"