Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1868to1872
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

Wert in ander Zeile ausgeben

Wert in ander Zeile ausgeben
10.02.2022 10:22:45
Kai
Hallo Gemeinde,
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: Lagerplatz
in die Datenbank eingetragen werden.
In Moment geht davon nichts, was mache ich falsch.
Wie kann ich das bewerkstelligen, das es funktioniert?
LG
Kai

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert in ander Zeile ausgeben
10.02.2022 14:20:52
Yal
Hallo Kai,
wenn man die auskommentierte und die leere Zeile beseitigt, bleibt nicht viel übrig. Und trotzdem wird diesen Code kein Sinn ergeben, solang die dazu gehörige Datei nicht zur Verfügung steht. Oder sollen wir etwa es nachbauen?
Nur eins: wenn eine Formel etwas verarbeitet, wo alle Eingangsparameter in der Zeile 20 stehen, dann gehört diese Formel in Zeile 20.
Wenn Du es hinbekommst, dass jede Zeile für sich allein steht, dann hast Du nur einzige Muster, das in jede Zeile sich wiederholt. Die Komplexität ist wesentlich reduziert und Du musst Dich nur, um Bäume kümmern anstatt ein ganzes Wald.
Vielleicht liege ich mit meiner Bemerkung daneben, aber es liegt daran, dass ich keine Datei habe, um mir eine fundiertere Meinung zu machen.
VG
Yal
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige