Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

laufzeitfehler 9: plötzlich gehts nicht mehr | Herbers Excel-Forum


Betrifft: laufzeitfehler 9: plötzlich gehts nicht mehr von: Andreas
Geschrieben am: 27.11.2009 17:59:58

hallo, habe mal ein makro bekommen das auf knopfdruck daten von einer txt-datei in ein excel blatt übernimmt. hat alles prima funktioniert, jahre lang. jetzt habe ich excel neu installiert, und es kommt folgender fehler:

laufzeitfehler 9: index außerhalb des gültigen bereichs

und wenn ich dann auf debuggen geh kommt:

Set foundpos = ActiveSheet.Range("A:E").Find(What:="#End Header#", LookIn:=xlValue, LookAt:=xlWhole, MatchCase:=True)

diese zeile.

ich kenn mich leider mit VB fast gar nicht aus :-(.

kann mir jemand helfen?

  

Betrifft: Dazu müsste man den Code und die Mappe kennen von: NoNet
Geschrieben am: 27.11.2009 18:12:20

Hallo Andreas,

eine Fehlermeldung und eine Codezeile sind ja nur "die halbe Wahrheit".
Um den Fehler ausfindig zu machen benötigt man den gesamten Code (zumindest das komplette Makro) und den Aufbau der Mappe und der Tabelle.

Kannst Du nicht die Mappe hier hochladen ?

Gruß, NoNet


  

Betrifft: AW: Dazu müsste man den Code und die Mappe kennen von: Andreas
Geschrieben am: 27.11.2009 18:41:07

hier der gesamte code:

Sub auto_open()
erg = MsgBox("Convert Offline Configuration to MS-Excel ?", vbYesNoCancel, "Convert -  _
Configuration")
If erg = 6 Then process

End Sub
Sub process()
Dim ta(50), tb(50), tc(50), td(50), te(50)
Dim foundpos, kopf

' Verzeichnis wechseln
ChDrive "C"
ChDir "c:\JDapps\Pricebook\Export"

' Öffnen Dialog
configfile = Application.GetOpenFilename(, , "Saved Configuration")
If configfile = False Then Exit Sub
OrgName = ActiveWorkbook.Name
' Öffnen
Workbooks.OpenText Filename:=configfile, Origin _
        :=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, _
        Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
        Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8,  _
1), _
        Array(9, 1))

' Einlesen der Maschinen-Konfigurationen
[a1].Select
n = 0
x = 0
While ActiveCell.Value <> ""
    n = n + 1
    If ActiveCell.Value = "CMNT" Then CMNT = n
    If ActiveCell.Value = "TRADE" Then Trade = n
    If ActiveCell.Value = "VAT" Then VAT = n
    If ActiveCell.Value = "PERS" Then PERS = ActiveCell.Offset(0, 5).Value
    If ActiveCell.Value = "TITLE" Then titel = ActiveCell.Offset(0, 5).Value
    If ActiveCell.Value = "OPTION" Then
       x = x + 1
       ta(x) = ActiveCell.Offset(0, 3).Value
       tb(x) = ActiveCell.Offset(0, 4).Value
       tc(x) = ActiveCell.Offset(0, 5).Value
       td(x) = ActiveCell.Offset(0, 7).Value
       te(x) = ActiveCell.Offset(0, 8).Value
    End If
    ActiveCell.Offset(1, 0).Select
Wend
ActiveWorkbook.Close

Workbooks.Open Filename:="C:\JDApps\Pricebook\Export\Template.xls"

'Festlegen welcher Bereich als Seitenüberschrift genommen werden soll
kopf = ""
Set foundpos = ActiveSheet.Range("A:E").Find(What:="#End Header#", LookIn:=xlValue, LookAt:= _
xlWhole, MatchCase:=True)
If Not foundpos Is Nothing Then
   kopf = Range(Cells(1, 1), foundpos.Offset(-1, 4)).Address
   foundpos.Activate
   ActiveCell.EntireRow.Delete
End If

'Eintragen Konfiguration
[a1].Select
Set foundpos = ActiveSheet.Range("A:E").Find(What:="#Start Konfig#", LookIn:=xlValue, LookAt:= _
xlWhole, MatchCase:=True)
If Not foundpos Is Nothing Then
   If kopf = "" Then
' hier wird festgelegt was alles Überschrift sein soll -
' Vorgabe ist alles bis zur ersten Konfigurationszeile
      kopf = Range(Cells(1, 1), foundpos.Offset(0, 4)).Address
   End If
   foundpos.Activate
   StartKonfigRow = ActiveCell.Row
   For i = 1 To x
      ActiveCell.EntireRow.Insert
      ActiveCell.Value = ta(i)
       Selection.Font.FontStyle = "Bold"
       'Selection.Font.FontStyle = "Fett"
       ActiveCell.Offset(1, 0).EntireRow.Insert
       ActiveCell.Offset(1, 0).Value = tb(i)
       ActiveCell.Offset(1, 1).Value = tc(i)
       If td(i) > 0 Then
           ActiveCell.Offset(1, 2).Value = te(i)
           ActiveCell.Offset(1, 3).Value = td(i)
           ActiveCell.Offset(1, 3).NumberFormat = "#,##0.00"
       End If
    
       ActiveCell.Offset(2, 0).EntireRow.Insert
       ActiveCell.Offset(3, 0).Select
   Next i
End If

Set foundpos = ActiveSheet.Range("A:E").Find(What:="#End Konfig#", LookIn:=xlValue, LookAt:= _
xlWhole, MatchCase:=True)
If Not foundpos Is Nothing Then
   While ActiveCell.Row() < foundpos.Row()
       Selection.EntireRow.Delete
   Wend
End If
Selection.EntireRow.Delete

'******TOTAL1********
Set foundpos = ActiveSheet.Range("A:E").Find(What:="#TOTAL1#", LookIn:=xlValue, LookAt:=xlWhole, _
 MatchCase:=True)
If Not foundpos Is Nothing Then
   foundpos.Activate
   Selection.EntireRow.Delete
   ActiveCell.Offset(0, 2).Value = te(1)
   ActiveCell.Offset(0, 3).Formula = "=sum(R" + LTrim(Str(StartKonfigRow)) + "C4:R" + LTrim(Str( _
ActiveCell.Row - 1)) + "C4)"
   ActiveCell.Offset(0, 3).NumberFormat = "#,##0.00"
End If

'******TRADE********
Set foundpos = ActiveSheet.Range("A:E").Find(What:="#TRADE#", LookIn:=xlValue, LookAt:=xlWhole,  _
MatchCase:=True)
If Not foundpos Is Nothing Then
   foundpos.Activate
   Selection.EntireRow.Delete
   ActiveSheet.HPageBreaks.Add Before:=ActiveCell 'Manueller Seitenwechsel
   ActiveCell.Offset(1, 0).Value = tc(Trade)
   ActiveCell.Offset(1, 2).Value = te(Trade)
   ActiveCell.Offset(1, 3).Value = td(Trade)
   ActiveCell.Offset(1, 3).NumberFormat = "#,##0.00"
End If

'******COMMENT******
Set foundpos = ActiveSheet.Range("A:E").Find(What:="#CMNT#", LookIn:=xlValue, LookAt:=xlWhole,  _
MatchCase:=True)
If Not foundpos Is Nothing Then
   foundpos.Activate
   Selection.EntireRow.Delete
   ActiveCell.Offset(1, 0).Value = tc(CMNT)
   ActiveCell.Offset(1, 2).Value = te(CMNT)
   ActiveCell.Offset(1, 3).Value = td(CMNT)
   ActiveCell.Offset(1, 3).NumberFormat = "#,##0.00"
End If

'******VAT**********
Set foundpos = ActiveSheet.Range("A:E").Find(What:="#VAT#", LookIn:=xlValue, LookAt:=xlWhole,  _
MatchCase:=True)
If Not foundpos Is Nothing Then
   foundpos.Activate
   Selection.EntireRow.Delete
   ActiveCell.Offset(0, 0).Value = tc(VAT)
   ActiveCell.Offset(0, 2).Value = te(VAT)
   ActiveCell.Offset(0, 3).NumberFormat = "#,##0.00"
End If

'******ENDPRINTAREA******
Set foundpos = ActiveSheet.Range("A:E").Find(What:="#ENDPRINTAREA#", LookIn:=xlValue, LookAt:= _
xlWhole, MatchCase:=True)
If Not foundpos Is Nothing Then
   foundpos.Activate
   Range(ActiveCell, ActiveCell.Offset(1000, 5)).Clear
End If

ActiveSheet.PageSetup.PrintArea = Range(ActiveCell.Offset(0, 4), [a1]).Address
ActiveWindow.Zoom = 60
ActiveWindow.View = xlPageBreakPreview


'****** Seite einrichten
' Anmerkung: Alle Eigenschaften werden in Template File eingestellt
With ActiveSheet.PageSetup
        .PrintTitleRows = kopf
End With
[a1].Select
ActiveWorkbook.SaveAs Filename:="LastConfig.xls", _
        FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
Workbooks(OrgName).Close
End Sub



  

Betrifft: und die Mappe!!!!!!!!!!!!!!!!!!!! owT von: Rudi Maintaire
Geschrieben am: 27.11.2009 23:55:04




  

Betrifft: AW: laufzeitfehler 9: plötzlich gehts nicht mehr von: fcs
Geschrieben am: 28.11.2009 07:29:20

Hallo Andreas,

scheinbar nimmt der VBA-Compiler nach der Neueinstallation die Werte der VBA-xlVariablen etwas genauer oder aber die Variable xlValue mit Wert=2 wurde neu eingeführt. Wert 2 für LookIn führt zu dem Fehler.

Ersetze in deinen Prozeduren xlValue durch xlValues oder -4163

Set foundpos = ActiveSheet.Range("A:E").Find(What:="#End Konfig#", LookIn:=xlValues,  _
LookAt:= _
  xlWhole, MatchCase:=True)

Gruß
Franz


  

Betrifft: AW: laufzeitfehler 9: plötzlich gehts nicht mehr von: Andreas
Geschrieben am: 28.11.2009 09:33:39

guten morgen franz und allerbesten dank dafür - genau das war es - du kennst dich ja perfekt aus .. da hätte ich bis zum frühjahr danach gesucht :-) - nochmals vielen vielen dank


Beiträge aus den Excel-Beispielen zum Thema "laufzeitfehler 9: plötzlich gehts nicht mehr"