Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
956to960
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
956to960
956to960
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Formel per VBA einfügen, wenn Wert in Zelle = "IST

Formel per VBA einfügen, wenn Wert in Zelle = "IST
09.03.2008 11:25:09
wossi
Hallo zusammen,
wünsche erstmal einen schönen Sonntag.
Folgendes, in eine Zelle soll eine Formel kopiert werden, wenn ein bestimmtes Kriterium in einer Zelle vorhanden ist. Per Formel alles kein Problem, nur muss in der Zelle vorher ein manuell eingetragener Wert stehen. So dass man die Formel nicht von vorneherein einfügen kann. Zur Veranschaulichung habe ich mal eine Beispieltabelle hochgeladen.
Wer kann mir helfen? Danke.

Die Datei https://www.herber.de/bbs/user/50585.xls wurde aus Datenschutzgründen gelöscht


MfG
wossi

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel per VBA einfügen, wenn Wert in Zelle = "IST
09.03.2008 12:09:01
Gerd
Hallo Wossi,
wie kommt das Wort "Ist" in die Zelle(n) der Zeile 10 rein ?
(per Eingabe, per Code, per Formel ?)
Gruß Gerd

AW: Formel per VBA einfügen, wenn Wert in Zelle =
09.03.2008 12:46:53
wossi
Hi Gerd,
auf der Seite ist ein Drehfeld, dass bei betätigung hochzählt, und auf den Ausgabewert ist die Zelle "IST" mit einer WENN Formel verknüpft.
wossi

Danke. EIn paar Fragen habe ich noch dazu
09.03.2008 13:56:00
wossi
Hallo Herby,
vielen Dank. Da ich gerade erst anfange mich mit vba zu beschäftigen, habe ich doch glatt noch ein paar Verständnisfragen, denn nur cop/paste ist auch doof, wenn man es nicht versteht.
- warum ist der code in "Tabelle1" eingefügt und nicht als "Modul"?
- die "ActiveCell" ist gleich die "IST" Zelle? in der orginaldatei in der ich diesen Code einfügen möchte, ist die "ActiveCell" mit einer WENN Funktion hinterlegt
- in der Orginaldatei soll dieses Beispiel für viele Zellen verwendet werden, muss ich den Code dann x-mal einfügen und abändern? oder gibt es eine elegantere Lösung?
Kannst Du mir vielleicht hinter den Code eine kurze Erklärung geben?
Wossi

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Z As Range
Set Z = ActiveCell
If Not Intersect(Target, Z) Is Nothing Then
If Cells(16, Z.Column) > 0 Then
Cells(16, Z.Column).FormulaR1C1 = _
"=IF(R[-6]C=""IST"",VLOOKUP(R16C4,Tabelle2!C3:C7,R[-13]C[1],0),"""")"
Cells(16, Z.Column).Select
Else
MsgBox "In Zeile 16 fehlt der manuell erfasste Wert"
End If
End If
End Sub


Anzeige
AW: Danke. EIn paar Fragen habe ich noch dazu
09.03.2008 18:23:08
Herby
Hallo Wossi,
ich hab noch einen Fehler ausgemerzt und getestet:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Z As Range
'der Variablen Z ein Bereichsobjekt mit dem benötigten Bereich zuweisen
Set Z = Range("E10:P10")
' Prüfen ob die gerade geänderte Zelle sich im Bereich Z befindet
If Not Intersect(Target, Z) Is Nothing Then
' wenn geänderte Zelle im Bereich E10:P10 dann prüfen ob in Zeile 16 ein Wert steht
If Cells(16, Target.Column) > 0 Then
' in Zeile 16 die Formel eintragen
Cells(16, Target.Column).FormulaR1C1 = "=IF(R[-6]C=""IST"",VLOOKUP(R16C4,Tabelle2!C3: _
C15,R[-13]C[1],0),"""")"
' Cursor auf zeile 16 setzen
Cells(16, Target.Column).Select
Else
MsgBox "In Zeile 16 fehlt der manuell erfasste Wert"
Cells(16, Target.Column).Select
End If
End If
End Sub


Viele Grüße
Herby

Anzeige
AW: Formel per VBA einfügen, wenn Wert in Zelle = "IST
09.03.2008 12:12:01
Tino
Hallo,
als code ins entsprechende tabellenblatt.

Private Sub Worksheet_Change(ByVal Target As Range)
If (Intersect(Target, Range("F10:P10")) Is Nothing) And LCase(Target)  "ist" Then Exit Sub
Application.EnableEvents = False
Target.Offset(6, 0).FormulaLocal = "=SVERWEIS($D$16;Tabelle2!$C:$G;H3;0)"
Application.EnableEvents = True
End Sub


Gruß
Tino

AW: Fehler
09.03.2008 12:15:46
Tino
Hallo,
nur mit Formula ist nicht richtig, schreibe lieber mit
Target.Offset(6, 0).FormulaR1C1 = _
"=IF(R[-6]C=""IST"",VLOOKUP(R16C4,Tabelle2!C3:C7,R[-13]C[1],0),"""")"

sonst werden die Zellbereiche in der formel nicht angepasst.
Gruß
Tino

Anzeige
Danke, und auch an Dich noch ne Frage
09.03.2008 14:09:00
wossi
Hi Tino,
danke auch Dir. Auch wenn ich den Code, den Du mir geschrieben hast, etwas kürzer aus der von Herby aussieht, funktioniert er glaube ich besser, weil die "IST" Zelle mit einer WENN Funktion hinterlegt ist.
Wie ich auch schon zu Herby geschrieben habe, kannst du mir evtl. eine kurze Erläuterung hinter den Code schreiben? Und, in der Orginaldatei, sollen wesentlich mehr Zellen wie in diesem Beispiel so behandelt werden, muss ich diesen Code auf jede Zelle Anpassen und einfügen, oder würde das komfortabler gehen (für vba DAU´s)?
wossi

AW: Danke, und auch an Dich noch ne Frage
09.03.2008 14:21:03
Tino
Hallo,
siehe Beitrag oben (mit Kommentar)
Gruß
Tino

Anzeige
AW: Formel per VBA einfügen, wenn Wert in Zelle =
09.03.2008 13:37:00
fcs
Hallo wossi,
den folgende Code im VBA-Editor unter der Tabelle einfügen. Er wird ausgeführt, wenn SOLL in IST geändert wird (direkte Zellwert eingabe). Ob es in Verbindung mit dem Spilbutton funktioniert weiss icht nicht.
DIe Hilfswerte in Zeile 3 (1, 2, 3 usw) werden nicht benötigt, kann man mit Funktion SPALTE lösen.
Gruß
Franz

erzeugte Formel in H4:
=SVERWEIS($D16; Tabelle2!$C:$R; SPALTE(H16) - SPALTE($D16)+ 1; FALSCH)
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Zeile As Long, strFormel As String
If Not Intersect(Target, Range("E10:P10")) Is Nothing _
And Target.Cells.Count = 1 Then
If LCase(Target.Value) = "ist" Then
If MsgBox("Sollen die Werte in Spalte " & Target.Column _
& " (" & Chr$(Target.Column + 64) & ") durch die Formel ersetzt werden?", _
vbQuestion + vbYesNo) = vbYes Then
'Wert durch Formel ersetzen für Zeilen mit Eintrag in Spalte 4 eintragen
For Zeile = Target.Row + 2 To Cells(Rows.Count, 4).End(xlUp).Row
If Not IsEmpty(Cells(Zeile, Target.Column)) Then
strFormel = "=VLOOKUP(R[0]C4, 'Tabelle2'!C3:C18, column(R[0]C[0]) " _
& "- column(R[0]C4)+ 1 , False)"
Cells(Zeile, Target.Column).FormulaR1C1 = strFormel
End If
Next
End If
End If
End If
End Sub


Anzeige

321 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige