Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
344to348
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
344to348
344to348
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Option Explicit

Option Explicit
27.11.2003 12:11:06
junny
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

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Option Explicit
27.11.2003 12:15:16
Russi
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
AW: Option Explicit
27.11.2003 13:14:46
junny
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
Anzeige
AW: Option Explicit
27.11.2003 13:26:27
Russi
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
AW: Russi/xXx Option Explicit
27.11.2003 13:54:22
junny
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
Anzeige
AW: Russi/xXx Option Explicit
27.11.2003 14:06:06
Russi
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
DANKE Russi
27.11.2003 14:17:26
volker
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
Anzeige
AW: Option Explicit
27.11.2003 13:27:07
xXx
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!
AW: Option Explicit
27.11.2003 14:19:40
junny
Hai Udo,
hab ich mal gemacht.

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

Danke für die Hilfe volker
AW: Option Explicit
27.11.2003 14:33:24
FCH
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
Anzeige
DANKE FCH (hier lernt man richtig was)
27.11.2003 14:40:37
junny
o.T.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige