Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
692to696
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
692to696
692to696
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Range verschieben
09.11.2005 10:50:34
Peter
Guten Tag
Ich habe der Variablen p den Wert Range("B6").Value ( p = Range("B6").Value )
zugewiesen. Wie kann ich in einer Schleife diesen Wert auf "C6" (also Spalte + 1) ändern? Ähnlich wird es wohl mit der Änderung von "B6" auf "B7" gehen?
Danke für Feedback.
Peter

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range verschieben
09.11.2005 11:00:01
MSchilcher
Hi Peter,
ActiveCell.offset(0,1)
Gruß,
Martin
AW: Range verschieben
09.11.2005 11:31:28
Peter
Hallo Martin
Danke für das rasche Feedback.
Mein Problem ist, dass B6 nicht die aktive Zelle ist. Gibt es trotzdem eine Lösung?
Gruss, Peter
AW: Range verschieben
09.11.2005 11:46:19
MartinS
Hi Peter,
wenn ich dich richtig verstanden habe, ist "B6" in einer Variablen "p", also kannst du auch schreiben "p.offset(0,1)".
"p.value" ist nun die Zelle "C6"
Wenn du "B7" willst, dann schreib "p.offset(1,0)".
Gruß,
Martin
AW: Range verschieben
09.11.2005 11:54:21
Peter
Hallo
Es ist tatsächlich so, dass "B6" in der Variablen "p" steckt.
Wenn ich allerdings
p.offset(0, 1) schreibe kommt folgende Meldung:
Fehler beim Kompilieren: Erwartet =
Was muss ich noch ändern?
Gruss, Peter
Anzeige
AW: Range verschieben
09.11.2005 11:56:18
MartinS
Hi Peter,
zeig mir doch mal deinen Code und was du damit machen willst, damit ich dir richtig helfen kann.
Gruß,
Martin
AW: Range verschieben
09.11.2005 12:07:21
Peter
Ich habe den heutigen unbeantworteten Eintrag "zerstückelt". Vgl. Ende des Subs (vor der private function) - ich will die Variable "r", die den Wert "E4" hat auf "E5" ändern. Irgend einmal muss noch eine Schleife entstehen, damit ich die ganzen Daten abarbeiten kann.
Gruss, Peter
Sub DatenEintragen()
Dim p as String 'Pfad
Dim f as string 'File
Dim s as string 'Sheet
Dim r as string 'zelle
ThisWorkbook.Activate
Range("E6").Select 'E6 ist immer Startposition der Einträge
p = Range ("B6").Value 'Pfad im aktiven Sheet in Spalte B, ab Zeile 6
f = Range ("C6").Value 'Dateiname im aktiven Sheet in Sp C, ab Zeile 6
s = Range = "Tabelle1" 'Sheet in Quelldateien heisst immer "Tabelle1"
r = Range ("E4").Value 'Zelle im aktiven Sheet in Zeile 4, ab Spalte E
ActiveCell.Value = getvalue(p, f, s, r)
ActiveCell.Offset(0,1).Select 'Feld für nächsten Eintrag wird ausgewählt
r.Offset(0,1) -- FEHLERMELDUNG
End Sub

Private Function getvalue(path, file, sheet, ref)
'holt einen Wert aus geschlossener Datei
Dim arg as String
'sicherstellen, dass das File existiert
If Right(path, 1) <> "\" then path = path & "\"
If Dir(path & file) = "" Then
getvalue = "File not found"
Exit Function
End if
'Wert holen und arg zuweisen
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Range("A1").Address(, , xlR1C1)
getvalue = ExecuteExcel4Macro(arg)
End Function

Anzeige
AW: Range verschieben
09.11.2005 13:43:32
MartinS
Hallo Peter,

Sub Test()
Dim r As Variant
Set r = Range("E4")
r.Offset(1, 0).Select
Set r = ActiveCell
'r.value ist nun der Inhalt aus E5
End Sub

Gruß,
Martin
AW: Range verschieben
09.11.2005 14:09:49
Peter
Hallo Martin
Ich bin noch nicht ganz glücklich mit der Lösung. Eigentlich möchte ich die ActivCell nicht verändern, da bei der aktuellen Zelle der nächste Eintrag erfolgen soll. Sonst müsste ich vor dem "Wegspringen" die aktuelle Adresse der aktiven Zelle speichern und diese dann wieder anspringen - weiss nicht, ob das nichtzu kompliziert ist.
Ich muss nur die Variable R von "E4" zu "E5" machen, damit das Makro dann den richtigen Wert aus der geschlossenen Datei abholt und in der aktiven Zelle einträgt. Wenn die Variable nur eine Zahl wäre, könnte ich ja jeweils um 1 erhöhen (r = r + 1), das geht natürlich bei Zellreferenzen nicht. Aber vielleicht gibt es eine andere elegante Lösung, damit ich letztlich den ganzen Pfad der gesuchten Datei zusammensetzen kann (Pfad, Dateiname, Sheet müssen jeweils zusammengesetzt werden), woraus ich letztlich einen bestimmten Zellwert hole.
Gruss, Peter
Anzeige
AW: Range verschieben
09.11.2005 14:31:53
MartinS
Hi Peter,
selbstverständlich kannst du die Zellrefernz hochzählen, indem du z.b. sagst:

Sub Test()
Dim row As Integer
For row = 1 To 10
Cells(row, 1).Select
Next
End Sub

Hier werden die Zellen a1 bis a10 einzeln durchgegangen!
Für e würde es in diesem Beispiel "Cells(row,5).select"
Leider ist mir der gesamtzusammenhang bei deinem Problem nicht klar, deswegen erfolgt meine antwort nur als hilfestellung! Richtig einbauen musst du es leider selber.
MfG
Martin
AW: Range verschieben
09.11.2005 14:47:54
Peter
Hallo Martin
Das hilft mir durchausweiter. Wie muss ich nachfolgende Zeile umschreiben, wenn ich nicht will, dass diese Zelle angewählt wird, sondern in die Variable r geschrieben wird?
Gruss, Peter
Cells(row, 1).Select
Anzeige
AW: Range verschieben
09.11.2005 15:14:04
MartinS
Hi,
ein kleines beispiel:

Sub test()
Dim row As Integer
Dim r As String
For row = 1 To 10
Cells(row, 1).Select
r = ActiveCell.Value 'Übergabe an r
Cells(row, 2).Value = r 'Wert in r wird ausgegeben
Next
End Sub

Gruß,
Martin
AW: Range verschieben
10.11.2005 14:19:27
Peter
Hallo Martin
Ich habe wieder etwas Hilfreiches gelernt.
Vielen Dank.
Peter
AW: Range verschieben
09.11.2005 11:48:06
atikar
Hallo Peter,
ich kenne mich leider nicht super mit makros aus, aber ich sehe 2 lösungsansätze.
1. statt range den befehl cells(reihe,spalte)
( hier kannst du dann die variablen reihe oder spalte verändern)
2. du wandelst deine spaltennummer in einen buchstaben um (a = 1, b = 2 usw.)
mit z.b.
for x = 1 to 10
spalte = Application.Substitute(Cells(x, 1).Address(0, 0), 1, "")
range(spalte & "1").value
next x
Anzeige
AW: Range verschieben
09.11.2005 11:48:24
atikar
Hallo Peter,
ich kenne mich leider nicht super mit makros aus, aber ich sehe 2 lösungsansätze.
1. statt range den befehl cells(reihe,spalte)
( hier kannst du dann die variablen reihe oder spalte verändern)
2. du wandelst deine spaltennummer in einen buchstaben um (a = 1, b = 2 usw.)
mit z.b.
for x = 1 to 10
spalte = Application.Substitute(Cells(x, 1).Address(0, 0), 1, "")
range(spalte & "1").value
next x

28 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige