Daten aktualisieren durch VBA-Button
#1
hallo zusammen,
 
ich habe ein Problem und hoffe, dass Sie mir dabei helfen können.
Ich habe 100 Artikeln (Kleidungen) nummeriert mit Ids. 001, 002, 003……. Bis 100. (die Tabelle befindet sich im Datenblatt 1).
Im Datenblatt 2 befindet sich die Tabelle von den Kunden, die ich zur Verfügung habe. Jeder Kunde hat eine ID-Nr.
Ich gebe jedem Kunden von 10 bis 15 Artikel (Kleidungen).
Durch SVERWEIS fülle ich meine breite Tabelle aus --> (ID.-Nr. , Name, Vorname, Geb.-Datum, Familienstand (Dropdown), Datum, Artikel1, Artikel2,…..Artikel15).
Nachdem Ausfüllen speichere ich die Daten durch den Button “Speichern“ im Datenblatt 3.

ich habe die Excel-Datei angehängt (Siehe Anhang), damit Sie wissen worum es geht.

Frage:
1-      Nach dem Speichern möchte ich dass der alte Lagerbestand automatisch aktualisiert wird. (in der Spalte vom  „Lagerbestand (neu)“) durch eine Funktion oder einen Button(VBA).
 
Für eine baldige Antwort  wäre ich Ihnen sehr Dankbar.


Angehängte Dateien
.xlsm   Softwaer.xlsm (Größe: 39,35 KB / Downloads: 5)
Top
#2
Hallo

anbei die Beispieldatei überarbeitet zurück.  Die alten Makros habe ich gelassen und ein neues Modul eingefügt.

Beim Speichern wird jezt automatisch der Lagerbestand in Spalte "neuer Bestand" um -1 abgezogen, und danach die Eingabe gelöscht.  Es kann auch noch gelöscht werden ohne zu buchen.  Der neue Button ist dafür gedacht am Tagesende oder naechsten Tag den neuen Bestand in die Spalte "alter Lagerbestand" zu übernehmen.

Bitte in Ruhe selbst testen und bitte prüfen ob alles richtig funktioniert.  Würde mich freuen wenn es klappt

mfg  Gast 123


Angehängte Dateien
.xlsm   Softwaer.xlsm (Größe: 45,38 KB / Downloads: 11)
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • alnourx
Top
#3
Ich danke Ihnen sehr für Ihre Hilfe und Mühe.

Das Programm funktioniert wie ich mir vorgestellt habe Smile
Aber ich hätte bitte eine Frage: ich glaube dass der neue Button nicht richtig funktioniert wenn ich darauf klicke.
Der Button zeigt, dass eine Variable nicht definiert wurde. Siehe das Bild im Anhang.

Ich habe versucht die Variable zu definieren wie folgendes:

Sub Lagerbestand_Neu_übernehmen()
Dim Zahl As Integer, AC As Range
With Sheets("Tabelle1")
   Zahl = Application.WorksheetFunction.Sum(.Range(LagerBereich).Offset(0, 2))
   If Zahl = 0 Then MsgBox "Spalte D  Lagerbestand = 0": Exit Sub
   'neuen Lagerbestand nach alt kopieren
   For Each AC In .Range(LagerBereich)
      If AC.Cells(1, 3) = Empty Then
      ElseIf AC.Cells(1, 3) = Empty Then
         AC.Cells(1, 2) = AC.Cells(1, 3)
      End If
   Next AC
End With
End Sub

---> Aber trotzdem wird nichts ändern wenn ich auf den Button klicke.


Angehängte Dateien Thumbnail(s)
   
Top
#4
Hallo

Sorry, stimmt,, ich hatte etwas geandert, dabei vergessen AC zu definieren, und danach leider nicht mehr kontrolliert.

Mit AC As Range sollte es normalerweise klappen. Wenn nicht setze bitte  AC AS Object  ein. Damit hat es in Excel 2003 immer funktioniert.

mfg Gast 123
Top
#5
(14.03.2017, 13:59)Gast 123 schrieb: Hallo

Sorry, stimmt,, ich hatte etwas geandert, dabei vergessen AC zu definieren, und danach leider nicht mehr kontrolliert.

Mit AC As Range sollte es normalerweise klappen. Wenn nicht setze bitte  AC AS Object  ein. Damit hat es in Excel 2003 immer funktioniert.

mfg Gast 123

Hallo Herr Gast 123,

ich danke Ihnen für die schnelle Antwort und für die lehrreichen Ideen.

Ich habe versucht die  AC As Range in AC AS Object zu ändern aber nach dem Kompilieren hat es nicht geklappt. Der neue Bestand wurde leider nicht in die Spalte "alter Lagerbestand" übernommen.
Gibt es irgendwelche Alternativen??
Top
#6
Hallo

Bitte den korrigierten Code übernehmenj, damit müsste es klappen.  (die Auswerte Logik stimmte nicht)

mfg Gast 123

Code:
Sub Lagerbestand_Neu_übernehmen()
Dim Zahl As Integer, AC As Range
With Sheets("Tabelle1")
  Zahl = Application.WorksheetFunction.Sum(.Range(LagerBereich).Offset(0, 2))
  If Zahl = 0 Then MsgBox "Spalte D  Lagerbestand = 0": Exit Sub
  'neuen Lagerbestand nach alt kopieren
  For Each AC In .Range(LagerBereich)
     If AC.Cells(1, 3) <> Empty Then
        AC.Cells(1, 2) = AC.Cells(1, 3)
     End If
  Next AC
End With
End Sub
Top
#7
Hallo Herr Gast 123,

vielen lieben Dank.
Der Code hat problemlos funktioniert. Danke schön Smile
Eine gute Nacht wünsche ich Ihnen.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste