Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1644to1648
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

VBA Zellbezüge automatisieren

VBA Zellbezüge automatisieren
10.09.2018 10:46:34
Om
Guten Morgen,
folgendes Problem habe ich gerade mit VBA und hoffe, dass mir evtl. jemand behilflich sein könnte:
Folgende Formel steht in der Tabelle x

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("F17").Value - Sheets("Tabelle1").Range("G37").Value 

Nun möchte ich, dass wenn man den Wert F17 in der Spalte F runtergeht (F18,F19, etc.), dass sich gleichzeitig der Wert G37 um eine !spalte! ändert (H37,I37, etc.)
Hat jemand eine Idee, wie das möglich ist?
Außerdem stellt sich mir die Frage, ob es möglich ist, dass wenn in der Tabelle x in der Zelle A1=1 steht, die Formel wie sie so ist bestehen bleibt, aber wenn man den Wert auf A1=2 ändert, sich der Zellbezug aus Tabelle 1 (G37) um 20 Spalten verschiebt?
PS: In den Zellen selber darf keine! Formel drinnen stehen, daher muss das Problem ausschließlich über VBA gelöst warden.
vielen Dank im Voraus

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zellbezüge automatisieren
10.09.2018 11:04:07
daniel
HI
so vielleicht:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long
Dim j As Long
j = (Range("A1").Value - 1) * 20
For i = 0 To 10 'anpassen, je nachdem vieviele Zellen betroffen ind
With Range("F7").Offset(i, 0)
If .Value - Sheets("Tabelle1").Range("G37").Offset(0, i + j).Value 

wobei sich die frage stellt, ob man hier nicht besser mit der bedingten Formatierung arbeiten sollte.
Gruß Daniel
AW: VBA Zellbezüge automatisieren
10.09.2018 11:25:38
Om
Hi Daniel,
habe es so probiert, jedoch bekomme ich einen Laufzeitfehler ´1004´ im Bezug auf folgende Zeile
If .Value - Sheets("Tabelle1").Range("G37").Offset(0, i + j).Value < -0.01 Then
Ist da eventuell etwas mit den Bezügen schief gelaufen?
LG
Anzeige
AW: VBA Zellbezüge automatisieren
10.09.2018 11:33:02
daniel
HI
naja, deinen Angaben nach steht in Zelle A1 der Wert 1 oder 2
prüf mal, ob das der Fall ist.
sollte entgegen deinen Angaben die Zelle A1 leer sein, wird 0 angenommen und der Versatzwert wird dann -20 und damit verweist du auf eine nicht existierende Zelle.
du kannst die Zuweisung an j dann natürlich abändern:
If Range("A1") = 2 then j = 20
gruß Daniel
AW: VBA Zellbezüge automatisieren
10.09.2018 11:38:53
Om
Hi Daniel,
Tatsache in der Zeile A1 stand 0 das war wohl mein versehen. Jedoch erscheint nun der Laufzeitfehler 13 Typen unverträglich, obwohl alle Zellbezüge aus Zahlen bestehen. Hast du da eine Idee, an was es liegen könnte?
LG
Anzeige
AW: VBA Zellbezüge automatisieren
10.09.2018 11:48:16
daniel
Hi
also ich bekomme den Fehler, wenn in einer der referenzierten Zellen ein Text steht und damit die Berechnung nicht ausgeführt werden kann.
du musst halt schauen, welchen Wert i und j haben wenn der Fehler auftritt und dann prüfen, was in den entsprechenden Zellen steht.
Generell finde ich den Code Unsinn und würde hier einfach eine Bedingte Formatierung für die Zellen in der Spalte F einsetzen.
markiere die Zellen ab Zelle F7 und erstelle für sie eine bedingte Formatierung mit dieser Formel als Regel (Zelle F7 muss die aktive Zelle sein)
=(f7-Index(Tabelle1!$37:$37;1;Zeile()+Wenn($A$1=2;20;0)))

Gruß Daniel
Anzeige
AW: VBA Zellbezüge automatisieren
10.09.2018 13:32:39
Om
Hi Daniel,
habe es eben mit deinem Vorschlag versucht, vergeblich. Worauf genau bezieht sich das F7 in deiner Formel, meintest du evtl. F17?
LG
AW: VBA Zellbezüge automatisieren
10.09.2018 13:38:34
Daniel
Das bezieht sich auf die Zelle, für die du diese bedingte Formatierung einrichtest, deren Adresse musst du verwenden.
In Z1S1- Adressierungsart wäre es der bezug immer Z(0)S(0)
Mit A1-Bezügen musst du immer schauen, für welche Zelle du gerade die bedingte Formatierung erstellt.
Gruß Daniel
AW: VBA Zellbezüge automatisieren
10.09.2018 14:22:56
Om
Hi Daniel,
habe es eben versucht, jedoch scheint da etwas nicht ganz zu funktionieren. Was mein erster Gedanke wäre, dass in deiner Formel nicht explizit darauf bezogen wird, dass F17 aus Tabelle x sich auf G37 aus Tabelle1 bezieht oder irre ich mich? Denn in den Spalten A-F aus Tabelle1 steht nämlich keine Zahl und wenn die Formel bei A anfängt dann würde die Bezugszelle nie rot werden.
LG
Anzeige
AW: VBA Zellbezüge automatisieren
10.09.2018 15:27:43
daniel
Hi
es ist ziemlich schwer, für eine Datei, die man nicht kennt einen Code oder eine Formel zu entwickeln.
Versuche das Prinizip zu verstehen und die Formel selber
also nochmal zum Verständnis:
also du willst von F17 auf G37 und von F18 auf H38.
dann ist die Formel welche du für F17 schreibst und nach F18 und daruner liegende übernehem kannst:
=F17-Index(Tabelle1!$37:$37;1;Zeile()-17+7))
dh du berechnest aus der Zeilennummer der aktuellen Formel die Spaltennummer der Zielzelle.
Gruß Daniel
AW: VBA Zellbezüge automatisieren
10.09.2018 15:43:55
Om
Hi Daniel,
danke für die ausführliche Erklärung ich kann deine Formel nachvollziehen aber wir hatten wohl verständnisschwierigkeiten. Es soll jeweils F17 auf G37, F18 auf H37, F19 auf I37, etc.. ich denke daher kommen die Fehler.
LG
Anzeige
AW: VBA Zellbezüge automatisieren
10.09.2018 15:51:42
Daniel
naja dann weißt du jetzt ja wie du die Formeln zu schreiben hast.
Gruß Daniel
AW: VBA Zellbezüge automatisieren
10.09.2018 11:20:03
EtoPHG
Hallo,
Als Tipp für die Zukunft: Es wäre für Helfer wichtig zu wissen, was mit dem Code beabsichtigt ist. Nur aus dem Code etwas abzuleiten führt oft auf Holzwege und dann werden die Lösungen steinig ;-)
Wenn du schon mit dem Selection_change arbeitest, solltest du auch das target-Objekt miteinbeziehen, damit nur dann Code ausgelöst wird, wenn es nötig ist.
Ich hoffe ich hab die Außerdem-Forderung richtig verstanden und sie in den Code integriert.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column  6 Then Exit Sub
If Val(Target) - Val(Target.Offset(Val(Cells(1, 1)) * 20, 1)) 
Gruess Hansueli
Anzeige
AW: VBA Zellbezüge automatisieren
10.09.2018 11:31:26
Om
Hi Hansueli,
mit dem ursprünglichen Code wird beabsichtigt, dass eine Stundenliste in der Tabelle x (für den jeweiligen Tag des Monats), mit den vorgegebenen Bruttostunden in der Tabelle1 verglichen wird. Sollte die Anzahl der gearbeiteten Stunden aus der Tabelle x kleiner sein als die vorgegebenen Bruttostunden aus der Tabelle1 so soll diese Zelle rot markiert warden. Ich hoffe das ist so einigermaßen verständlich was mit diesem Code bezweckt warden soll. Leider hat dein Vorschlag mich in diesem Fall nicht weitergebracht, da hier die eindeutigen Bezüge (z.b. F7 aus Tabelle x - G37 aus Tabelle1) verloren gehen
Anzeige
AW: VBA Zellbezüge automatisieren
10.09.2018 12:14:13
EtoPHG
Hallo,
OK. Das mit dem tabellenübergreifendenden A1 Wert ist mir durch die Lappen gegangen.
Der Code gehört in das Tabellenblatt X
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rC As Range
If Target.Column  6 Then Exit Sub
For Each rC In Target.Cells
If Val(rC) - _
Val(rC.Offset(Val(Worksheets("Tabelle1").Cells(1, 1)) * 20, 1)) _

Ich schliesse mich allerdings Daniels Vorschlag an, dass hier eine bedingte Formatierungbesser wäre als ein frickliger VBA Code, der auf das Abklappern (Selektieren!) aller Zellen in F beruht.
Gruess Hansueli
Anzeige
AW: VBA Zellbezüge automatisieren
10.09.2018 15:00:37
Om
Hi, danke für die Antwort, jedoch klappt das mit der bedingten Formatierung auch nicht wie gewollt. Der Code den du angegeben hast scheint auch nicht ganz zu funktionieren. Ich denke da fehlt der Bezug zu der Spalte G37 aus Tabelle1 (korrigier mich bitte falls ich falsch liege bin ein ziemlicher VBA Anfänger) denn jede Zeile aus F wird mir noch weiß angezeigt, egal welchen Wert ich einsetze.
Bitte Beispielmappe mit Datenstruktur hochladen.!
10.09.2018 15:31:11
EtoPHG
Wie schon vorher erwähnt:
Es ist extrem schwierig die genaue Datenstruktur nachzuvollziehen. Also bitte lade eine Beispielmappe mit der Originaldatenstruktur (aber anonymisiertem Inhalt) hoch, damit wir uns ein Bild machen können.
Gruess Hansueli
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge