Formel per VBA in Zelle eintragen
#1
Hallo Gemeinde,

ich komme einfach nicht weiter mit dem Thema.

Folgende Formel will ich in der Zelle D3 eintragen.
=K3 & " - " & N3 & " - " & H3

Das muss ich für 13 Zeilen untereinander machen.
Die Zelladressen (zB. K3 usw.) lege ich in der Schleife in einer Variablen ab.
Also K3, K4 usw.

Hier kann mir doch sicher einer der Experten helfen.
Wäre dankbar dafür.  Sleepy

Gruß Werner
Antworten Top
#2
Hallo Werner,

es wird mir immer ein Rätsel bleiben, warum man per VBA Formeln in Zellen schreiben möchte. Man kann die Berechnung doch gleich im Makro erledigen und nur das Ergebnis eintragen:

Code:
Option Explicit

Sub berechnung()
    Dim lngZeile As Long
    For lngZeile = 3 To 16
        Cells(lngZeile, 4) = Cells(lngZeile, 11) - Cells(lngZeile, 14) - Cells(lngZeile, 8)
    Next lngZeile
End Sub
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • Werner1953
Antworten Top
#3
Hi,

da genügt in Deiner Version einfach das als Formel in D3:

Code:
=K3:K13&" - "&N3:N13&" - "&H3:H13
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#4
Hallo,

in D3:
=K3:K15 & " - " & N3:N15 & " - " & H3:H15
Antworten Top
#5
Hi,

also ich schließe mich mal Klaus-Dieter an. Wieso will man per VBA eine Formel in eine Zelle schreiben?

Wenn man es dennoch machen will, dann ist es die einfachste Methode zunächst die Formel händisch in die richtige Zelle zu schreiben. Dann geht man hin und liest diese mit VBA aus. Das Ergebnis weist man einem String zu (nicht vergessen dabei eventuell vorkommende "-Zeichen zu verdoppeln) und ist dann fertig.

In deinem Fall ergibt das Einfügen von =K3&" - "&N3&" - "&H3 in D3 und das anschließende Auslesen mit ?range("d3").FormulaR1C1 im Direktfenster das Ergebnis =RC[7]&" - "&RC[10]&" - "&RC[4]
Das ergibt dann eine einzige Befehlszeile:
Code:
Range("D3").Resize(13).FormulaR1C1 = "=RC[7]&"" - ""&RC[10]&"" - ""&RC[4]"
Hier kann man auch sehr schön sehen, weshalb es geschickt sein kann die R1C1-Schreibweise zu verwenden.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 2 Nutzer sagen Danke an HKindler für diesen Beitrag:
  • Klaus-Dieter, Werner1953
Antworten Top
#6
Hallo,

danke für Eure Antworten.
@HKindler
geil, habe das jetzt so lösen können.
Danke

@Klaus-Dieter
Ich versuche mal den Grund für diese Vorgehensweise zu erklären.

Aus einer DB lese ich bestimmte Informationen und trage diese in ein Formular ein.
Dann verkette ich eben die entsprechenden Werte in der Spalte D
Nun geht der Benutzer (meine Frau) hin und schreibt einen Kommentar in Spalte H
Dieser Kommentar und nur Dieser soll aber in Spalte D in ROT angezeigt werden.
Dies habe ich über ein kleines Makro (WorksheetChange) gelöst.
Dadurch überschreibe ich natürlich die entsprechende Zelle in der Spalte D.
Dort brauche ich aber für die nächste Liste wieder die Formel.
Daher der Weg beim Aufbau der nächsten Liste die Formel wieder herzustellen.

Wenn es natürlich eine Möglichkeit gäbe in der Formel direkt sagen zu können, dass der Wert aus der Spalte H in rot dargestellt wird.
Dazu habe ich auch schon gesucht aber leider nichts Entsprechendes gefunden.

Vielleicht könnt Ihr mir als Profis ja dafür eine Lösung nennen, die ich dann gern übernehmen würde. Confused

Gruß Werner
Antworten Top
#7
Hallo Helmut,

(18.04.2025, 11:55)HKindler schrieb:
Code:
Range("D3").Resize(13).FormulaR1C1 = "=RC[7]&"" - ""&RC[10]&"" - ""&RC[4]"
Hier kann man auch sehr schön sehen, weshalb es geschickt sein kann die R1C1-Schreibweise zu verwenden.

Code:
Range("D3").Resize(13).Formula = "=K3&"" - ""&N3&"" - ""&H3"
ergibt das Gleiche.

Gruß, Uwe
Antworten Top
#8
Hallo Werner,

Zitat:Wenn es natürlich eine Möglichkeit gäbe in der Formel direkt sagen zu können, dass der Wert aus der Spalte H in rot dargestellt wird.
man kann das nicht in der Formel angeben, aber sehr wohl im Zellformat, indem man eine benutzerdefinierte Formatierung der Zelle einstellt:
[rot]text

Siehe dazu den Microsoft-Hilfe-Link:  Richtlinien zum Anpassen eines Zahlenformats - Microsoft-Support

oder in VBA:
Range("D3").Resize(13).Font.Color = vbRed
Gruß Anton.

Windows 10 64bit
Office365 32bit
Antworten Top
#9
Hi Anron,

das geht aber nur mit der gesamten Zelle und nicht mit nur einem Teil des Inhalts…
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#10
Hallo Werner,

habe deine Beschreibung unter #6 gelesen. Um das zu verstehen, wäre es sicher hilfreich, die Datei zu kennen. (Auch um über eine optimierte Vorgehensweise nachdenken zu können). Formel oder händischer Eintrag in einzelnen Zellen ist keine gute Arbeitsweise. Also bitte eine (anonymisierte) Datei hochladen.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top


Gehe zu:


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