Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1580to1584
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
Inhaltsverzeichnis

Zellen Position einer Variable zuweisen

Zellen Position einer Variable zuweisen
18.09.2017 12:23:14
Simo7
Hallo Excel-Tüftler,
ich habe eine wahrscheinlich recht simple Frage, welche schon wieder so simpel ist, dass ich über Google keine Antwort auf meine Frage finde und leider hängt mein
Konstrukt in VBA davon ab.
Ich habe ein Workbook in welchem ich von F292 bis Q292 überprüfen möchte, ob die jeweilige rechte Zelle der linken entspricht, wenn nicht,
soll der Wert aus der jeweiligen linken Zelle in die rechte übertragen werden.
Problem: Ich kann nicht die Position, also beispielsweise "G292" als Variable definieren, sondern es wird immer der Wert in dieser Zelle
übernommen (Value) zum Beipsiel der Wert "13". Das ist für meine Schleife jedoch nicht geeignet, da der VBA Code ja automatisch immer einen nach rechts rücken soll,
um zu überprüfen, ob der Wert mit dem aus der vorherhigen Zelle übereinstimmt.
Mein Code bis jetzt:
Sub Check()
Worksheets("Uebersicht").Activate
Start = Range("F292")
Ende = Range("P292")
Dim Cache As Integer
For i = Start To Ende
If i + 1  i Then   ' Hier nimmt er leider nicht die Zellenposition, sondern den Wert in der  _
Zelle
Position = i + 1
Cache = i
Position = Cache
End If
Next
End Sub

Wie programmiere ich ein, dass Excel die Zellenposition zu der Variable zuweist und nicht den Wert?
Wie kann ich mien bisheriges Konstrukt umstellen, damit es tut was ich will?
Beispiel:
Zelle F292 hat den Wert 13
Zelle G292 hat den Wert 14
Wenn F292 G292 dann
G292 = F292
Und dann zur nächsten einen weiter:
Wenn G292 H292 dann
H292 = G292
usw.
Ich hoffe, jemand weiß Rat.
Grüße,
Simo7

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen Position einer Variable zuweisen
18.09.2017 12:27:59
UweD
Hallo
Meinst du das?
Start = Range("F292").Address(0, 0)
LG UweD
AW: Zellen Position einer Variable zuweisen
18.09.2017 12:46:55
Werner
Hallo Simo,
also ehrlich gesagt ist mir nicht so ganz klar, was du damit eigentlich erreichen willst. Am Ende hast du im Bereich G292 bis Q292 den gleichen Wert stehen, nämlich den aus G292.
Da kannst du dann ja auch gleich den Wert aus G292 in den kompletten Bereich von G292 bis Q292 schreiben.
Vielleicht beschreibst du mal genau dein Vorhaben.
Gruß Werner
AW: Zellen Position einer Variable zuweisen
18.09.2017 12:57:51
Simo7
Hallo,
@ UweD: ich werde es mal testen!
@ Werner: Genau das ist das Ziel =) In der ersten zu betrachtenden Zelle wird nämlich ein Wert per SVERWEIS eingefügt, dieser soll dann entsprechend nachrückend übernommen werden. Ist jetzt auf den ersten Blick sicherlich nicht ganz nachvollziehar, aber da es wirklich nur darum geht, die Werte aus der jeweiligen linken Zelle in die rechte zu übernehmen und das wohl nur eine "Standartschleife" ist, habe ich davon abgesehen das Workbook hochzuladen. Vorstellen kann man es sich wie folgt:
F292 beinhaltet einen SVERWEIS, dieser schreibt den Wert 13 in diese Zelle.
G292 hat hingegen den Wert 14 und deshalb soll er mit 13 überschrieben werden.
.. und so wird die 13 immer weiter übertragen.
Grüße,
Simo7
Anzeige
AW: Zellen Position einer Variable zuweisen
18.09.2017 13:10:24
Werner
Hallo Simo,
wozu den bitte eine Schleife? Du übernimmst den Wert aus F292 in sämtliche Zellen bis Q292
Range("G292").Resize(, 11).Value = Range("F292").Value
Gruß Werner
AW: Zellen Position einer Variable zuweisen
18.09.2017 17:19:13
Simo7
Hallo Werner,
dies findet nicht nur in der Zeile 292, sondern noch öfters verteilt (über 100 mal) im gesamtes Workbook statt. Damit ich nicht händisch jedes mal die Zellen zuweisen muss (was ja auch wahnsinnig lange dauern würde und fehleranfällig ist) möchte ich das mit einer Schleife lösen. Wenn ich eine funktionierende für die Zeile 292 hätte, könnte ich sie dann entsprechend weiter kopieren und anpassen. =)
Grüße,
Simo7
Anzeige
AW: Zellen Position einer Variable zuweisen
18.09.2017 17:47:55
Werner
Hallo,
mit den Angaben wird dir keiner weiterhelfen können.
dies findet nicht nur in der Zeile 292, sondern noch öfters verteilt (über 100 mal) im gesamtes Workbook statt
Mit den Angaben wird dir niemand auch nur ansatzweise einen Vorschlag für eine Schleife machen können.
Soll eine Schleife über einen bestimmten Zeilenbereich laufen, wenn ja über welchen?
Für das Abprüfen der Zahl in den einzelnen Spalten in der entsprechenden Zeile braucht es auf jeden Fall keine Schleife.
Gruß Werner
AW: Zellen Position einer Variable zuweisen
19.09.2017 09:52:49
Simo7
Hallo Werner,
ich versuche es nochmal etwas genauer zu erläutern.
Wie gesagt, soll die Schleife über den Zellbereich F292 bis Q292 laufen. Dieser Zellenbreich verändert sich nicht.
Ich werde die Schleife in verschiedenen Zeilen im Workbook einsetzen, dies ist jedoch nicht relevant, da immer der Zellenbereich F292 bis Q292 betroffen ist. Nur eben in anderen Zeilen.
Deshalb habe ich nach Hilfe bei einer Schleife von F292 bis Q292 in der Zeile 292 gefragt, ich kann sie dann ja dann an die entsprechenden Zeilen anpassen, was ich benötge ist das Schleifenkonstrukt.
Grüße,
Simo7
Anzeige
AW: Zellen Position einer Variable zuweisen
19.09.2017 10:11:08
Simo7
Zur Veranschaulichung lade ich noch ein Beispielworkbook hoch. In der rot markierten Zeile soll demnach der Wert 55 aus F292 bis nach P292 übertragen werden.
Ich habe noch einmal eine Schleife versucht zu konstruieren, welche überprüft, ob G292 der F292 entspricht, wenn nicht, dann soll der Wert kopiert werden. Dann das selbe Spiel mit H292 vergleich ob Wert identisch zu G292, wenn nicht, dann kopieren, usw.
Leider funktioniert meine Schleife nicht, hoffe jemand weiß Rat.
https://www.herber.de/bbs/user/116351.xlsx
Sub Ueberpruefung()
Dim i As Variant
Worksheets("Tabelle1").Activate
Set Bereich = Range("F292:P292")
For Each cell In Bereich
If i + 1 i Then
i = i + 1
End If
Next
Grüße,
Simo7
Anzeige
AW: Zellen Position einer Variable zuweisen
19.09.2017 11:56:32
Werner
Hallo Simo,
Erst war es der Bereich von Spalte F bis Spalte Q, im Beispiel ist es dann der Bereich von Spalte E bis P.
Und jetzt nochmals!!!
Du brauchst keine Schleife über die einzelnen Spalten, da du ganz einfach den Wert aus der Spalte E in die restlichen Spalten überträgst und dazu ist keine Schleife notwendig.
Hier jetzt mal ein Makro, das über alle Zeilen deiner Beispieldatei läuft und jeweils die Werte aus E in die Spalten bis P übernimmt. Weil du ja unbedingt eine Schleife haben wolltest.
Public Sub Wert_übertragen()
Dim loLetzte As Long
Dim raBereich As Range
Dim raZelle As Range
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
Set raBereich = .Range(.Cells(1, 5), .Cells(loLetzte, 5))
For Each raZelle In raBereich
raZelle.Resize(, 11).Value = raZelle.Value
Next raZelle
End With
Set raBereich = Nothing
End Sub
Keine Ahnung, weshalb du die ganze Zeit mit deiner Schleife herum machst.
Ich bin dann jetzt raus, weil probiert hast du meine seitherigen Vorschläge wohl nicht.
Gruß Werner
Anzeige
AW: Zellen Position einer Variable zuweisen
19.09.2017 12:24:36
Simo7
Hallo Werner,
super vielen Dank, genau das ist es!! =) Jetzt läuft alles, tausend Dank!! Du hast mein Workbook gerettet.
Grüße,
Simo7
Gerne u. Danke für die Rückmeldung.
19.09.2017 20:04:03
Werner
Hallo Simo,
na dann ist ja alles gut.
Das war aber eine schwere Geburt.
Gruß Werner
Korrektur
19.09.2017 12:07:36
Werner
Hallo Simo,
da ist mir noch ein kleiner Fehler reingerutscht.
Hier muss der Resize mit 12 und nicht mit 11 angegeben werden.
For Each raZelle In raBereich
raZelle.Resize(, 12).Value = raZelle.Value
Next raZelle
Gruß Werner
AW: Übung -Schleifen über Zellen
18.09.2017 12:55:37
Gerd
Hallo Simo,
ein paar Beispiele. Deine Beschreibung klingt allerdings so wie Werner vermutet.

Sub test_2()
Dim Spalte As Long
For Spalte = 6 To 15
MsgBox Cells(292, Spalte).Address
MsgBox Cells(292, Spalte).Value
MsgBox Cells(292, Spalte + 1).Address
MsgBox Cells(292, Spalte + 1).Value
Next
End Sub
Sub test_3()
Dim Startzelle As Range, C As Long
Set Startzelle = Range("F292")
For C = 0 To 7
MsgBox Startzelle.Offset(0, C).Address
MsgBox Startzelle.Offset(0, C).Value
MsgBox Startzelle.Offset(0, C + 1).Address
MsgBox Startzelle.Offset(0, C + 1).Value
Next
Set Startzelle = Nothing
End Sub
Sub Test_4()
Dim Zelle As Range
For Each Zelle In Range("G292:P292")
MsgBox Zelle.adress
MsgBox Zelle.Value
MsgBox Zelle.Offset(, -1).Address
MsgBox Zelle.Offset(, -1).Value
Next
End Sub
Gruß Gerd
Anzeige

140 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige