Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zellbezüge um bestimmten Wert verschieben
#11
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.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#12
@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-sheet
Leider habe ich die Lösung noch nicht ganz verstanden.
Antworten Top
#13
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:
  • hansla
Antworten Top
#14
(02.05.2018, 22: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!
Antworten Top
#15
Hallo,

(02.05.2018, 22: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. Wink

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • hansla
Antworten Top
#16
(02.05.2018, 23: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. Wink

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 rngZ
End Sub



Vielen Dank nochmal! :)
Antworten Top
#17
Hallo, nur zur Info..: http://www.ms-office-forum.net/forum/sho...p?t=351567
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste