16.10.2019, 07:29 (Dieser Beitrag wurde zuletzt bearbeitet: 16.10.2019, 07:33 von Quarzer.)
Hallo Leute,
ich habe mal eine Frage. Auf Arbeit wurde mir eine Excel-Tabelle vorgesetzt, die sich in Teilen automatisch selbst befüllt, ich aber nicht dahinterkomme wie es funktioniert. Z.b. werden in Zeile 10 die Spalten A bis G befüllt. Zu dem Zeitpunkt sind die Spalten H - L noch komplett leer. Es ist auch keine Formel oder dergleichen hinterlegt.
Sobald jedoch Werte in die Spalten A bis G befüllt werden, werden die Spalten H - L automatisch mit Formeln befüllt, die auf die Spalten A-G zugreifen und entsprechend der Werte Daten ausgibt. Wie geht das?
17.10.2019, 06:34 (Dieser Beitrag wurde zuletzt bearbeitet: 17.10.2019, 07:14 von Quarzer.)
Huhu.
habe da mal was angehangen. Derzeit stehen in den Spalten C/D/E keine Daten, sobald aber in den Spalten A/B was eingegeben wird, sind Formeln in den Spalten C/D/E hinterlegt.
Ich sehe gerade, dasss das Sheet nicht angehangen war. Von daher habe ich das oben nochmal getan.
Wenn man da z.B. in A5 oder B5 was eingibt, wird C5 bis E5 von selbst befüllt, obwohl vorher nichts drin war. Ist das womöglich eine Tabellnfunktion? Und wenn ja, geht das auch außerhalb der Tabellen. Mit der STRG+L konnte ich gerade nicht soooo viel anfangen. Sry :(
Option Explicit
Public Neu As Long
Public Aelteste As Date
Public Eingabe As Long
Public loEnde As Long
Private Sub worksheet_activate()
Application.MoveAfterReturnDirection = xlToRight
Neu = Cells(Rows.Count, 1).End(xlUp).Row
End Sub
Private Sub worksheet_deactivate()
Dim loLetzte As Long
Dim loa As Long
Application.MoveAfterReturnDirection = xlDown
Application.EnableEvents = False
Application.ScreenUpdating = False
loLetzte = Cells(Rows.Count, 1).End(xlUp).Row
If loLetzte > Neu Then
With Sheets("Kasse")
If .FilterMode Then .ShowAllData
End With
Range(Cells(3, 1), Cells(loLetzte, 8)).Sort key1:=Range("A1"), order1:=xlDescending, key2:=Range("B1"), order2:=xlAscending
Cells(3, 7).FormulaLocal = "=kürzen(G4+((C3=""Umb"")+(C3=""bar""))*F3;2)"
Cells(3, 7).AutoFill Destination:=Range(Cells(3, 7), Cells(loLetzte, 7))
Range(Cells(3, 7), Cells(loLetzte, 7)).Value = Range(Cells(3, 7), Cells(loLetzte, 7)).Value
Range(Cells(3, 3), Cells(loLetzte, 5)).Validation.Delete
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Private Sub worksheet_Change(ByVal target As Range)
Dim loLetzte As Long
Dim loa As Long
Dim Liste As String
Dim rng As Range
Dim loAnzahl As Long
Dim loSpalte As Long
If target.Count > 1 Then Exit Sub
With Cells(2, 3).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlEqual, Formula1:="=Zahlart"
End With
With Cells(2, 2).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlEqual, Formula1:="=Nutzer"
End With
If target.Address = "$D$2" Then
If target = "" Or target = "Taschengeld" Then Exit Sub
Liste = Range("D2")
With Cells(2, 5).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlEqual, Formula1:="=" & Liste
End With
End If
If Intersect(target, Range("F2")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Application.ScreenUpdating = False
'On Error GoTo Fehler
If InStr(UCase(Cells(2, 3)), "BAR") > 0 Or InStr(UCase(Cells(2, 3)), "UNB") > 0 Or InStr(UCase(Cells(2, 3)), "MAS") > 0 Then Cells(2, 6) = -Cells(2, 6)
Eingabe = Eingabe + 1
If Aelteste = 0 Or Cells(2, 1) < Aelteste Then Aelteste = Cells(2, 1)
Range(Cells(2, 1), Cells(2, 8)).Insert shift:=xlDown
With Range(Cells(2, 1), Cells(2, 8)).Borders
.LineStyle = xlContinuous
.Weight = xlThin
End With
(17.10.2019, 07:15)Quarzer schrieb: Ist das womöglich eine Tabellnfunktion? Und wenn ja, geht das auch außerhalb der Tabellen. Mit der STRG+L konnte ich gerade nicht soooo viel anfangen. Sry :(
Hm... das war auch meine Gedanke. Aber ich kann einfach das Makro nicht finden auch mit STRG + F11 nicht... Bin ich zu doof? Bei mir sind alle Makro-Fenster leer. :(