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

Index außerhalb

Index außerhalb
01.06.2007 17:17:00
Chaos
Servus zusammen,
hoffe ihr könnt mir helfen. Folgender Code bringt mir Index außerhalb des gültigen Bereichs und ich finde den Fehler nicht:

Sub ersatz()
Dim ersatz As String, pfad As String, pfad1 As String
nochmal:
ersatz = InputBox("Zahl")
If IsNumeric(ersatz) And ersatz > 0 And ersatz 


Vielleicht bin ich ja blind, aber ich kann ums Verrecken keinen Fehler finden.
Besten Dank für eure Hilfe.
Gruß
Chaos

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Index außerhalb
01.06.2007 17:27:00
Dan
Hi, und wo genau passiert der Fehler? Gruss Dan, cz

AW: Index außerhalb
01.06.2007 17:28:00
Andi
Hi,
hilfreich wäre es noch gewesen, wenn Du uns mitgeteilt hättest, welche Zeile im debug-Modus markiert wird. Ich vermute aber mal, dass diese hier ist:
pfad1 = Left(Workbooks(pfad).Path, InStrRev(Workbooks(pfad).Path, "\"))
In der Variable pfad steht ja der Pfad der aktiven Mappe. Der fett geschriebene Teil benötigt aber den Namen einer Mappe. zB ActiveWorkbook.Name, wenn's die aktive Mappe sein soll.
Schönen Gruß,
Andi

AW: Index außerhalb
01.06.2007 17:34:06
Andi
Im 2. Teil natürlich auch:
pfad1 = Left(Workbooks(pfad).Path, InStrRev(Workbooks(pfad).Path, "\"))

Anzeige
AW: Index außerhalb
01.06.2007 18:56:00
Chaos
Servus,
so ganz hab ich' s nicht verstanden.
Ist natürlich der Fehler, den du genannt hast.
Der Code funktioniert z.B.:

Sub Chris()
Dim StPfad As String, pfad As String
StPfad = ActiveWorkbook.Path
pfad = Left(StPfad, InStrRev(StPfad, "\") - 1)
ActiveWorkbook.SaveAs Filename:=pfad & "\" & "test.xls"
End Sub


und ich seh ehrlich gesagt da keinen großen Unterschied! Das funktioniert aber, wenn ich' in den anderen Code einbaue auch nicht.
Vielleicht, kannst du mir mal nen veränderten Code posten, damit ich verstehe, was du meinst.

Anzeige
AW: Index außerhalb
01.06.2007 19:10:00
Andi
Hi,
bin gard aufm Sprung, deshalb nur in aller Schnelle...
Die Korrekt Syntax wäre
Workbooks(Name_der_Mappe)
und nicht
Workbooks(Pfad_der_Mappe)
Schönen Gruß,
Andi

AW: Index außerhalb
01.06.2007 19:30:00
Chaos
Servus Andi,
ich geh mal davon aus du meinst sowas:
pfad = ActiveWorkbook.Name
pfad1 = Left(Workbooks(pfad).Path, InStrRev(Workbooks(pfad).Path, "\")
gut soweit, dann kommt der debug nicht mehr, aber in meinen neuen Pfad speichert er auch nicht.
oder komplett ohne Path?
Gruß
Chaos

AW: Index außerhalb
01.06.2007 18:06:51
nighty
hi all :-)
nur zur info
unter excel2000 geht der befehl nicht,gerade getestet :-)
gruss nighty

Anzeige
AW: Index außerhalb
01.06.2007 18:08:14
nighty
hi all :-)
ups dieser ActiveWorkbook.Path
gruss nighty

AW: Index außerhalb
01.06.2007 18:19:57
Andi
Der Fragesteller hat aber Excel2003, da geht's. Unter 2002 auch...
Schönen Gruß,
Andi

AW: Index außerhalb
01.06.2007 19:03:30
nighty
hallo andi :-)
oh ich ueberseh immer die haelfte,aber das ist genau sein fehler ,bei mir ja reproduzierbar
gruss nighty

AW: Index außerhalb
01.06.2007 19:15:26
Chaos
Servus nighty,
und wie kann ich das lösen, ich verste's nämlich nicht ganz.
hab's jetzt so versucht:
pfad1 = Left(Workbooks("20Master.xls").Path, InstrRev(Workbooks("20Master.xls").Path, "\")
aber das funktioniert auch nicht. Debug ist zwar nicht mehr da, aber er speichert trotzdem nicht in den "evtl. Ordner".
Gruß
Chaos

Anzeige
AW: Index außerhalb
01.06.2007 19:31:20
nighty
hi chaos :-)
ich öffne weitere mappen zum beispiel so und zieh mir daten raus oder beschreibe sie neu,vielleicht ja hilfreich fuer dich,ist ja ein kleines makro was leicht duchschaubar ist
gruss nighty

Sub DateiEins()
Dim Dateien As Integer
Dim DateiName As String
Dim zeile As Long
With Application.FileSearch
.NewSearch
.LookIn = "D:\Temp\"
.SearchSubFolders = False
.Filename = ".xls"
If .Execute() > 0 Then
For Dateien = 1 To .FoundFiles.Count
DateiName = Dir(.FoundFiles(Dateien))
If DateiName  ThisWorkbook.Name Then
Workbooks.Open Filename:=.FoundFiles(Dateien)
zeile = Workbooks(DateiName).Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
ThisWorkbook.Sheets(1).Cells(zeile, 1) = Workbooks(DateiName).Sheets(1).Cells(1, 1)
If DateiName  ThisWorkbook.Name Then Workbooks(DateiName).Close
End If
Next Dateien
End If
End With
End Sub


Anzeige
AW: Index außerhalb
01.06.2007 19:44:52
Chaos
Naja,
erstmal Danke. Ich will eigentlich den aktuellen Pfad auslesen und den Ordner, indem sich die Datei befindet, dann beim Speichern unter neuem Namen weglassen dafür aber in einen Ordner speichern, der neben dem aktuellen liegt.
Wenn ich einen festen Speicherpfad vorgebe, geht das auch, aber die Datei kann auf verschiedenen Rechnern unter verschiedenen Pfaden laufen, und ich will nicht ständig den Pfad manuell ändern.
also meinte ungefähr so:
C:\Hallo\Zwerg\20Master.xls
soll nach Eingabe von ersatz: z.B.: 2010 werden
C:\Hallo\2010\2010.xls
Gruß
Chaos

Anzeige
AW: Index außerhalb
01.06.2007 19:49:00
nighty
hi chaos :-)
eine alternative zu ActiveWorkbook.Path hab ich leider auch nicht,doch denke ich das es vermeidbar ist anhand meines beispieles ist einiges zu bewerkstellige,beachte den joker bei der dateiwahl du kannst auch solche dateien suchen lassen DA*.xls oder eben einen richtigen namen,dann ohne joker
das makro liest jetzt auch unterverzeichnisse mit ein (aber nicht so hohe tiefe angeben)
und eine pfadangabe von der gefundenen datei

Sub DateiEins()
Dim Dateien As Integer
Dim DateiName As String
Dim zeile As Long
With Application.FileSearch
.NewSearch
.LookIn = "D:\Temp\"
.SearchSubFolders = True
.Filename = ".xls"
If .Execute() > 0 Then
For Dateien = 1 To .FoundFiles.Count
DateiName = Dir(.FoundFiles(Dateien))
DateiPfad = .FoundFiles(Dateien)
If DateiName  ThisWorkbook.Name Then
Workbooks.Open Filename:=.FoundFiles(Dateien)
zeile = Workbooks(DateiName).Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
ThisWorkbook.Sheets(1).Cells(zeile, 1) = Workbooks(DateiName).Sheets(1).Cells(1, 1)
If DateiName  ThisWorkbook.Name Then Workbooks(DateiName).Close
End If
Next Dateien
End If
End With
End Sub


Anzeige
AW: Index außerhalb
02.06.2007 11:26:00
Chaos
Servus nighty,
der Code ist wirklich gut. Das kann ich an anderer Stelle sehr gut gebrauchen.
Allerdings das, habe ich nicht so ganz verstanden:
zeile = Workbooks(DateiName).Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
ThisWorkbook.Sheets(1).Cells(zeile, 1) = Workbooks(DateiName).Sheets(1).Cells(1, 1)
Was macht das Makro da genau ?
Gruß
Chaos

AW: Index außerhalb
02.06.2007 12:31:00
nighty
hi chaos :-)
ermittelt die erste freie zeile von Workbooks(DateiName).Sheets(1) spalte a
zeile = Workbooks(DateiName).Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
ThisWorkbook.Sheets(1).Cells(zeile, 1) = Workbooks(DateiName).Sheets(1).Cells(1, 1)
kopiert von Workbooks(DateiName).Sheets(1) zelle A1 nach
ThisWorkbook.Sheets(1) spalte a mit der variablen zeile um die naechste freie zeile zu erreichen
gruss nighty

Anzeige
AW: Index außerhalb
02.06.2007 14:06:00
Chaos
Servus nighty,
dachte mir sowas, aber hatte in den Dateien, die ich geöffnet habe, nichts in A1 stehen und deswegen auch die Funktion nicht ganz erkannt. Also habe ich mal lieber nachgefragt.
Das mit dem Speichern hab ich übrigens ganz anders gelöst. Speichere jetz in einen Unterordner, den ich mir anlegen lasse und ersetzte in der aktuellen Datei den Pfad der Verknüpfungen.
Also ungefähr so:
jahr = InputBox("Jahr")
strPfad = ActiveWorkbook.Path & "\" jahr
If (strPfad,vbDirectory) = "" Then
MkDir strPfad
Else
End if
ActiveWorkbook.SaveAs Filename:= ActiveWorkbook.Path & "\" jahr & "\" & jahr & ".xls"
u.s.w.
Das ist am einfachsten und funktioniert einwandfrei.
Wünsche dir ein schönes Wochenende
Gruß
Chaos

Anzeige
AW: Index außerhalb
02.06.2007 14:11:00
nighty
hi chaos :-)
ich bin auch manchmal chaotisch grrr
war doch glatt die workbooks vertauscht :-)
und eine deklaration hatte noch gefehlt
nun korrigiert
gruss nighty

Sub DateiEins()
Dim Dateien As Integer
Dim DateiName As String
Dim zeile As Long
Dim Dateipfad As String
With Application.FileSearch
.NewSearch
.LookIn = "D:\Temp\"
.SearchSubFolders = True
.Filename = ".xls"
If .Execute() > 0 Then
For Dateien = 1 To .FoundFiles.Count
DateiName = Dir(.FoundFiles(Dateien))
Dateipfad = .FoundFiles(Dateien)
If DateiName  ThisWorkbook.Name Then
Workbooks.Open Filename:=.FoundFiles(Dateien)
zeile = ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
ThisWorkbook.Sheets(1).Cells(zeile, 1) = Workbooks(DateiName).Sheets(1).Cells(1, 1)
If DateiName  ThisWorkbook.Name Then Workbooks(DateiName).Close
End If
Next Dateien
End If
End With
End Sub


Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige