Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1512to1516
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
Inhaltsverzeichnis

VBA für Verweis oder Liste-/Eingabedaten

VBA für Verweis oder Liste-/Eingabedaten
10.09.2016 12:41:17
Al
Hallo zusammen,
ich habe ein Excelblatt anbei hochgeladen. Ich möchte auf der Bemessungsseite in den Spalten B bis J die Möglichkeit haben entweder die geladenen Werte über die Funktion SVerweis oder über Dropdownliste bzw. durch eigene Eingabe zu verwenden. Wenn die Werte durch eigene Eingabe bzw. Dropdownliste nicht zufriedenstellend waren, sollen durch Löschung die ursprünglichen Werte aus dem Verweis wieder drin stehen.
Ich habe folgenden Code beispielhaft für die Spalte B gebastelt, der jedoch nicht ganz funktioniert. Dieser (wenn er denn funktioniert) soll dann für die Spalten B bis J ausgeweitet werden. Hat jemand eine Idee?
Danke schon mal für die Hilfe.
Code:
Private Sub Worksheet_Change1(ByVal Target As Range)
If Target.Count = 1 Then
If Not Intersect(Target, Range("B13:B1012")) Is Nothing Then
If Target = "" Then
Target.FormulaR1C1 = "=vlookup(r[]c[-1],Statik!r2c1:r1000c11,2,0)"
End If
End If
End If
End Sub
https://www.herber.de/bbs/user/108104.zip

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA für Verweis oder Liste-/Eingabedaten
10.09.2016 14:34:15
fcs
Hallo Al,
das Ereignismakro "Private Sub Worksheet_Change(ByVal Target As Range)" darfst du nicht umbenennen!
In nachfolgender Form sollte es mit dem SVERWEIS funktionieren.
Allerdings werden dann 0-Werte angezeigt, wenn im Blatt "Statik" die Zelle leer ist.
Wäre es nicht sinnvoller, wenn du die vorhandenen Formeln in der Zeile wiederherstellst?
LG
Franz
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile As Long
Dim Spalte As Long
Zeile = Target.Row
If Target.Cells.Count = 1 Then
Select Case Zeile
Case Is >= 14
If IsNumeric(Cells(Zeile, 1)) Then
Application.EnableEvents = False
Select Case Target.Column
Case 2 To 10 'Spalten B bis J
If IsEmpty(Target) Then
For Spalte = 2 To 10
Select Case Spalte
Case 2 To 6
Cells(Zeile, Spalte).FormulaR1C1 = _
"=vlookup(r[]c1,Statik!r2c1:r1000c21," _
& Spalte & ",False)"
Case 7 To 10
Cells(Zeile, Spalte).FormulaR1C1 = _
"=vlookup(r[]c1,Statik!r2c1:r1000c21," _
& Spalte + 9 & ",False)"
End Select
Next
End If
End Select
Application.EnableEvents = True
Else
Application.Undo 'Funktioniert leider nicht
End If
End Select
End If
End Sub

Anzeige
AW: VBA für Verweis oder Liste-/Eingabedaten
10.09.2016 15:02:30
Al
Hey, also mit deinem Code funktioniert es super.
Wie genau meinst du das mit Formel wiederherstellen? Meinst du in jede veränderte Zelle reinblicken und die Formel "von Hand" wiederherstellen?
Dies versuche ich zu vermeiden, da zum Teil das Blatt mehr als 800 Zeilen haben und verändert werden kann. Es wäre sehr mühselig jede geänderte Zelle wieder aus von Hand zurück zu stellen, ganz zu schweigen davon, dass man nicht mehr wüsste welche Zelle man verändert hat.
Aber falls du eine besser Idee hast, gib mir Bescheid.
Gruß
AW: VBA für Verweis oder Liste-/Eingabedaten
10.09.2016 20:41:11
fcs
Hallo Al,
du hasst ja jetzt schon in jeder Spalte eine Formel, die den entsprechenden Wert aus der jeweiligen Zelle im Blatt "Statistik". Dabei wird dann ja bei leeren Zellen z.B. "" als Ergebnis ausgegeben.
Diese Formeln könnte man mit dem Makro auch wieder herstellen.
Gruß
Franz
Ereignismakro mit Wiederherstellung der Formeln, wenn Inhalt einer Zelle in Spalte B bis J gelöscht wird
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile As Long
Dim Spalte As Long
Zeile = Target.Row
If Target.Cells.Count = 1 Then
Select Case Zeile
Case Is >= 14
Application.EnableEvents = False
Select Case Target.Column
Case 2 To 10 'Spalten B bis J
If IsEmpty(Target) Then
For Spalte = 2 To 10
With Cells(Zeile, Spalte)
Select Case Spalte
Case 2
.FormulaR1C1 = _
"=IF(ISTEXT(Statik!R[-12]C[-1]),Statik!R[-12]C[-1],IF(ISBLANK(Statik!R[-12]C)" _
& ","""",Statik!R[-12]C))"
Case 3
.FormulaR1C1 = _
"=IF(ISBLANK(Statik!R[-12]C),"""",Statik!R[-12]C)"
Case 4
.FormulaR1C1 = _
"=IF(ISBLANK(Statik!R[-12]C),"""",Statik!R[-12]C)"
Case 5
.FormulaR1C1 = _
"=IF(RC4="""","""",IF(Statik!R[-12]C=""M16"",16," & Chr(10) _
& "IF(Statik!R[-12]C=""M20"",20," & Chr(10) _
& "IF(Statik!R[-12]C=""M24"",24," & Chr(10) _
& "IF(Statik!R[-12]C=""M27"",27," & Chr(10) _
& "IF(Statik!R[-12]C=""M30"",30," & Chr(10) & "12))))))"
Case 6
.FormulaR1C1 = _
"=IF(ISBLANK(Statik!R[-12]C),"""",Statik!R[-12]C)"
Case 7
.FormulaR1C1 = _
"=IF(ISBLANK(Statik!R[-12]C[9]),"""",Statik!R[-12]C[9])"
Case 8
.FormulaR1C1 = _
"=IF(ISBLANK(Statik!R[-12]C[9]),"""",Statik!R[-12]C[9])"
Case 9
.FormulaR1C1 = _
"=IF(ISBLANK(Statik!R[-12]C[5]),"""",Statik!R[-12]C[5])"
Case 10
.FormulaR1C1 = _
"=IF(ISBLANK(Statik!R[-12]C[5]),"""",Statik!R[-12]C[5])"
End Select
End With
Next
End If
End Select
Application.EnableEvents = True
End Select
End If
End Sub

Anzeige
AW: VBA für Verweis oder Liste-/Eingabedaten
14.09.2016 14:04:23
Ali
Hallo nochmal,
also irgendwie zeigt mir Excel einen Laufzeitfehler 424 an bei der Zeile "Dim Spalte As Long" an. Ich hab deinen Quellcode kopiert und eingesetzt. Glaub nicht dass es daran liegen kann... Hast du eine Idee?
Gruss

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige