VBA - kleines Problem

Abend alle miteinander,

als Abschluss zu VBA sollen wir nun 2 Programme ineinander „vermischen“, allerding krieg ich das nicht ganz hin und brauch eure hilfe…

und zwar soll nach dem klicken auf die checkbox ein vorher programmiertes Programm aufgerufen werden, wo ein Platz reserviert werden kann…

ich hab das bisher so probiert…

Private Sub Chk\_Ja\_Click()
 vba\_24.xls.Activate
 frm\_Karte.PrintForm
End Sub

Private Sub Chk\_Nein\_Click()
 Unload Me
 frm\_Kino.Show
End Sub

über Verbesserungsvorschläge würde ich mich sehr freuen

mfg

ivi

Hi Ivi,

und zwar soll nach dem klicken auf die checkbox ein vorher
programmiertes Programm aufgerufen werden, wo ein Platz
reserviert werden kann…

durch Klicken auf eine Chechbox ein Programm aufzurufen ist machbar *denk*, aber welcher „Platz“ soll da wo reserviert werden *nicht versteh*

Private Sub Chk_Ja_Click()
vba_24.xls.Activate
frm_Karte.PrintForm
End Sub

Private Sub Chk_Nein_Click()
Unload Me
frm_Kino.Show
End Sub

den Nein.klick verstehe ich, da wird irgendwas (ich benutze „Me“ nie, ist mir zu undeutlich) geschlosen und die Userform „frm_Kino“ angezeigt.
Im Ja-Klick sehe ich dass da eine Datei „vba_24.xls“ aktiviert wird und dann an der Userform „frm_Karte“ die methode „printForm“ angewandt wird. K.A. was jetzt PrintForm ist, wahrscheinlich wird da was ausgedruckt.
Soweit dazu wie ich den Code kapiere, jetzt zu deiner Anfrage, wo sollen da denn 2 Programme vermischt werden?

über Verbesserungsvorschläge würde ich mich sehr freuen

Gerne, aber mir fehlt noch sehr der overlooking was zu tun ist.

Warum wurde deine Anfrage eigentlich vom Moderator geändert?

Wenn es schändlicherweise aus Verstoß gegen kommerzielle Angebote war, dann mail mir, dann lese ich dir die AGBs von hier vor, oder so ähnlich *smile*
Gruß
Reinhard

Hallo Reinhard,

Warum wurde deine Anfrage eigentlich vom Moderator geändert?

Pre-Tag eingefügt und VBA in die Titelzeile geschrieben, nix schlimmes.

Gruß, Rainer

Hallo,

verstehe zwar Deine Frage nicht (vermischen? hä?), aber eventuell hilft Dir der folgende Tipp:

vba_24.xls.Activate

WORKBOOKS(„vba_24.xls“).Activate

Gruß, Bernd

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Reiner,

was ist den ein Pre-Tag??

gruß

Hallo Ivi,

was ist den ein Pre-Tag??

ist Dir aufgefallen, daß Dein Quellcode jetzt besser lesbar ist, weil Deine Einrückungen sichtbar sind? Das macht der Pre-Tag.

Um den im Forum sichtbar darstellen zu können, verwende ich mal noch Prehtml …

 Dein Code 
 nächste Zeile eingerückt,
 Ende Code

Was an der Stelle ‚Dein Code‘ steht, wird so dargestellt, wie Du es in Deiner Entwicklungsumgebung getippt hast. Dadurch wird der Code besser lesbar und die anderen Mitglieder können Dir leichter helfen.

Gruß, Rainer

hallo,

also beim clicken auf ja soll eine excel datei aufgerufen werden, ich hab das mit „workbooks“ probiert doch es funktioniert nicht, dieser teil wird dann gelb angestrichen…

würd mich über eine antwort heute abend freuen, da die aufgabe bis morgen erledigt sein muss

gruß ivi

also beim clicken auf ja soll eine excel datei aufgerufen
werden, ich hab das mit „workbooks“ probiert doch es
funktioniert nicht, dieser teil wird dann gelb
angestrichen…

Hi ivi,
ich kann in deinem Code nix mit „Workbooks“ entdecken. Poste mal den kompletten Code so wie er jetzt aussieht. Existiert denn diese Datei und bist du im richtigen Verzeichnis?
Was ergibt denn
msgbox thisworkbook.path
msgbox dir(„Dateiname.xls“)
usw.
?
Und immer noch, was meinst du mit Platz?
Gruß
Reinhard

Hallo Reinhard,

ich hab nicht so ganz verstanden was du geschrieben hat…

aber hier ist der ganze code…

Option Explicit
Dim wahl As Byte
Dim film As String


Private Sub cmd\_Titel\_Click()
 lbl\_Film1 = Worksheets("Filme").Cells(2, 3)
 lbl\_Film2 = Worksheets("Filme").Cells(3, 3)
 lbl\_Film3 = Worksheets("Filme").Cells(4, 3)
 lbl\_Film4 = Worksheets("Filme").Cells(5, 3)
 lbl\_Film5 = Worksheets("Filme").Cells(6, 3)
 lbl\_Film6 = Worksheets("Filme").Cells(7, 3)
 txt\_Wahl.SetFocus
End Sub

Private Sub cmd\_OK\_Click()
'Einlesen
wahl = txt\_Wahl.Text

'Plausibilitätskontrolle
 If txt\_Wahl.Text "" Then
 If wahl = 1 Then
 film = Worksheets("Filme").Cells(2, 3)
 ElseIf wahl = 2 Then
 film = Worksheets("Filme").Cells(3, 3)
 ElseIf wahl = 3 Then
 film = Worksheets("Filme").Cells(4, 3)
 ElseIf wahl = 4 Then
 film = Worksheets("Filme").Cells(5, 3)
 ElseIf wahl = 5 Then
 film = Worksheets("Filme").Cells(6, 3)
 Else: film = Worksheets("Filme").Cells(7, 3)
 End If
 frm\_Karte.lbl\_Film.Caption = film
 frm\_Karte.Show
 Else: MsgBox ("Sie müssen ein Film aussuchen")
End If

End Sub

Private Sub cmd\_Ende\_Click()
 Unload Me
End Sub

 dies ist die erste UserForm und dann wierd diese aufgerufen

Option Explicit

Private Sub Chk\_Ja\_Click()
 Workbooks("vba\_24").Open
 frm\_Karte.PrintForm
End Sub



Private Sub Chk\_Nein\_Click()
 Unload Me
 frm\_Kino.Show
End Sub

allerdings funktioniert dieser teil nicht, das die datei vba\_24 nicht aufgerufen wird....


und das ist der code aus vba\_24 

Option Explicit
Dim j As Byte
Dim i As Byte
Dim Matrix(5 To 54, 5 To 12) As Integer


Private Sub cmd\_Buchung\_Click()
 textfelder\_prüfen

 If existenz = True Then
 einlesen

 If Worksheets("Kino").Cells(i + 4, j + 2) = "" Then
 Worksheets("Kino").Cells(i + 4, j + 2) = "X"
 MsgBox ("Der Platz ist für Sie reserviert!")
 Else: MsgBox ("Der Platz ist schon besetzt!")
 End If
 End If
 feld\_leeren
End Sub

Private Sub cmd\_Stornierung\_Click()
 textfelder\_prüfen

 If existenz = True Then
 einlesen

 If Worksheets("Kino").Cells(i + 4, j + 2) = "X" Then
 Worksheets("Kino").Cells(i + 4, j + 2) = ""
 MsgBox ("Ihre Buchung wurde storniert!")
 Else: MsgBox ("Der Platz wurde garnicht reserviert!")
 End If
 End If
 feld\_leeren
End Sub

Private Sub einlesen()
 i = txt\_Reihe.Text
 j = txt\_Sitz.Text
End Sub

Private Sub textfelder\_prüfen()
 If txt\_Reihe.Text = "" Or txt\_Sitz.Text = "" Then
 MsgBox ("Sie müssen die Reihe und den Sitz eingeben")
 End If
End Sub

Function existenz() As Boolean
 If txt\_Reihe \> 50 Or txt\_Sitz \> 10 Then
 MsgBox ("Dieser Platz existiert garnicht!!")
 existenz = False
 Exit Function
 Else: existenz = True
 End If
End Function

Private Sub feld\_leeren()
 txt\_Reihe.Text = ""
 txt\_Sitz.Text = ""
 txt\_Reihe.SetFocus
End Sub

Private Sub cmd\_Ende\_Click()
 Unload Me
End Sub

ivi

[MOD] Pre-Tags eingefügt.

Hi Ivi,

ich hab nicht so ganz verstanden was du geschrieben hat…

tja nu, du erwähnst im Ausgangsposting was von „Platz“ ich frage nach was damit gemeint ist, keine Antwort.
Ich frage was bei „msgbox irgendwas“ angezeigt wird, keine Antwort.
ch frage nach ob die Datei in dem aktuellen Verzeichnis überhaupt existiert, keine Antwort.
Nun sagst du du hast meine Nachfragen nicht verstanden, habe da jetzt keinen Plan wie ich es erneut bzw. anders formulieren sollte.
Ich gehe davon aus du weißt wie man „msgbox“ oder „dir“ einsetzt, insofern verstehe ich dein Unverständnis meiner Nachfragen nicht.

Zu deinem Code, ElseIf ist unübersichtlich, nimm select case.

Private Sub cmd\_OK\_Click()
'Einlesen
wahl = txt\_Wahl.Text
'Plausibilitätskontrolle
If txt\_Wahl.Text "" Then
 Select Case wahl
 Case 1 To 5
 film = Worksheets("Filme").Cells(wahl + 1, 3)
 Case Else
 film = Worksheets("Filme").Cells(7, 3)
 End Select
 frm\_Karte.lbl\_Film.Caption = film
 frm\_Karte.Show
Else
 MsgBox ("Sie müssen einen Film aussuchen")
End If
End Sub

Und benutze bitte unbedingt den pre-Tag wenn du hier Code postest.

Und warum soll sich die Datei vba_24 .xls öffnen wenn du eine völlig andre Datei namens „vba_24“ mit
Workbooks(„vba_24“).Open
öffnen willst. Sie bleibt mit Recht sehr verschlossen :smile:

Gruß
Reinhard

Hallo ivi,

bei Deinem Problem kann ich Dir leider nicht helfen, von VBA habe ich keine Ahnung.

Gruß, Rainer