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

DRINGEND! Call Sub() Methode funktioniert nicht.

DRINGEND! Call Sub() Methode funktioniert nicht.
26.11.2016 14:13:42
Sebastian
Hallo Zusammen,
ich habe ein dringendes Problem: Im nachfolgenden Code prüfe ich zuerst, welchen Wert die PoolsystemBox hat. Es geht um den Wert 5. Die Prozedur läuft einwandfrei durch und der erste Call-Befehl (Call report_konvertierungscode_seite5) funktioniert auch. Nachdem dieser Code durchgeführt wurde geht die Prozedur wieder im Sub Erstellen_Click weiter und die nächste Anweisung liegt auf "Call report_konvertierungscode_seite5", jedoch funktioniert die Call-Methode hier nicht mehr und die Anweisung überspringt diesen Call einfach.
Ich habe auch schon versucht "Call report_konvertierungscode_seite5" an das Ende des Subs "report_konvertierungscode" zu setzen, jedoch wird der Call hier ebenfalls übergangen.
Was mache ich falsch? Bitte um schnelle Hilfe, falls Infos fehlen einfach sagen! Vielen Dank im Voraus! Ich habe unten den kompletten Code angegeben, es geht jedoch nur um diesen Teil:
If PoolsystemBox.Value = "1" Then
Call report_konvertierungscode
End If
If PoolsystemBox.Value = "2" Then
Call report_konvertierungscode
End If
If PoolsystemBox.Value = "3" Then
Call report_konvertierungscode
'Konvertierungscode für tatsächliche Mietkosten einfügen
End If
If PoolsystemBox.Value = "4" Then
Call report_konvertierungscode
End If
If PoolsystemBox.Value = "5" Then
Call report_konvertierungscode
Call report_konvertierungscode_seite5
End If
------------------------
Public Sub Erstellen_Click()
Dim DatAuswahlReportMonat As Date
Dim IntLetzteZelleDB As Integer
Dim IntZählerZusammenführung As Integer
Dim RngZuordnung As Range
Dim StrZuordnungErg As String
Dim StrZuordnungMonatswert As String
Dim wsHilfstabelle As Worksheet
'Bildschirmaktualisierung aus
Application.ScreenUpdating = False
'Prüfen ob ausgewählter Monat in Datenbank enthalten ist
If KundenBox.Value = "" Or PoolsystemBox.Value = "" Or ReportMonatBox.Value = "" Then
MsgBox "Achtung: Sie haben in einem (oder mehreren) der folgenden Felder keine Daten  _
ausgewählt:" & vbCr & vbCr & "Feld 1: Kunde" & vbCr & "Feld 2: Poolsystem" _
& vbCr & "Feld 4: Report-Monat" & vbCr & vbCr & "Bitte die fehlenden Daten auswählen!",  _
vbOKOnly + vbCritical, "kd-analytics"
Else
DatAuswahlReportMonat = ReportMonatBox.Value
Set wsHilfstabelle = Worksheets.Add
With wsHilfstabelle
.Name = "Hilfstabelle"
.Move after:=Sheets(Sheets.Count)
End With
Set wsHilfstabelle = Nothing
Sheets("datenbank").Select
Sheets("datenbank").Cells.Select
Selection.Copy
Sheets("Hilfstabelle").Select
ActiveSheet.Paste
Sheets("Hilfstabelle").Columns("A:G").Delete
Sheets("Hilfstabelle").Columns("D:N").Delete
With ActiveSheet
IntLetzteZelleDB = .Cells(.Rows.Count, "A").End(xlUp).Row - 1
End With
For IntZählerZusammenführung = 2 To IntLetzteZelleDB
Sheets("Hilfstabelle").Cells(IntZählerZusammenführung, 4) = Sheets("Hilfstabelle"). _
Cells(IntZählerZusammenführung, 1).Value & "_" & Sheets("Hilfstabelle").Cells(IntZählerZusammenführung, 3).Value
Next IntZählerZusammenführung
StrZuordnungMonatswert = DatAuswahlReportMonat & "_" & PoolsystemBox.Value
With Sheets("Hilfstabelle").Range("D2:D" & IntLetzteZelleDB)
Set RngZuordnung = .Find(StrZuordnungMonatswert, LookAt:=xlWhole, LookIn:=xlValues,  _
_
SearchOrder:=xlByRows)
If RngZuordnung Is Nothing Then
StrZuordnungErg = ""
Else
StrZuordnungErg = RngZuordnung
End If
End With
Application.DisplayAlerts = False
Sheets("Hilfstabelle").Delete
Application.DisplayAlerts = True
Sheets("hmi").Select
If StrZuordnungErg = "" Then
MsgBox "Achtung: Ausgewählter Report-Monat ist nicht in der Datenbank enthalten!" &  _
vbCr & vbCr & "Bitte zuerst die Daten aus dem Rohdaten-Konverter importieren!", vbOKOnly + vbCritical, "kd-analytics"
End
Else
If PoolsystemBox.Value = "1" Then
Call report_konvertierungscode
End If
If PoolsystemBox.Value = "2" Then
Call report_konvertierungscode
End If
If PoolsystemBox.Value = "3" Then
Call report_konvertierungscode
'Konvertierungscode für tatsächliche Mietkosten einfügen
End If
If PoolsystemBox.Value = "4" Then
Call report_konvertierungscode
End If
If PoolsystemBox.Value = "5" Then
Call report_konvertierungscode
Call report_konvertierungscode_seite5
End If
MsgBox "datenbank-report-konvertierung wurde erfolgreich durchgeführt!" & vbCr & "( _
behälterpool: " & PoolsystemBox.Value & ")", vbOKOnly,
'End If
End If
End If '(Prüfung Comboboxen)
End Sub

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
DRINGEND! Call Sub() Methode funktioniert nicht.
26.11.2016 15:32:47
Michael
Hi,
ohne das Drumherum zu kennen, ist das alles schwierig zu beurteilen...
Setze doch einfach mal zwei msgboxen in den Code, damit Du siehst, was passiert, also etwa so:
        Else
msgbox "PSB.V = " & PoolsystemBox.Value
If PoolsystemBox.Value = "1" Then
Call report_konvertierungscode
End If
If PoolsystemBox.Value = "2" Then
Call report_konvertierungscode
End If
If PoolsystemBox.Value = "3" Then
Call report_konvertierungscode
'Konvertierungscode für tatsächliche Mietkosten einfügen
End If
If PoolsystemBox.Value = "4" Then
Call report_konvertierungscode
End If
If PoolsystemBox.Value = "5" Then
msgbox "bin hier"
Call report_konvertierungscode
stop ' ***
Call report_konvertierungscode_seite5
End If

Wenn Du dann die untere siehst, kannst Du ja mal mit F5/F8 die weitere Funktion des Makros ab dem stop ansehen.
Schöne Grüße,
Michael
Anzeige
Du solltest deine PgmmierKenntnisse erweitern, ...
26.11.2016 18:10:53
Luc:-?
…Sebastian;
neben If … Then … Else … End If gibt's noch If … Then … ElseIf … Then … Else … End If und natürlich auch Select Case … Case … … Case … … Case Else … End Select, wodurch nicht unnötiger­weise immer noch vgln wdn muss, wenn bereits ein Vgl erfolgreich war.
Warum der Fehler auftritt, mag am aufgerufenen Pgm liegen.
Gruß, Luc :-?
Besser informiert mit …
so dringend kann's nicht gewesen sein,
26.11.2016 18:21:23
Michael
Luc :-?
sonst hätte eigentlich schon längst was kommen müssen...
Schöne Grüße (auch an die Urlauber),
Michael
Anzeige
Danke & schö1AdSo! owT
26.11.2016 19:38:52
Luc:-?
:-?
AW: Du solltest deine PgmmierKenntnisse erweitern, ...
27.11.2016 13:39:14
Sebastian
Hallo ihr zwei,
entschuldigt, dass ich so spät antworte. Es war gestern beim Zeitpunkt des Eintrages dringend, ich musste das Problem dann umgehen ohne es zu lösen. (Zum Zeitpunkt der Antworten war ich nicht mehr am Arbeiten)
Danke für den Tipp Luc, aber dass ich meine Kenntnisse erweitern muss ist mir bewusst, deswegen habe ich Basiskenntnisse angegeben, auch wenn das evtl. auch bisschen zu hochgegriffen ist...:-P
Naja zurück zum Problem (falls ihr mir noch helfen wollt :D)
@Michael: Mas müsstest du "drumherum" wissen, damit besser klar wird was genau das Problem ist?
@Luc: Was meinst du mit es könnte am "pgm" liegen? Meinst du, wenn ich weniger Vergleiche habe könnte der Call klappen?
Vielen Dank im Voraus und nochmal sorry für die späte Antwort.
LG
Anzeige
hast Du's ausprobiert?
27.11.2016 14:29:01
Michael
Hi,
das mit den msgboxen hilft Dir halt, beim Programmtest mitzuverfolgen, wann welche Werte erscheinen.
Vielleicht kommt einfach nie die 5?
Oder vielleicht wird durch eine der zuvor aufgerufenen Subs der Wert in "Poolsystembox" geändert, so daß das Programm nie zur inneren msgbox kommt?
Das mußt Du selbst testen. Oder Du lädst die komplette Datei (mit ein paar Spieldaten) hoch.
Weißt, es ist ja noch nicht einmal nachvollziehbar, was "Poolsystembox" sein soll (vermutlich eine Zelle, der ein Name verpaßt wurde) - wie sollen wir da was sagen?
Schöne Grüße,
Michael
Anzeige
AW: hast Du's ausprobiert?
27.11.2016 19:40:56
Sebastian
Hallo Michael,
okay da hast du Recht, dass hab ich nicht verständlich genug erklärt.
Im Prinzip beinhaltet mein Vorhaben 1 Userform, 3 verschiedene Subs und läuft so ab:
1. Userform: Hier muss man in einer Combobox (PoolsystemBox) die Werte 1,2,3,4 oder 5 auswählen. Danach drückt man einen Comandbutton der zum geposteten Sub "Erstellen_Click" führt.
2. Sub Erstellen_Click: Den ersten Teil hat nichts mit meinem Problem zu tun. Es geht um die IF-Prüfungen bei denen der Wert aus der PoolsystemBox abgefragt wird. In diesem Fall wurde also der Wert "5" ausgewählt und die Anweisung liegt auf "Call report_konvertierungscode". Der Sub "report_konvertierungscode" wird aufgerufen.
3. Sub report_konvertierungscode: Dieser Code läuft einwandfrei durch, der Sub wird beendet und die Anweisung springt zurück zum Sub "Erstellen_Click".
4. Sub Erstellen_Click: Die Anweisung liegt auf "Call report_konvertierungscode"_seite5" (Es soll nun das gleiche Prozedere ablaufen wie bei Schritt 3., also erst der Sub "report_konvertierungscode_seite5" aufgerufen und durchführt werden und zu guter letzt der sub "Erstellen_Click" beendet werden). Wenn ich nun F8 drücke passiert jedoch nichts (auch keine Fehlermeldung), der Call wird im Prinzip ignoriert und die nächste Anweisung liegt auf "End If".
Genau an diesem Punkt verstehe ich also nicht, wieso die Call-Methode nicht ausgeführt bzw. der Sub nicht aufgerufen wird, es muss ja nichts mehr geprüft werden, denn die Anweisung liegt ja schon an der richtigen Stelle, der Sub-Name stimmt mit dem in der Call-Methode überein etc.
Ich hoffe ich hab es einigermaßen verständlich erklärt. Für deine Mühe schon mal vielen Dank!
LG
----------------------------------------------------------------------------------------------------------------------------------
Hier nochmal am Bsp. der Problemstelle erklärt:
If PoolsystemBox.Value = "1" Then
Call report_konvertierungscode
End If
If PoolsystemBox.Value = "2" Then
Call report_konvertierungscode
End If
If PoolsystemBox.Value = "3" Then
Call report_konvertierungscode
'Konvertierungscode für tatsächliche Mietkosten einfügen
End If
If PoolsystemBox.Value = "4" Then
Call report_konvertierungscode
End If
If PoolsystemBox.Value = "5" Then
Call report_konvertierungscode 'Dieser Call funktioniert einwandfrei, der Sub wird geöffnet, ausgeführt und die nächste Anweisung steht dann:
Call report_konvertierungscode_seite5 'HIER - Wenn ich nun F8 drücke passiert nichts ausser das die Anweisung nun
End If 'HIER steht
Anzeige
AW: Manchmal sind Prozedurnamen zu ähnlich
27.11.2016 20:04:54
Gerd
Hallo Sebastion!
Zeige doch mal das nicht funktionierende Makro.
Bis dahin würde ich dieses beim Call u. im Prozedurenkopf in "seite5" umbenennen.
Gruß Gerd
AW: Manchmal sind Prozedurnamen zu ähnlich
28.11.2016 15:11:10
Michael
Hi,
und wenn Du dann noch mehrmals F8 drückst? Springt das Makro dann in die ..._seite5?
Aber wir fischen im Trüben: am besten wäre es, wenn Du uns eine Beispieldatei (bitte vorher alle echten durch ein paar Beispieldaten ersetzen) hochlädst.
Schöne Grüße,
Michael

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige