Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Wert auslesen und in andere Zelle schreiben

VBA Wert auslesen und in andere Zelle schreiben
20.01.2017 09:17:46
Marco
Morgen =)
Ich wollte mal fragen wie man Wert aus einer Zelle ausliest und in eine andere überträgt. Also wenn ich jetzt in Zelle A1 eine Zahl schreibe soll sie z.B. in C1 stehen, aber mittels VBA und ohne das ich einen Button drücken muss. Kann mir jemand bitte erklären wie das geht?
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Wert auslesen und in andere Zelle schreiben
20.01.2017 09:25:24
Crazy
Hallo
nach deinen Angaben
gehört in das Tabellenblattmodul in dem es stattfinden soll
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then Range("C1") = Range("A1")
End Sub
MfG Tom
AW: VBA Wert auslesen und in andere Zelle schreiben
20.01.2017 09:28:39
Marco
Danke Tom ich habe es gerade eingeben aber es passiert nichts. Muss ich noch irgendetwas aktivieren?
Anzeige
AW: VBA Wert auslesen und in andere Zelle schreiben
20.01.2017 09:31:01
Marco
Aah Entschuldigung es geht ich habe den Wert nur nicht geändert danke =)
AW: VBA Wert auslesen und in andere Zelle schreiben
20.01.2017 09:53:28
Marco
Tom ich habe noch eine Frage und zwar möchte ich das wenn die Zelle A1 nicht leer ist in die Zelle D4 den Wert 24 eintragen. Ich habe es damit versucht:
If Target.Address = "$A$1" "" Then Range("D1") = Range("24")
Aber es funktioniert nicht. Kannst du oder irgendjemand anders mir bitte sagen was ich da falsch gemacht habe?
Anzeige
AW: VBA Wert auslesen und in andere Zelle schreiben
20.01.2017 10:12:37
hary
Moin
If Range("A1")  "" Then Range("D1") = 24
andere Loesung:
If Target.Count > 1 Then Exit Sub
If Target.Address = "$A$1" And IsNumeric(Target) Then '--Pruefung Adresse und ob Zahl
Range("C1") = Target
Range("D1") = IIf(Target, 24, "")
End If

gruss hary
Anzeige
AW: VBA Wert auslesen und in andere Zelle schreiben
20.01.2017 11:08:32
Marco
Danke das funktioniert super du hast damit auch gleich meine nächste Frage die ich stellen wollte erschlagen.
AW: VBA Wert auslesen und in andere Zelle schreiben
20.01.2017 13:40:23
Marco
Hallo Hary, jetzt habe ich doch noch eine Frage. Dein VBA Code Kopiert den Zellen Wert von A nach B ohne Probleme, aber wenn ich in der Zelle A eine Formel drin stehen habe dann kopiert der VBA Code nichts mehr. Woran liegt das? In der Zelle steht jetzt bei mir anstatt der Zahl 22 diese Formel:
{=WENNFEHLER(INDEX(E:E;KKLEINSTE(WENN(E$1:E$70;ZEILE($1:$7));ZEILE(1:99)));"")}
Die Formel funktioniert und sucht in der Spalte E nach Werten und listet sie der Reihe nach auf.
Der ermittelte Wert steht dann in Zelle A1 aber der VBA Code nimmt nicht diesen Wert an.
Kannst du mir dabei weiterhelfen? oder Könnte man die Funktion der Formel in den VBA Code schieben?
Grüße Marco
Anzeige
AW: VBA Wert auslesen und in andere Zelle schreiben
20.01.2017 15:31:22
Marco
Weiß vielleicht jemand anderes da draußen warum der VBA Code nur mit Wert aus der Zelle arbeiten kann und nicht mit Werten die eine Formel in die Zelle schreibt?
AW: VBA Wert auslesen und in andere Zelle schreiben
20.01.2017 16:56:24
hary
Moin
Muss gleich weg.
Worksheet_Change startet, wenn sich der Zellinhalt haendisch aendert.
Da sich aber der Wert durch Formel aendert wirkt Change nicht.
Dafuer gibt es Worksheet_Calculate, dieser startet wenn sich ein Wert durch Formel aendert. Aber den kann man nicht speziell auf eine Zelle setzen. Startet bei jeder Formelneuberechnung.
Private Sub Worksheet_Calculate()
If IsNumeric(Range("A1")) Then '--Pruefung ob Zahl
Range("C1") = Range("A1")
Range("D1") = IIf(Target, 24, "")
end if
End Sub

gruss hary
Anzeige
AW: VBA Wert auslesen und in andere Zelle schreiben
21.01.2017 11:00:53
Marco
Morgen Hary,
ich habe deinen Code ausprobiert und leicht verändert, aber bei mir stürzt dann Excel ab.
Anstatt wie vorher etwas von A1 zu C1 zu kopieren wollte ich nur A1 überprüfen ob was drin steht und wenn ja dann sollen in B1 und C1 die folgenden Werte eingetragen werden. In A1 steht eine Formel drin die entweder einen Wert ausgibt oder die Zelle dann leer lässt. Was habe ich denn falsch gemacht? Ich habe das vorher nämlich bei dem ersten Code den du hier gepostet hast auch so gemacht und da hat es funktioniert nur das die Zelle A1 vorher keine Formeln berücksichtigt hat.
Code der die Formel in A1 nicht berücksichtigt aber sonst funktioniert:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address = "$a$1" And IsNumeric(Target) Then '--Pruefung Adresse und ob Zahl
Range("B1") = IIf(Target, 1, "")
Range("C1") = IIf(Target, 135.17, "")
End If

Code der die Formel in A1 berücksichtigen soll aber Excel zum abstürzen bringt:
Private Sub Worksheet_Calculate()
If IsNumeric(Target("A1")) Then '--Pruefung ob Zahl
Range("B1") = IIf(Target, 1, "")
Range("C1") = IIf(Target, 135.17, "")
End If

Anzeige
AW: VBA Wert auslesen und in andere Zelle schreiben
23.01.2017 08:04:21
hary
Moin
Kann passieren, weil der Code bei jeder Formelneuberechnung ausgefuehrt wird.
Hast du nicht eine andere Zelle die du mit Change ueberwachen kannst?
z.B. die Zelle die zur Wertberechnung der Formel gebraucht wird. Irgendwo traegst du einen Wert ein.
gruss hary
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA Werte aus Zellen auslesen und in andere Zellen schreiben


Schritt-für-Schritt-Anleitung

Um den Wert einer Zelle in eine andere Zelle zu übertragen, kannst du den folgenden VBA-Code verwenden. Dieser wird in das Tabellenblattmodul eingefügt, in dem die Änderungen stattfinden sollen:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Range("C1") = Range("A1")
    End If
End Sub

Dieser Code sorgt dafür, dass, wenn der Wert in Zelle A1 geändert wird, dieser automatisch in C1 übertragen wird.


Häufige Fehler und Lösungen

  1. Der Code funktioniert nicht, wenn der Wert nicht geändert wird.

    • Lösung: Stelle sicher, dass du einen Wert in A1 eingibst. Der Code reagiert nur auf Änderungen.
  2. Werte von Formeln werden nicht kopiert.

    • Lösung: Nutze den Worksheet_Calculate-Ereignis-Handler, um auf Änderungen durch Formeln zu reagieren:
    Private Sub Worksheet_Calculate()
       If IsNumeric(Range("A1")) Then
           Range("C1") = Range("A1")
       End If
    End Sub

Alternative Methoden

Eine alternative Methode, um Werte zu übertragen, ist die Nutzung von Excel-Formeln:

  • Du kannst in Zelle C1 einfach die Formel =A1 verwenden. Dies überträgt den Wert automatisch.

Für komplexere Anforderungen, wie das Übertragen von Werten aus mehreren Zellen oder basierend auf Bedingungen, ist die Verwendung von VBA jedoch effektiver.


Praktische Beispiele

  1. Wert in Zelle D4 eintragen, wenn A1 nicht leer ist:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not IsEmpty(Range("A1")) Then
           Range("D4") = 24
       End If
    End Sub
  2. Formelwert aus A1 in B1 und C1 übertragen:

    Private Sub Worksheet_Calculate()
       If IsNumeric(Range("A1")) Then
           Range("B1") = 1
           Range("C1") = 135.17
       End If
    End Sub

Tipps für Profis

  • Verwende Application.EnableEvents = False und True: Wenn du mehrere Änderungen in VBA vornimmst, kannst du die Ereignisse kurzzeitig deaktivieren, um unnötige Trigger zu vermeiden.

  • Zellen dynamisch ansprechen: Anstatt feste Zellreferenzen zu nutzen, kannst du auch Variablen verwenden, um flexibler zu sein.

  • Fehlerbehandlung einbauen: Nutze On Error Resume Next, um Laufzeitfehler zu vermeiden, wenn der Code ausgeführt wird.


FAQ: Häufige Fragen

1. Wie kann ich den Wert einer Zelle ohne VBA in eine andere Zelle schreiben? Du kannst einfach eine Formel verwenden, z.B. =A1 in der Zelle, in die du den Wert übertragen möchtest.

2. Was mache ich, wenn der Wert aus einer Zelle, die eine Formel enthält, nicht übertragen wird? Nutze das Worksheet_Calculate-Ereignis, um Änderungen, die durch Formeln verursacht werden, zu erkennen und den Wert zu übertragen.

3. Kann ich mehrere Zellen gleichzeitig überwachen? Ja, du kannst die Target-Eigenschaft anpassen, um auf mehrere Zellen gleichzeitig zu reagieren, z.B. If Not Intersect(Target, Range("A1:A10")) Is Nothing Then.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige