Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
884to888
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
884to888
884to888
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Abbruch/exception nach .insertLines Sub-Kopfzeile

Abbruch/exception nach .insertLines Sub-Kopfzeile
06.07.2007 13:01:00
felix
Guten Tag,
bitte helft mir.
Excel stürtzt ab bei der Verarbeitung der auf die erste Sub-Kopfzeile folgenden ".insertLines"-Anweisung. Meine Vermutung ist, daß die Excel-Kodeprüfung in der Zieldatei einen Fehler wirft, den ich nicht weiß aufzufangen und zu verarbeiten.
Bei nachstehend vereinfachtem Kode ist die Abbruchstelle sobald die Verarbeitung bei Breakpoint auf .insertLines 3 um einen Schritt (F8) freigegeben wird. "134" steht nur aus Testgründen nach "3", da ich die Sub in der Zieldatei zuerst "komplettieren" wollte. Das selbe passiert aber auch, wenn "4" nach "3" verarbeitet werden soll. Das selbe passiert auch an der selben Stelle, wenn "Zeile .insertLines 2" fehlt.
Vorher wird die ganz unten stehende .insertLines-Anweisung in ("DieseArbeitsmappe").codeModule fehlerfrei und korrekt ausgeführt. Das "Zeilenumbruchverfahren" läßt sich wegen einer Beschränkung der maximalen Zeichenzahl und/oder Umbruchanzahl pro Anweisung nicht für die lange Einfügung verwenden.
Es gäbe wohl auch die Möglichkeit den einzufügenden Kode über eine Textdatei einzufügen. Auch ist es wohl möglich den einzufügenden Kode aus einem Modul der Datei zu laden, die derzeit die .insertLines-Anweisungen ausführen soll. Falls jemand dafür Hilfestellung geben will, würde ich mich freuen, denn dafür fehlen mir Kenntnisse.
Zum Zusammenhang sollte man wohl noch wissen, dass ich vor der Ausführung der codeModule-Anweisungen 17 Textdateien lade und zur manuellen Auswertung "vorkonfiguriere". Dazu gehört dann auch der für jede der neuen Arbeitsblätter einzufügende Kode. Der Kode funktioniert (bei manuellem Einkopieren) in der Zieldatei einwandfrei.
Haken bei "Zugriff auf Visual-Basic Projekt" ist gesetzt.
Haken bei "Verweis "Microsoft Visual Basic for Applications Extensibility 5.3" ist gesetzt.
(Leider bekomme ich die Formatierung für HTML nicht in den Griff.)
####Kode Beginn
With ActiveWorkbook.VBProject. _
VBComponents("Tabelle18").CodeModule
.InsertLines 2, "Option Explicit"
.InsertLines 3, "

Private Sub Worksheet_Change(ByVal Target As Excel.Range)"
.InsertLines 134, "End Sub

"
.InsertLines 4, "Dim help As Variant"
.InsertLines 5, "Dim colNr As Integer, rowNr As Integer"
.InsertLines 6, "colNr = Target.Column"
.InsertLines 7, "rowNr = Target.Row"
.InsertLines 8, "If rowNr = 6 Then"
.InsertLines 9, " If WorksheetFunction.IsText(Target.Value) Then"
.InsertLines 10, " Select Case UCase(Left(Target.Value, 1))"
.InsertLines 11, " Case ""R"""
.InsertLines 12, " With Range(Cells(1, colNr), Cells(12000, colNr))"
.InsertLines 13, " .Interior.Color = vbRed"
.InsertLines 14, " .Font.Bold = True"
.InsertLines 15, " .Borders.Color = vbWhite"
.InsertLines 16, " .Borders.LineStyle = xlContinuous 'xlDot 'xlDash, xlContinuous"
.InsertLines 17, " .Borders.Weight = xlThin 'xlThick, xlMedium, xlThin, xlWeightHairline, xlWeightThin"
.InsertLines 18, " End With"
.InsertLines 19, " Case ""B"""
.InsertLines 20, " With Range(Cells(1, colNr), Cells(12000, colNr))"
.InsertLines 21, " .Interior.Color = RGB(128, 128, 255)"
.InsertLines 22, " .Font.Bold = True"
.InsertLines 23, " .Borders.Color = vbWhite"
.InsertLines 24, " .Borders.LineStyle = xlContinuous 'xlDot 'xlDash, xlContinuous"
.InsertLines 25, " .Borders.Weight = xlThin 'xlThick, xlMedium, xlThin, xlWeightHairline, xlWeightThin"
.InsertLines 26, " End With"
.InsertLines 27, " Case ""G"""
.InsertLines 28, " With Range(Cells(1, colNr), Cells(12000, colNr))"
.InsertLines 29, " .Interior.Color = vbGreen"
.InsertLines 30, " .Font.Bold = True"
.InsertLines 31, " .Borders.Color = vbWhite"
.InsertLines 32, " .Borders.LineStyle = xlContinuous 'xlDot 'xlDash, xlContinuous"
.InsertLines 33, " .Borders.Weight = xlThin 'xlThick, xlMedium, xlThin, xlWeightHairline, xlWeightThin"
.InsertLines 34, " End With"
.InsertLines 35, " Case ""Y"""
.InsertLines 36, " With Range(Cells(1, colNr), Cells(12000, colNr))"
.InsertLines 37, " .Interior.Color = vbYellow"
.InsertLines 38, " .Font.Bold = True"
.InsertLines 39, " .Borders.Color = vbBlack"
.InsertLines 40, " .Borders.LineStyle = xlContinuous 'xlDot 'xlDash, xlContinuous"
.InsertLines 41, " .Borders.Weight = xlThin 'xlThick, xlMedium, xlThin, xlWeightHairline, xlWeightThin"
.InsertLines 42, " End With"
.InsertLines 43, " Case ""O"""
.InsertLines 44, " With Range(Cells(1, colNr), Cells(12000, colNr))"
.InsertLines 45, " .Interior.Color = RGB(255, 64, 64) 'orange"
.InsertLines 46, " .Font.Bold = True"
.InsertLines 47, " .Borders.Color = vbWhite"
.InsertLines 48, " .Borders.LineStyle = xlContinuous 'xlDot 'xlDash, xlContinuous"
.InsertLines 49, " .Borders.Weight = xlThin 'xlThick, xlMedium, xlThin, xlWeightHairline, xlWeightThin"
.InsertLines 50, " End With"
.InsertLines 51, " Case ""M"""
.InsertLines 52, " With Range(Cells(1, colNr), Cells(12000, colNr))"
.InsertLines 53, " .Interior.Color = vbMagenta"
.InsertLines 54, " .Font.Bold = True"
.InsertLines 55, " .Borders.Color = vbWhite"
.InsertLines 56, " .Borders.LineStyle = xlContinuous 'xlDot 'xlDash, xlContinuous"
.InsertLines 57, " .Borders.Weight = xlThin 'xlThick, xlMedium, xlThin, xlWeightHairline, xlWeightThin"
.InsertLines 58, " End With"
.InsertLines 59, " Case Else"
.InsertLines 60, " MsgBox (""1 gültige Eingaben sind:""" & vbLf & _
.InsertLines 61, " ""R B G Y O M und""" & vbLf & _
.InsertLines 62, " ""1 2 3 4 5 6""" & vbLf & _
.InsertLines 63, " ""Durch Löschen (kein Inhalt) wird die Formatierung aufgehoben"")"
.InsertLines 64, "End Select"
.InsertLines 65, "End If"
.InsertLines 66, " If WorksheetFunction.IsNumber(Target.Value) Then"
.InsertLines 67, " Select Case Target.Value"
.InsertLines 68, " Case ""1"""
.InsertLines 69, " With Range(Cells(1, colNr), Cells(12000, colNr))"
.InsertLines 70, " .Interior.Color = vbRed"
.InsertLines 71, " .Font.Bold = True"
.InsertLines 72, " .Borders.Color = vbWhite"
.InsertLines 73, " .Borders.LineStyle = xlContinuous 'xlDot 'xlDash, xlContinuous"
.InsertLines 74, " .Borders.Weight = xlThin 'xlThick, xlMedium, xlThin, xlWeightHairline, xlWeightThin"
.InsertLines 75, " End With"
.InsertLines 76, " Case ""2"""
.InsertLines 77, " With Range(Cells(1, colNr), Cells(12000, colNr))"
.InsertLines 78, " .Interior.Color = RGB(128, 128, 255)"
.InsertLines 79, " .Font.Bold = True"
.InsertLines 80, " .Borders.Color = vbWhite"
.InsertLines 81, " .Borders.LineStyle = xlContinuous 'xlDot 'xlDash, xlContinuous"
.InsertLines 82, " .Borders.Weight = xlThin 'xlThick, xlMedium, xlThin, xlWeightHairline, xlWeightThin"
.InsertLines 83, " End With"
.InsertLines 84, " Case ""3"""
.InsertLines 85, " With Range(Cells(1, colNr), Cells(12000, colNr))"
.InsertLines 86, " .Interior.Color = vbGreen"
.InsertLines 87, " .Font.Bold = True"
.InsertLines 88, " .Borders.Color = vbWhite"
.InsertLines 89, " .Borders.LineStyle = xlContinuous 'xlDot 'xlDash, xlContinuous"
.InsertLines 90, " .Borders.Weight = xlThin 'xlThick, xlMedium, xlThin, xlWeightHairline, xlWeightThin"
.InsertLines 91, " End With"
.InsertLines 92, " Case ""4"""
.InsertLines 93, " With Range(Cells(1, colNr), Cells(12000, colNr))"
.InsertLines 94, " .Interior.Color = vbYellow"
.InsertLines 95, " .Font.Bold = True"
.InsertLines 96, " .Borders.Color = vbBlack"
.InsertLines 97, " .Borders.LineStyle = xlContinuous 'xlDot 'xlDash, xlContinuous"
.InsertLines 98, " .Borders.Weight = xlThin 'xlThick, xlMedium, xlThin, xlWeightHairline, xlWeightThin"
.InsertLines 99, " End With"
.InsertLines 100, " Case ""5"""
.InsertLines 101, " With Range(Cells(1, colNr), Cells(12000, colNr))"
.InsertLines 102, " .Interior.Color = RGB(255, 64, 64) 'orange"
.InsertLines 103, " .Font.Bold = True"
.InsertLines 104, " .Borders.Color = vbWhite"
.InsertLines 105, " .Borders.LineStyle = xlContinuous 'xlDot 'xlDash, xlContinuous"
.InsertLines 106, " .Borders.Weight = xlThin 'xlThick, xlMedium, xlThin, xlWeightHairline, xlWeightThin"
.InsertLines 107, " End With"
.InsertLines 108, " Case ""6"""
.InsertLines 109, " With Range(Cells(1, colNr), Cells(12000, colNr))"
.InsertLines 110, " .Interior.Color = vbMagenta"
.InsertLines 111, " .Font.Bold = True"
.InsertLines 112, " .Borders.Color = vbWhite"
.InsertLines 113, " .Borders.LineStyle = xlContinuous 'xlDot 'xlDash, xlContinuous"
.InsertLines 114, " .Borders.Weight = xlThin 'xlThick, xlMedium, xlThin, xlWeightHairline, xlWeightThin"
.InsertLines 115, " End With"
.InsertLines 116, " Case Else"
.InsertLines 117, " MsgBox (""1 gültige Eingaben sind:""" & vbLf & _
.InsertLines 118, " ""R B G Y O M und""" & vbLf & _
.InsertLines 119, " ""1 2 3 4 5 6""" & vbLf & _
.InsertLines 120, " ""Durch Löschen (kein Inhalt) wird die Formatierung aufgehoben"")"
.InsertLines 121, "End Select"
.InsertLines 122, "End If"
.InsertLines 123, " If Target.Value = """" Then"
.InsertLines 124, " With Range(Cells(1, colNr), Cells(12000, colNr))"
.InsertLines 125, " .Interior.Pattern = xlPatternNone ' xlPatternGrey16 funktioniert nicht, setzt aber auf ohne Pattern zurück"
.InsertLines 126, " .Interior.ColorIndex = xlNone"
.InsertLines 127, " .Font.Bold = False"
.InsertLines 128, " .Borders.Color = vbBlack"
.InsertLines 129, " .Borders.LineStyle = xlDot 'xlDash, xlContinuous"
.InsertLines 130, " End With"
.InsertLines 131, " End If"
.InsertLines 132, ""
.InsertLines 133, "End If"
'.InsertLines 134, "End Sub

"
End With
####Kode Ende
### Kode Beginn wird vor ("Tabelle18").codeModule ausgeführt
With ActiveWorkbook.VBProject. _
VBComponents("DieseArbeitsmappe").CodeModule
StartLine = .countoflines + 1
.InsertLines StartLine, "Option Explicit" & vbLf & _
"Public adrOld As String" & vbLf & _


Private Sub Workbook_Activate()" & vbLf & _
"   adrOld = ActiveCell.Address" & vbLf & _
"End Sub

" & vbLf & _


Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)" & vbLf &   _
_
_
"   adrOld = ActiveCell.Address" & vbLf & _
"End Sub

" & vbLf & _


Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)" & vbLf & _
"   adrOld = Target.Address" & vbLf & _
"End Sub

" & vbLf & _


Private Sub Workbook_WindowActivate(ByVal Wn As Window)" & vbLf & _
"   adrOld = Wn.ActiveCell.Address" & vbLf & _
"End Sub

" & vbLf & _


Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)" & vbLf & _
"'   MsgBox (""Workbook_SheetDeactivate5"")" & vbLf & _
"   Dim ziel As String" & vbLf & _
"   ziel = ActiveCell.Address" & vbLf & _
"   On Error Resume Next" & vbLf & _
"   ziel = Application.InputBox(""Sprungziel mit OK bestätigen oder zuerst ändern"", ""  _
_
Sprungziel prüfen"", adrOld)" & vbLf & _
"   ActiveSheet.Range(ziel).Activate" & vbLf & _
"End Sub

"
End With
####Kode Ende :-)

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abbruch/exception nach .insertLines Sub-Kopfzeile
06.07.2007 15:23:00
felix
Hallo miteinander,
falls sich jemand findet, der meinen Kode in seiner Umgebung laufen lassen könnte würde ich mich über eine Rückmeldung freuen.
Gerne stelle ich auch den kompletten Kode zur Verfügung.
Danke vorab und Grüße!

AW: Abbruch/exception nach .insertLines Sub-Kopfzeile
07.07.2007 07:26:00
Luschi
Hallo Felix,
ich vermute mal, Du willst, den gesamten Vba-Code aus Arbeitmappe1.Tabelle18 nach Arbeitsmappe2.Tabelle 18 übertragen; oder willst Du nur das Change-Ereignis aus Tabelle18 kopieren?
Ich verwende die 1. Methode, da es viel leichter ist, den gesamten Code zu übertragen als eine einzelne Sub/Function. Dabei benutze ich per Vba das Expotieren und Importieren. Anschließend schmeiße ich den nicht erwünschten Code per Hand raus.
Denn es ist ja Wahnsinn, den vorhandenen Code aus AM1 so zu formatieren, das man mit .InsertLines die einzelnen Zeilen nach AM2 übertragen kann. Da bin ich mit der Gesamtkopie und rausschmeißen schneller, als den Code umzuformatieren (und es ist fehleranfälliger).
Beschreibe doch noch mal etwas genauer, waß Du also machen willst.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Abbruch/exception nach .insertLines Sub-Kopfzeile
10.07.2007 17:18:43
felix
Hallo Luschi,
wunderbar, jemand hilft mir auf die Sprünge. Danke für Deinen Beitrag!
Es sind Textdateien in eine neue Exceldatei zu laden. Das funktioniert. Danach sollen die Changeereignisse in jedem Arbeitsblatt der neuen Datei eingebaut werden.
Ich lade andere Changeereignisse übrigens in ein Klassenmodul. Dann funtionieren sie in allen Tabellen. Vielleicht kann man das mit diesen Ereignissen auch machen und spart sich so das Laden in jede einzelne Tabelle.
Mir fehlen die Zusammenhänge/das Verständnis für Vieles in VBA. Zudem bin ich kein Programmierer. Ich habe in meinem fachlichen Umfeld Probleme zu lösen, bei denen mir VBA hilft. Also suche ich nach passenden Codebeispielen und modifiziere sie. Allerdings kann ich Code lesen und weiß mir auch mit der VBA-Doku ganz gut zu helfen. Aber wo Zusammenhänge fehlen, hilft auch die beste Doku (die auf deren Kenntnis aufbaut) nichts.
Der derzeitigen Entwicklungsstand ist in _DateienLaden.xls ersichtlich. Du siehst dort, daß ich viel herumprobiert habe (auskommentiert), weil ich nicht herausgefunden habe, woran es scheitert. Angefangen hatte ich das Laden der Changeereignisse über eine Schleife über alle Arbeitsblätter zu realisieren.
Ich spare uns weitere Erläuterung, da Du wohl zu den versierten Zeitgenossen gehörst. Aber frag' lieber einmal mehr als dass Du zu viel Zeit mit "codeverstehen" vertust.
Um auf Deinen Vorschlag zurück zu kommen: wie stelle ich es an den VBA-Code (mit den Changeereignissen) aus einer Textdatei in allen Arbeitsblättern der gerade erzeugten Datei funktionsfähig zu machen?
Falls Du Beispiele für die ladenden Textdateien möchtest, sag's bitte.
Danke für Deinen Einsatz!
Gruß
Felix

Anzeige
AW: Abbruch/exception nach .insertLines Sub-Kopfzeile
10.07.2007 17:36:00
felix
Sorry, hier nun die Dateien mit dem Entwicklungsstand:
https://www.herber.de/bbs/user/44010.zip
In der CLS steht, womit die neuen Arbeitsblätter "funktionieren" sollen.
Grüße
Felix

AW: Abbruch/exception nach .insertLines Sub-Kopfzeile
10.07.2007 21:10:46
Luschi
Hallo Felix,
ich schaue es mir an, komme aber sicher erst morgen Abend dazu.
Gruß von Luschi
aus klein-Paris

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige