Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
Hallo,
ok, ... wir sprechen nicht die gleiche Sprache. Darum ist hier Schluß für mich.
Übrigens: in den Foren ist allgemein das Du die übliche Anredeform.
Für Dein Vorhaben wünsche ich Dir gutes Gelingen.
Registriert seit: 02.05.2018
Version(en): 2013
02.05.2018, 22:44
(Dieser Beitrag wurde zuletzt bearbeitet: 02.05.2018, 22:49 von hansla.)
@
Käpt'n Blaubär: Schade. Aber es ist tatsächlich wohl besser nicht mehr zu schreiben anstatt sinnlose Kommentare zu verfassen, die nichts mit dem Thema zu tun haben. Und verzeih bitte dass ich dich gesiezt habe. Ich bin nur stark gegen die Verrohung der Umgangsformen in Foren und hatte gehofft auf sachlicher Ebene weiterdiskutieren zu können.
Hier hatte jemand offensichtlich ein ähnliches Problem:
https://stackoverflow.com/questions/2861...work-sheetLeider habe ich die Lösung noch nicht ganz verstanden.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo,
per VBA könnte es so gehen:
Sub aaa()
Dim lngCol As Long, lngRow As Long
Dim rngB As Range, rngZ As Range
Dim varF As Variant
lngCol = 3 'Versatz Spalten
lngRow = 5 'Versatz Zeilen
Set rngB = Range("A1").CurrentRegion 'Bereich festlegen
For Each rngZ In rngB
If rngZ.HasFormula Then
varF = Split(rngZ.Formula, "!")
If UBound(varF) = 1 Then
varF(1) = Range(varF(1)).Offset(lngRow, lngCol).Address(True, True)
rngZ.Offset(0, 1).Formula = Join(varF, "!")
End If
End If
Next rngZ
End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• hansla
Registriert seit: 02.05.2018
Version(en): 2013
02.05.2018, 23:59
(Dieser Beitrag wurde zuletzt bearbeitet: 03.05.2018, 00:25 von hansla.)
(02.05.2018, 23:39)Kuwer schrieb: Hallo,
per VBA könnte es so gehen:Sub aaa()
Dim lngCol As Long, lngRow As Long
Dim rngB As Range, rngZ As Range
Dim varF As Variant
lngCol = 3 'Versatz Spalten
lngRow = 5 'Versatz Zeilen
Set rngB = Range("A1").CurrentRegion 'Bereich festlegen
For Each rngZ In rngB
If rngZ.HasFormula Then
varF = Split(rngZ.Formula, "!")
If UBound(varF) = 1 Then
varF(1) = Range(varF(1)).Offset(lngRow, lngCol).Address(True, True)
rngZ.Offset(0, 1).Formula = Join(varF, "!")
End If
End If
Next rngZ
End Sub
Gruß Uwe
Vielen Dank!
Das macht genau was ich gesucht habe!
Set rngB = Range("A1").CurrentRegion 'Bereich festlegen
habe ich noch durch Set rngB = Selection ersetzt.
Ist es möglich dass das Makro die ursprüngliche Zelle mit dem Zellverweis direkt überschreibt statt das Ganze rechts davon einzufügen?
Nochmals vielen Dank für die Hilfe!
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo,
(02.05.2018, 23:59)hansla schrieb: Ist es möglich dass das Makro die ursprüngliche Zelle mit dem Zellverweis direkt überschreibt statt das Ganze rechts davon einzufügen?
ja sicher. In dieser Zeile wird die Formel zurückgeschrieben:
rngZ.Offset(0, 1).Formula = Join(varF, "!")
Wenn Du die rote 1 durch 0 (Null) ersetzt, wird in dieselbe Zelle zurückgeschrieben.
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• hansla
Registriert seit: 02.05.2018
Version(en): 2013
(03.05.2018, 00:08)Kuwer schrieb: Hallo,
ja sicher. In dieser Zeile wird die Formel zurückgeschrieben:rngZ.Offset(0, 1).Formula = Join(varF, "!")
Wenn Du die rote 1 durch 0 (Null) ersetzt, wird in dieselbe Zelle zurückgeschrieben.
Gruß Uwe
Perfekt! Jetzt ist es genau das was ich gesucht habe!
Sub aaa() Dim lngCol As Long, lngRow As Long Dim rngB As Range, rngZ As Range Dim varF As Variant lngCol = 0 'Versatz Spalten lngRow = 5 'Versatz Zeilen Set rngB = Selection For Each rngZ In rngB If rngZ.HasFormula Then varF = Split(rngZ.Formula, "!") If UBound(varF) = 1 Then varF(1) = Range(varF(1)).Offset(lngRow, lngCol).Address(True, True) rngZ.Offset(0, 0).Formula = Join(varF, "!") End If End If Next rngZEnd SubVielen Dank nochmal! :)
Registriert seit: 10.04.2014
Version(en): Office 2019
Gruß Jörg
stolzes Mitglied im ----Excel-Verein
Freund einer excellenten Power Query-Abfrage