Habe da so ein kleines Problem
Beschreibung:
A17:A18 = '=PO_DB!M13' (Lagerplatz)
B17:B18 = Wert aus PO_DB (Lagerplatz) = 6 stellige Zahl zB. 10/012
B19:B20 = die berchnete Formel
I20:K21 = '=PO_DB!E13' (Artikel)
L20:N21 = Wert aus PO_DB (Artikel) = 4 stellig zb 1012
I40:K41 = '=PO_DB!M13' (Lagerplatz)
L40:N41 = Wert aus PO_DB (Lagerplatz) = 6 stellige Zahl zB. 10/012 wenn nicht leer ist
-------------------------------------------------------------------------------------------------------
in B19 ist die Wennformel:
=WENN(B17;"";LINKS(L20;LÄNGE(L20)-2)&"/"&RECHTS(L20;LÄNGE(L20)-1))
und in der Zele L40 soll dann aus der WENN Formel das Ergbnis stehen.
Problem ist das diese Tabellenblatt ein Bearbeitungsblatt bzw neuer Artikel anlegen ist und über die Datenbanke "PO_DB" fungiert, siehe Code
Option Explicit
Const ws_DB As String = "PO_DB"
Const ws_Eingabe As String = "PO_Ein"
Sub PO_bearbeiten()
Dim header As Variant
Dim Spalte As Long
Spalte = 1
' Tabelle einlesen
Dim tbl As ListObject
Set tbl = Worksheets(ws_DB).ListObjects(1)
With Worksheets(ws_Eingabe)
' Einträge leeren
'"D" ID,"E" ArtikelNr
.Range("Q15:S16,L20:N21").ClearContents
'"E" ArtikelNr
'.Range("L20:N21").ClearContents
' "F" Brutto,"G" Preis
.Range("W24:Z25,L24:N25").ClearContents
'"G" Preis
'.Range("L24:N25").ClearContents
'"H" Bezeichnung
.Range("L28:S33").ClearContents
'.Range("L28:S29").ClearContents
'.Range("L30:S31").ClearContents
'.Range("L32:S33").ClearContents
'"I" MwSt
.Range("L36:L37").ClearContents
'"J" Bilder pfad / Bild
.Range("AD24:AK25").ClearContents
'.Range("AD28:AK54").ClearContents
'"K" EAN
.Range("W20:AB21").ClearContents
'"L" EAN pfad
.Range("AE20:AL21").ClearContents
'"M" Lagerplatz
.Range("L40:N41").ClearContents
'"N" Lagerstand
.Range("L44:N45").ClearContents
' Schleife über allen Tabellenheader
For Each header In tbl.HeaderRowRange
If header = "Lagerstand" Then
tbl.DataBodyRange(tbl.DataBodyRange.Rows.Count, Spalte).Value = 0
Else
'tbl.DataBodyRange(ActiveCell.Row - tbl.HeaderRowRange.Row, Spalte).Value _
'.Range(.Cells.Find(what:=header, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 1).Address).Value
.Range(.Cells.Find(What:=header, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 1).Address).Value = _
tbl.DataBodyRange(ActiveCell.Row - tbl.HeaderRowRange.Row, Spalte).Value
End If
Spalte = Spalte + 1
Next header
'Call POEin_Bild_einfuegen
' Tabellenblatt navigieren
.Shapes.Range(Array("img_POanlegen", "txt_POanlegen")).Visible = False
.Shapes.Range(Array("img_POspeichern")).Visible = False
.Shapes.Range(Array("img_PObearbeiten", "txt_PObearbeiten")).Visible = True
.Shapes.Range(Array("img_POschreiben")).Visible = True
.Shapes.Range(Array("img_POansicht", "img_POexportieren")).Visible = False
.Shapes.Range(Array("txt_POTabelle", "img_POanlegenGross")).Visible = False
.Shapes.Range(Array("img_POradieren")).Visible = False
Call Sheetswitch(ws_Eingabe)
' Zelle auswählen
.Range("L20").Select
End With
End Sub
Sub PO_anlegen()
' Tabelle einlesen
Dim tbl As ListObject
Set tbl = Worksheets(ws_DB).ListObjects(1)
With Worksheets(ws_Eingabe)
' Einträge leeren
'"D" ID
.Range("Q15:S16").ClearContents
'"E" ArtikelNr
.Range("L20:N21").ClearContents
'"F" Brutto
.Range("W24:Z25").ClearContents
'"G" Preis
.Range("L24:N25").ClearContents
'"H" Bezeichnung
.Range("L28:S33").ClearContents
'.Range("L30:S31").ClearContents
'.Range("L32:S33").ClearContents
'"I" MwSt
.Range("L36:L37").ClearContents
'"J" Bilder pfad / Bild
.Range("AD24:AL25").ClearContents
'.Range("AD28:AL55").ClearContents
'"K" EAN
.Range("W20:AB21").ClearContents
'"L" EAN pfad
.Range("AE20:AL21").ClearContents
'"M" Lagerplatz
.Range("L40:N41").ClearContents
'"N" Lagerstand
.Range("L44:N45").ClearContents
' ID eintragen
.Range("Q15").Value = tbl.DataBodyRange(tbl.DataBodyRange.Rows.Count, 1).Value + 1
' Tabellenblatt navigieren
.Shapes.Range(Array("img_POanlegen", "txt_POanlegen")).Visible = True
.Shapes.Range(Array("img_POspeichern")).Visible = True
.Shapes.Range(Array("img_PObearbeiten", "txt_PObearbeiten")).Visible = False
.Shapes.Range(Array("img_POansicht", "img_POexportieren")).Visible = False
.Shapes.Range(Array("txt_POTabelle", "img_POanlegenGross")).Visible = False
.Shapes.Range(Array("img_POschreiben", "img_POradieren")).Visible = False
Call Sheetswitch(ws_Eingabe)
'Zelle auswählen
.Range("L20").Select
End With
End Sub
Sub PO_speichern()
Dim tbl As ListObject
Dim header As Variant
Dim Spalte As Long
Spalte = 1
Dim Zeile As Long
With Worksheets(ws_DB)
'Tabelle einlesen
Set tbl = .ListObjects(1)
' Produkt anlegen?
If Worksheets(ws_Eingabe).Shapes("img_POanlegen").Visible = True Then
' Zeile hinzufügen
tbl.ListRows.Add
' Zeile definieren
Zeile = tbl.DataBodyRange.Rows.Count
' Zeilehöhe anpassen
.Rows(Zeile + tbl.HeaderRowRange.Row).RowHeight = .Rows(tbl.HeaderRowRange.Row + 1).RowHeight
' Produckt bearbeiten?
Else
Zeile = Worksheets(ws_Eingabe).Range(Worksheets(ws_Eingabe).Cells.Find(What:="POID", LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 1).Address).Value
End If
End With
With Worksheets(ws_Eingabe)
'Schleife über allen Tabellenheader
For Each header In tbl.HeaderRowRange
If header = "Lagerstand" Then
tbl.DataBodyRange(Zeile, Spalte).Value = 0
'If header = "Bezeichnung" Then
'tbl.DataBodyRange(Zeile, Spalte).Value = range("L29:S30"," ","L31:S32"," ","L33:S34".value
Else
tbl.DataBodyRange(Zeile, Spalte).Value = _
.Range(.Cells.Find(What:=header, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 1).Address).Value
End If
Spalte = Spalte + 1
Next header
End With
'With Worksheets(ws_DB)
' Tabellenblatt navigieren
'.Shapes.Range(Array("img_POTanlegen", "txt_POTanlegen")).Visible = False
'.Shapes.Range(Array("img_POTspeichern")).Visible = False
'.Shapes.Range(Array("img_POTbearbeiten", "txt_POTbearbeiten")).Visible = False
'.Shapes.Range(Array("img_POTansicht", "img_POTexportieren")).Visible = True
'.Shapes.Range(Array("txt_POTTabelle", "img_POTanlegenGross")).Visible = True
'.Shapes.Range(Array("img_POTschreiben", "img_POTradieren")).Visible = True
'End With
' Tabelleblatt Produkte auswählen und in Zeile springen
Call Nav_PO_DB
tbl.DataBodyRange(Zeile, 1).Select
ActiveWindow.ScrollRow = Zeile + tbl.HeaderRowRange.Row
End Sub
und dann wenn ich speichern drücke, soll natürlich der Wert aus L40 'I40 (I40:K40) = '=PO_DB!M13' = Name: Lagerplatzin die Datenbank eingetragen werden.
In Moment geht davon nichts, was mache ich falsch.
Wie kann ich das bewerkstelligen, das es funktioniert?
LG
Kai