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

Laufzeitfehler '9'

Laufzeitfehler '9'
Ballie
Hallo Excel Freunde,
ich finde den Fehler nicht, könnte da mir einer einen Rat geben. Es wird gleich nach dem betätigen des Makros diese Fehlermeldung angezeigt .
Gruß Ballie
2. Programm VAB-Code' macht den Fehler
' Um dieses Programm laufen zu lassen, müßte man in A1:A12 eine Zahlen Reihe eingeben.

Sub Makro2()
Dim A As Integer
Dim B As Integer
Dim I As Integer
Dim II As Integer
arrV = Application.Transpose(Range("A1:A12"))
intA = 11
intB = 12
For I = 1 To 4
intA = intA - 1
intB = intB - 1
For kk = IntA To IntB
varW = arrV(kk)
arrV(kk) = arrV(kk + 1)
ElseIf kk  12 Then jj = 1
Range("D1:D12") = Application.Transpose(arrV)
End Sub

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Laufzeitfehler '9'
27.07.2009 08:36:07
David
Hallo Ballie,
abgesehen davon, dass du nur die Hälfte der Variablen definiert hast, fehlt im Code eine If-Anweisung. Du hast zwar ein ElseIf und ein End If, aber das eigentliche If fehlt.
Vielleicht solltest du auch mal noch dazu schreiben, was genau der Zweck deines Makros sein soll, der erschließt sich mir noch nicht ganz.
Gruß
David
AW: Laufzeitfehler '9'
27.07.2009 11:12:13
Ballie
Hallo David,
vielen Dank für deine Beantwortung, ja es möglich das da noch eine if Befehl fehlt, aber wo und wie ?.
Nochmals zum Makro, das Makro soll eine Zahlenreihe von A1:A12 um 1 Zahl tauschen, wie ich dir jetzt im VBA-Code Beispiel mitsende, dieses Makro läuft. Ich möchte aber zusätzlich wie du erkennen könntest den gesamten Zahlenbereich rückwärts tauschen. Vielleicht erkennst du diese Veränderung im VBA-Code.
Ich würde mich freuen wenn du den VBA-Code richtig korregieren könntest. Man müßte nu vorher in A1:A12 eine Zahlenreihen schreiben.
Gruß Ballie
Sub Makro1()
Dim arrV As Variant, intNr As Integer
Dim I As Integer, jj As Integer, kk As Integer, varW As Variant
Dim IntA As Integer, IngC1 As Long, IngC2 As Long
arrV = Application.Transpose(Range("A1:A12"))
intNr = IIf(Cells(15, 9)  12 Then jj = 1
Next I
Range("D1:D12") = Application.Transpose(arrV)      ' Ausgabe in D1:D12
Cells(15, 9) = intNr
Erase arrV
End Sub

Anzeige
AW: Laufzeitfehler '9'
27.07.2009 11:32:43
David
Hallo Ballie,
was heißt bei dir "Zahlenbereich rückwärts tauschen"?
A1 wird zu A12
A2 wird zu A11
A3 wird zu A10
usw.
?
oder wie sonst? Mach doch mal ein aussagekräftiges (!!!) Beispiel, am besten vorher/nachher (manuell).
Auf jeden Fall erscheint mir der Code reichlich umständlich für den Zweck.
Gruß
David
AW: Laufzeitfehler '9'
27.07.2009 13:34:12
Ballie
Hallo David,
ich habe dir den zweiten VBA-Code für einen Demozweck mitgesendet, wenn du ihn startest, dann wird er dir die Ausgabe in D1:D12 anzeigen, das läuft ja richtig zB. und tauscht 1 mit 2, 1 mit 3, unw. aber ich möchte gerne die Steuervariable wie jetzt nicht in der Demo Version mit 1, 2, 3, 4, bis 12 vorwärts angesteuert haben sondern mit der veränderten Programmversion gleich mit IntA (11), intB (12) die somit rückwärts läuft ansteuern. In dieser modifizierten Schleife wird jetzt eine andere Kombination die Steuervariable ansteuern mit 11 12 10 11 12 8 9 10 11 5 6 7 8 9 1 2 3 4 5 6 und die Ausgabe in D1:D12 durch eine ander Zahlenreihe tauschen sie ist igal wie sie dann ausfällt, dieser Zahlen-Code für wird rückwärts mit diesem VBA-Programm-Code erzeugt, wenn keine Fehlermeldungen entstehen. na ich hoffe dir damit geholfen zuhaben, denn ich kann selbst keine VBA-Code Programieren, im normalen Basic läuft dieser Programm-Code einwandfrei, habe ich selbst getestet.
Gruß Ballie
Anzeige
AW: Laufzeitfehler '9'
27.07.2009 13:45:54
David
Hallo Ballie,
ich weiß nicht, aus welchem (Programmier)Universum du bist, aber ich verstehe nur Bahnhof. Schade um den vielen Text, den du geschrieben hast, aber ich kann nicht erkennen, was der SINN des GANZEN ist!?
"Steuervariablen", "Zahlenreihe tauschen", "Zahlen-Code"?
Wenn du es nicht verständlich erklären kannst, gebe ich auf?
Any other an idea?
Gruß
David
AW: Laufzeitfehler '9'
27.07.2009 18:23:43
Ballie
Hallo David,
noch einmal eine Frage, geht dieser Code In VBA-Code umzuschreiben?
Gruß Ballie
A = 11 : B = 12
For I = 1 To 5
For ii = A To B
A = A – 1 : B = B – 1
Next ii
A = A + 1: B = B + 2
Next I
Anzeige
AW: Laufzeitfehler '9'
27.07.2009 18:39:33
Heinz
Hi,
wozu umschreiben, läuft so in VBA?
mfg Heinz
AW: Laufzeitfehler '9'
27.07.2009 22:10:34
BoskoBiati
Hallo David,
hast Du die Frage nicht schonmal in einem anderen Forum gestellt und Antworten erhalten?
AW: Laufzeitfehler '9'
28.07.2009 09:23:55
Ballie
Hallo BoskoBiati,
nochmals vielen Dank für dein damals an mich abgegebenes VBA-Script. Ja es richtig, du hattest den Sinn richtig erkannt und mir dieses kleine Programm geschrieben. Danach hatte ich gedacht, dass ich dieses in mein weiteres Programm selbst umzusetzten könnte, aber leider hatte es nicht geklappt. weil ich nicht VBA-Code schreiben kann. Darauf hin habe ich versucht dieses erweitertes Programm ins Forum zustellen, aber das verstehen die Vorgänger nicht so richtig. Ich möchte dich vielleicht nocheinmal bitten lieber BoskoBiati, mit mir dieses erweitere Programm zum Laufen zu bringen. Es ist im Prinzip ganz einfach zu verstehen, in meinem Programm sollte nun die Schleifenvariable wie du auch verstanden und geschrieben hattest, es sollte jetzt nur mit deinem Ergeniss also 11, 12, 10,11,12,8,9,10,11,5,6,7,8,9, 1,2,3,4,5,6, aus deinem Script die For Next Schleife angesteuert werden. Der Zweck ist, die danach in D1:D12 ausgegeben Zahlenreihe nach diesem Prinzip zusätzlich rückwärts zu tauschen. Ich habe dir im Script 3 meine Version geschrieben, die ich gerne umgeschrieben hätte, im einfachen Basic läuft diese Programm richtig auch rückwärts.
Gruß Ballie
' Mein erstes Bespiel in vereinfachter Form, das auch richtig läuft, aber nur vorwärts :
Dim arrV As Variant, intNr As Integer
Dim I As Integer, jj As Integer, kk As Integer, varW As Variant
Dim IntA As Integer, IngC1 As Long, IngC2 As Long
arrV = Application.Transpose(Range("A1:A12"))
intNr = IIf(Cells(15, 9) For I = 1 To intNr
jj = jj + 1
For kk = 1 To jj ' in dieser For Next Schleife sollte dein Ergebnis, also die Schleifenvariable
If kk = 1 Then ' angesteuert werden, dafür habe ich diese Schleife so umgeschreiben
varW = arrV(kk) ' For kk = intC1 to intC2 das läuft aber nicht.
arrV(kk) = arrV(kk + 1)
ElseIf kk arrV(kk) = arrV(kk + 1)
End If
Next
arrV(jj) = varW
If kk > 12 Then jj = 1
Next I
Range("D1:D12") = Application.Transpose(arrV) ' Ausgabe in D1:D12
Cells(15, 9) = intNr
Erase arrV
End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Dein VAB-Code
Sub Zahlenreihe()
Dim intA As Integer
Dim lngC1 As Long
Dim lngC2 As Long
intA = 11
For lngC1 = 0 To 4
For lngC2 = 0 To lngC1 + 1
Cells(lngC1 + 1, lngC2 + 1) = intA - lngC1 + lngC2
Next
intA = intA - lngC1
Next
End Sub

'''''''''''''''''''''''''''''''''''''' Dieses Programm sollte nun rückwärts laufen, habe ich selbst umgeschrieben aber ''''''''''''''''''''''''''''''''''''' das läuft nicht.
Sub Makro2()
Dim A As Integer
Dim B As Integer
Dim I As Integer
Dim II As Integer
arrV = Application.Transpose(Range("A1:A12"))
intA = 11
intB = 12
For I = 1 To 4
intA = intA - 1
intB = intB - 1
For kk = IntA To IntB
varW = arrV(kk)
arrV(kk) = arrV(kk + 1)
ElseIf kk  12 Then jj = 1
Range("D1:D12") = Application.Transpose(arrV)
End Sub

Anzeige
AW: Laufzeitfehler '9'
28.07.2009 20:48:17
BoskoBiati
Hallo ballie,
ich weiß momentan nicht, was Du vorhast, aber Dein Makro ist so nicht lauffähig. Die Variablen sind nicht deklariert, es fehlt eine If-Anweisung und intA sowie intB werden abwechseln um 1 größer bzw. kleiner. Der Code mit Transpose ist wohl irgendwo übernommen, aber es fehlen wohl ein paar Zeilen-
Zudem stellt mein Makro die Zahlen nicht in A1 bis A12, sondern in die ersten 5Zeilen in mehrere Spalten. Wie soll damit eine Schleife angesteuert werden?
AW: Laufzeitfehler '9'
29.07.2009 13:01:17
Ballie
Hallo BoskoBiati,
ja, ich werde dir versuchen dir den Ablauf über diese For Next zu erklären, zB. wenn man eine normale For Next Schleife nutzt, dann werden doch in der Schleifen-Variable die Zahleninhalte auch von 1 bis 12 entstehen, so wie in diesem Script, je nachdem wie hoch die Außenschleife eingestellt wird. Danach wird doch der selbe Inhalt der Schleifenvariable in die Variable
übertragen, das hat zur Folge, das der weitere Ablauf den ersten mit den zweiten Zahleninhalt der von der Transpose(Range("A1:A12 ")) kommt, getauscht wird. Um diesen Ablauf zu starten müßte man in der Spalte A1:A12 erst einmal Zahlen zB. 1-12 schreiben. diese werden aus meinem Programm vorher automatisch erzeugt und kommen sonst aus einer anderen Spalte und werden somit mit diesem TransposeScript übernommen. das bedeutet, das der Inhalt der Spalte A1: A12 immer nach diesem Prinzip getauscht wird, von 1 mit 2, 1 mit 3, 1 mit 4 usw. jetzts kommts, weil doch die SchleifenVariable mit den da unterstehenden Script diese Funktion ausführt, soll jetzt das aber nicht nach diesem Prinzip arbeiten, sondern wenn die SchleifenVariable nicht mit 1,2,3,4 bis12 durchlaufen und damit getauscht wird, sonder mit den von dir verstanden AblaufCode und in meinem jetzigen unten abgebildeten Script 11, 12, 10, 11, 12, usw angesteuert wird, dann werden die Zahleninhalte von A1:A12 doch in anders getausch, das ist alles. Natürlich wird der gesamte Tauschvorgang in der Spalte D1:D12 übertragen und sichtbar gemacht. Mein Script in Basic lauft einwand frei, so wie hier abgebildet ist. Gruß Ballie
Sub Makro2()
Dim A As Integer
Dim B As Integer
Dim I As Integer
Dim II As Integer
arrV = Application.Transpose(Range("A1:A12"))
intA = 11
intB = 12
For I = 1 To 4
intA = intA - 1
intB = intB - 1
For kk = IntA To IntB
If kk = 1 Then
varW = arrV(kk)
arrV(kk) = arrV(kk + 1)
ElseIf kk  12 Then jj = 1
Range("D1:D12") = Application.Transpose(arrV)
End Sub

Anzeige
AW: Laufzeitfehler '9'
29.07.2009 22:09:40
BoskoBiati
Hallo ballie,
setze mal über Deine Code "Option explicit" und Du wirst sehen, was er macht: Fehlermeldungen produzieren. Bevor dieser Code laufen kann, müssen die Fehler erst einmal ausgebügelt sein.
Dann kann es nicht sein, dass eine Variable arrV und arrV() benannt ist.
Was willst Du mit jj?
Dieses Makro ist nicht lauffähig!!!
AW: Laufzeitfehler '9'
30.07.2009 20:32:46
Ballie
Hallo BoskoBiati,
ich bins der Ballie, ich habe wie empfohlen das Makro in "Option explicit" ersetzt, und wie zu sehen war viele Fehlermeldungen. Ich hab nun versucht, so weit wie möglich diese zu beseitigen, außer das die Variable arrV und arrV() die du benannt hattest, diese konnte ich nicht selbst umbauen. Durch die eingebauten Zähler sollte die For Next Schleife rückwärts laufen, in Basic stimmen die Parameter alle. Möchte dich nochmals bitten einen Blick auf diese Scrpit zu machen, und eventuell dieses Script verändern, ich wäre sehr dankbar dafür.
Gruß Ballie
Dim i As Integer
Dim II As Integer
Dim intA As Integer
Dim intB As Integer
Dim kk As Integer
Dim z As Integer
Dim varW As Integer
Dim arrV
arrV = [A1:A12]
'[B1:B12] = arrV
arrV = Application.Transpose(Range("A1:A12"))
intA = 11
intB = 12
For i = 1 To 4
intA = intA - 1
intB = intB - 1
For kk = intA To intB
If kk = 11 Then
varW = arrV(kk)
arrV(kk) = arrV(kk + 1)
ElseIf kk ' arrV(kk) = arrV(kk + 1)
End If
Next kk
arrV(kk) = varW ' hier ensteht wieder ein Laufzeitfehler '9'
If kk > 12 Then intB = 6
intA = intA + 1
intB = intB + 2
Next i
Range("D1:D12") = Application.Transpose(arrV)
Erase arrV
End Sub
Anzeige
AW: Laufzeitfehler '9'
31.07.2009 08:56:24
David
Hallo Ballie,
wenn du mal den Debugging-Modus nutzen würdest und evtl. auch noch die Variablen überwachst, bekommst du heraus, dass der Fehler '9' entsteht, weil kk zu diesem Zeitpunkt =13 ist und du die Variable arrV() nur bis 12 definiert hast.
Ich bin immer noch der Meinung, dass dein Code viel zu umständlich ist, aber du hast ja bisher auch leider nicht schlüssig erklärt, was denn überhaupt der Zweck ist. Und ausprobieren kann man es ja nicht, da der Code nicht läuft.
Vielleicht solltest du hier erst mal noch ein paar Infos liefern.
Mein bisheriger Stand und dazu meine Fragen:
Du hast in A1:A12 Werte stehen!
--- Welche Werte?
--- Beispiel?
Diese sollen "irgendwie" vertauscht werden!
--- In welcher Form? Nach welchen Regeln?
--- Wo soll das Ergebnis stehen? In den Originalzellen oder woanders?
Kannst du nicht einfach eine Beispielmappe erstellen, die (1.) den Ausgangszustand und (2.) den Soll-Zustand nach dem Makro anzeigt (manuell eingetragen)?
Dies wird meine letzte Nachfrage zu deinem Thread sein, falls wieder nur unpassendes als Antwort kommt. Die anderen VBA-Experten, die sonst immer sehr kompetent sind (Hajo, Erich_G z. Bsp.) halten sich hier ja anscheinend raus, was mich über die Ursache rätseln lässt! Ich vermute mal, sie haben auch keine Lust, ständig nachzufragen, ohne zutreffende Antworten auf ihre Fragen zu bekommen.
Und so geht es mir langsam auch...
Gruß
David
Anzeige
AW: Laufzeitfehler '9'
01.08.2009 14:06:56
Ballie
Hallo David,
http://www.file-upload.net/download-1801190/ForNext-1.xls.html
ich möchte mich hiermit nochmals bedanken für die Geduld für alle Excel-Mitdenkenden die für dieses kleine Problem mich unterstützen. Deshalb werde ich ein File-Update in VBA-Code euch senden, wo das Makro in vereinfachter Form lauffäig ist, um das Prinzip deutlich zu machen. Mein Wunsch wäre, den euch schon in den vorherigen Thread aufgezeigten Code, so um zu programmieren und verändern, das dieser in umgekehrter Form arbeitet, das bedeutet das die For Next Schleife von unten, also mit A12 beginnt zu tauschen, das wird durch die zusätzlichen Zähler womit sich auch diese beiden Programm VBA-Codes unterscheiden. Das Tausch-Prinzip soll dadurch auch total verändert werden. Da nun die Schleife nach der neuen Version so verändert wird, sodas nicht mit 1 bis 12 beginnt sondern beginnt mit 11,12, 10, 11, 12, 8,9,10,11, 5,6,7,8,9,1,2,3,4,5,6, dieses wir durch die Anordnung der Zähler verursacht. Da ich diesen in VBA-Code umgeschrieben benutzen möchte, läuft dieser Script natürchlich noch nicht richtig. Im normalen Basic läuft dieses Programm aber richtig. Das Prinzip des Umtauschen wird dann anders aussehen, ist auch so gewollt, als den VAB-Code den ich jetzt als File-Update als Beispiel euch mitsende, wichtig ist nur das die For Next Schleife kk rückwärts nach diesem Prinzip 11,12, 10, 11, 12, 8,9,10,11,5,6,7,8,9,1,2,3,4,5,6, anfängt, und die Programmabfrage danach auch diese versteht. Ich hoffe alle Fragen damit beantwortet zu haben. Vielen Dank schon mal vorab.
Gruß Ballie
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige