Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
836to840
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
836to840
836to840
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Range mit Zahlenreihen füllen

Range mit Zahlenreihen füllen
12.01.2007 22:39:34
Peter
Guten Abend
Ich möchte den Range "rngziel2" (es handelt sich immer um eine Anzahl Zellen, die ein Vielfaches von 150 sind) mit den Zahlen 2, 3, 4, ... 152 und dann wieder 2, 3, 4 ... 152 auffüllen.
Kann mir jemand einen Hinweis geben, wie man das anstellt?
Danke, Peter
Set rngziel2 = .Range(.Cells(4, 2), .Cells(.Range("letzte_Zeile").Value, 2))
rngziel2 = ?
End With

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range mit Zahlenreihen füllen
12.01.2007 22:49:57
EtoPHG
Hallo Peter,

Sub versiv()
Dim rCell As Range
Dim iCnt As Integer
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each rCell In ActiveSheet.Range("mgziel2")
If iCnt = 0 Or iCnt = 152 Then iCnt = 1
iCnt = iCnt + 1
rCell.Value = iCnt
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Gruss Hansueli
AW: Range mit Zahlenreihen füllen
12.01.2007 23:11:18
Peter
Hallo Hansueli
Vielen Dank für den Code.
Da dieser auch laufen soll, wenn das entsprechende Worksheet nicht aktiv ist, habe ich leicht umgestellt, allerdings habe ich bei nachfolgender Zeile ein Problem (mit oder ohne " ")
funktioniert nicht: For Each rCell In wksZiel.Range(rngziel2) oder
funktioniert nicht: For Each rCell in wksZiel.Range("rngziel2")
Fehlermeldung: Die Methode 'Range' für das Objekt '_Worksheet' ist fehlgeschlagen
Wahrscheinlich bin ich nicht so weit vom Ziel weg. Wie muss ich den Code ändern, damit es funktioniert?
Danke für ein Feedback.
Peter
With wksZiel
Set rngziel2 = .Range(.Cells(4, 3), .Cells(.Range("letzte_Zeile").Value, 3))
For Each rCell In wksZiel.Range(rngziel2)
If iCnt = 0 Or iCnt = 152 Then iCnt = 1
iCnt = iCnt + 1
rCell.Value = iCnt
Next
End With
Anzeige
AW: Range mit Zahlenreihen füllen
13.01.2007 10:08:18
EtoPHG
Hallo Peter,
z.B. so, wenn in Tabelle4

Sub versiv()
Dim rCell As Range
Dim iCnt As Integer
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each rCell In ActiveWorkbook.Sheets("Tabelle4").Range("mgziel2")
If iCnt = 0 Or iCnt = 152 Then iCnt = 1
iCnt = iCnt + 1
rCell.Value = iCnt
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Gruss Hansueli
AW: Range mit Zahlenreihen füllen
13.01.2007 21:57:50
Peter
Hallo Hansueli und Forum
Ich habe Code versucht, den Code in meinem Projekt umzusetzen. Leider erhalte ich immer noch eine Fehlermeldung.
Letzte_Zeile.Value ergibt 6603
demnach müsste der Eintrag in der Tabelle im Bereich C4:c6603 erfolgen (44 x die Zahlen 4-153)
Woran könnte dies liegen?
Gruss, Peter
FEHLERMELDUNG: Laufzeitfehler '9': Index ausserhalb des gültigen Bereichs
bei Zeile: For Each rCell In Workbooks("abook").Worksheets("wksziel").Range("rngziel2")

Sub aktualisiere_Importcodes()
Dim aBook As Workbook
Dim wksZiel As Worksheet
Dim rngziel2 As Range
Dim rCell As Range
Dim iCnt As Integer
Dim letzteZeile As Long
Set aBook = ThisWorkbook
Set wksZiel = Sheets("Import")
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
letzteZeile = Range("letzte_Zeile").Value
With wksZiel
Set rngziel2 = .Range(.Cells(4, 3), .Cells(.Range("letzte_Zeile").Value, 3))
Debug.Print rngziel2.Address
For Each rCell In Workbooks("abook").Worksheets("wksziel").Range("rngziel2")
If iCnt = 0 Or iCnt = 153 Then iCnt = 1
iCnt = iCnt + 1
rCell.Value = iCnt
Next
End With
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Anzeige
Range welche, wo und wie ?
13.01.2007 23:16:19
EtoPHG
Hallo Peter,
Ich begreife nicht ganz, wieso Du den Code immer wieder änderst.
Vergiss bitte mal Deine Set und With Anweisungen, die ergeben einen Riesendurcheinander.
Es kann keine Workbook("abook") geben. Wenn schon müsste es "abook.xls" heissen.
Aber der Code wird eh nicht funktionieren, wenn er für eine andere Arbeitsmappe gedacht ist, als für die in der er abläuft. Also...
Bitte erklär mal im Detail, was Du überhaupt willst.
Gruss Hansueli
AW: Range welche, wo und wie ?
14.01.2007 18:03:43
Peter
Hallo Hansueli
Vielen Dank für deine Rückmeldung. Ich habe den Code abgeändert, weil es sich hier nur um einen Teil eines Gesamtcodes handelt, der ins "Gesamtkonzept" hineinpassen muss.
Betreffend Workbook("aBbook") ist mein Verständnis folgendes:
- am Beginn des Codes steht: Dim aBook As Workbook
- etwas weiter unten steht: set aBook = This Workbook
- im Ergebnis erhalte ich mit debug.print aBook.name die Filebezeichnung mit der Extension xls
"Der Code wird nicht funktionieren, wenn er für eine andere Arbeitsmappe gedacht ist ..."
- Das ist nicht der Fall
- ich weiss einfach nicht, welches Worksheet gerade aktiv ist doch die Arbeitsmappe ist immer aktiv, wenn ich den Makro aufrufe.
Ins Worksheet Import will ich aus anderen Excel-Dateien (die geschlossen bleiben) Daten importieren, und zwar aus jeder Datei verschiedene Werte aus einigen Spalten der Zeilen 3 - 152.
Die Anzahl Dateien, aus denen Daten importiert werden ist variabel und die entsprechenden Dateinamen werden in einem anderen Worksheet des Files erfasst.
Das Worksheet "Import" wird für den Import wie folgt vorbereitet. Angenommen, es seien 10 Files zu importieren. Der Name der ersten Datei wird ab Zelle B3 150 x eingetragen (von B3 bis B152). Dann der der zweite Name ab B153 bis B302, usw. Der 150. Eintrag des Dateinamens der 10. Datei steht dann in B1502.
Anschliessend wird in der Spalte A von A3 bis A1502 der Pfad der Dateien eingetragen (ist immer der gleiche).
Nun brauche ich noch in Spalte C von C3 bis C1502 10 mal die Zahlen 3 bis 152.
In der Zeile 2 des Worksheets "Import" steht dann in den Spalten D bis O (nämlich A,B,C,D,E,F,G,H,I,J,K,L) eine Spaltenreferenz.
Nun sind die Informationen vollständig, damit ich die Daten importieren kann. Der erste Eintrag erfolgt in Zelle D4, der letzte in Zelle O1503.
Für jedes zu importierende Feld habe ich nun im Worksheet "Import" die benötigte Information, nämlich in Spalte A den Pfad, in Spalte B den Dateinamen, in den Spaltenkopfen D - O die Spaltenreferenz und in Spalte C die Zeilenreferenz.
Der Code, den ich nun noch vervollständigen will, soll mir die Zeilenreferenz in Spalte C reinschreiben, ab Zeile 4 bis 1503 (falls Daten aus 10 Dateien zu importieren sind). Da die Anzahl der zu importierenden Files immer ändert, ist auch der zu füllende Range in Spalte C variabel.
Ich hoffe, dass ich mich einigermassen verständlich ausdrücken konnte.
Freundlicher Gruss
Peter
Anzeige
AW: Range welche, wo und wie ?
15.01.2007 09:07:23
EtoPHG
Hallo Peter,
NB: hab mich noch nicht ganz durch dein Mail gewühlt. Das ist nur mal zur Referenzierung.
Vergiss einfach diesen Teil mit:
- am Beginn des Codes steht: Dim aBook As Workbook
- etwas weiter unten steht: set aBook = This Workbook
- im Ergebnis erhalte ich mit debug.print aBook.name die Filebezeichnung mit der Extension xls

und referenzier anstelle von diesem überall mit ThisWorkbook.
Gruss Hansueli
AW: Range mit Zahlenreihen füllen
12.01.2007 23:16:39
Daniel
Hallo
grundsätzlich mal, wenn du deine Zellen mit Werten von 2 bis 152 füllen möchtest, dann sollte die Anzahl der Zellen ein Vielfaches von 151 sein und nicht von 150, sonst werden die letzten Zellen nicht vollständig bis 152 gefüllt (2 bis 152 sind nun mal 151 Zahlen).
der Code dazu wäre:

rngziel2.formular1c1 ="= IF(OR(R[-1]C=152,NOT(ISNUMBER(R[-1]C))),2,R[-1]C+1)"
rngziel2.formula = rngziel.value

einzige Vorraussetzung: die erste Zelle von rngZiel darf nicht in Zeile 1 liegen sondern mindestens in Zeile 2 und die Zelle davor darf keine Zahl enthalten (leer oder Text ist ok.)
Gruß, Daniel
Anzeige
AW: Range mit Zahlenreihen füllen
12.01.2007 23:24:48
Peter
Hallo Daniel
Vielen Dank für die Rückmeldung.
Da der Code auch laufen muss, wenn das betreffende Worksheet nicht aktiv ist, möchte ich den Lösungsansatz von Hansueli weiterverfolgen.
Bei der grundsätzlichen Bemerkung hast du natürlich recht. Ich habe mich verschrieben, denn die Zahlenreihe fängt bei mir mit 3 und nicht mit 2 an.
Freundlicher Gruss
Peter
AW: Range mit Zahlenreihen füllen
12.01.2007 23:34:23
Daniel
hallo
wenn deine Variable rngziel2 sauber definiert ist, dh. mindestens mit
set rngziel2 = sheets(xxx).range(yyy)
dann funktioniert der Code auch, wenn sheet(xxx) nicht aktiv ist.
Da KEINE Schleifen verwendet werden, ist mein Code idR auch wesentlich schneller.
Gruß, Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige