Wo füge ich diesen Code ein?

WO FÜGE ICH DIESEN CODE REIN?

Userform soll beim Öffnen der Datei angezeigt werden

[code]
Option Explicit

Private Sub Workbook_Open()
'UserForm1.Show
Dim rng_Zelle As Range
Dim str_Liste1 As String
Dim str_Liste2 As String

str_Liste1 = „“
str_Liste2 = „“

For Each rng_Zelle In Range(„f3:f100“).Cells
If (rng_Zelle.Value - Int(Now()) >= 0) Then

If (rng_Zelle.Value - Int(Now())

probier es mal so:

der erste teil wird einfach eine „normale“ sub (einfach umbenennen)

Userform soll beim Öffnen der Datei angezeigt werden

[code]
Option Explicit

Private Sub Workbook_Open_NEU()

'inhalt bleibt unverändert

End Sub

[/code]

In der Datei, in die ich diesen Code einfügen möchte, steht
aber bereits in der Arbeitsmappe/Workbook folgender Code:

da kommt dann der call für die neue sub rein:

Private Sub Workbook_Open()

call Workbook_Open_NEU 'musst nur schauen, an welcher stelle der code ausgeführt werden soll

Call Berechnung_formelqm
End Sub
[/code]

Wenn ich den Code ins Workbook einfüge, kommt die
Fehlermeldung: Compile Error: Ambiguous Name detected:
Workbook_Open

das liegt daran, dass du zwei subs mit dem gleichen namen hast („Workbook_Open“) diese subs führen normalerweise ihren code aus, sobald das workbook geöffnet wird. wenn beide code-teile ausgeführt werden sollen, musst du entweder den code in eine sub kopieren - oder die eine sub umbenennen und aus der anderen aufrufen (wie ich oben kurz gezeigt habe).

Grüezi Yahoo

WO FÜGE ICH DIESEN CODE REIN?

[code]
Private Sub Workbook_Open()

[Code gesnippt]

[/code]

Event-Codes der Mappe gehören alle immer in ‚Diese Arbeitsmappe‘ - solche eines Worksheets dann analog in die entsprechende Tabelle.

In der Datei, in die ich diesen Code einfügen möchte, steht
aber bereits in der Arbeitsmappe/Workbook folgender Code:

[code]Option Explicit

Private Sub Workbook_Open()
Call Berechnung_formelqm
End Sub
[/code]

Wenn ich den Code ins Workbook einfüge, kommt die
Fehlermeldung: Compile Error: Ambiguous Name detected:
Workbook_Open

Ja es kann/darf logischerweise immer nur einen Code pro Event geben.

Da aber der letztere Code nur aus einer einzelnen Zeile (dem Aufruf einer anderen Sub) besteht, kannst Du diese eine Zeile an den Anfang des neuen Codes stellen und den Rest des alten Code-Gerüstes dann löschen.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Yahoo,

:WO FÜGE ICH DIESEN CODE REIN?

wie schon gesagt, ist auch besser für Codeerweiterunghalte die Erignismodule klein. Rufe dann halt mit Call die Prozeduren auf.
Globale Variablen sollte man wegen der Übersicht nur im Notfall verwenden.
Wenn du also die gleichen Variablen in mehreren SUBs braucht, definiere sie in der ersten Prozedur der Kette.

D.h. jetzt für workbook_open,
Call Starten
In Starten steht dann

Dim strA as string,strB as string
strA=„1“
strB=„1“
Call UF_Starten(strA,StrB)

Der code-Tag geht hier nicht, nimm den pre-Tag.

Soll deine IF-Abfrage so funktionieren wie im Code?
Beachte dieses:

Sub nn()
Dim N As Byte
For N = 1 To 2
 If 1 = N Then
 If 2 = 1 Then
 MsgBox "beide1"
 Else
 MsgBox "nur letzte if1"
 End If
 End If
 If 1 = 1 And 2 = N Then
 MsgBox "beide2"
 Else
 MsgBox "beide nicht2"
 End If
Next N
End Sub

Für Klärung 0
Option Explicit

Sub UF-Starten(byval strX as string,byval strY as string)
Dim rng_Zelle As Range, V As Boolean
For Each rng_Zelle In Range(„f3:f100“).Cells
V = (rng_Zelle.Value - Int(Now) >= 0) * (rng_Zelle.Value - Int(Now)

Ich nutze Excel 2003. Mit VBA kenn ich mich leider nicht aus.

dann ist der Code nicht von dir :smile:)

Gruß
Reinhard

Dankeschön, es hat geklappt und ich etwas dazu gelernt… Vielen liebe Dank Thomas.

Dankeschön Jens, auch das geht und ich habe etwas dazu gelernt… Vielen liebe Dank.

Hallo Reinhard,
da wie du schon drauf gekommen bist, der Code nicht von mir ist, kann ich den Code auch nicht nachvollziehen.
Vielen Dank für deine Vorschläge Reinhard. Es ist sehr hilfreich.