Hilfe bei Excel Makro

  • #1
G

gustel123

Neues Mitglied
Themenersteller
Dabei seit
15.03.2005
Beiträge
2
Reaktionspunkte
0
Hallo @all,
folgendes Excel Problem:

Gegeben:

Tabellenblatt1 : Verbrauchte_Artikel
ArtikelMenge
Schraube2
Naegel0

Tabellenblatt2 : Anforderung
ArtikelMenge
Schraube2

Vorhaben:
Ich will beide Tabellenblätter so verknüpfen, dass sobald eine Artikel verbraucht wird (Menge>0)
in der Anforderung-Tabelle ein Eintrag mit Artikel und Menge des Verbrauchten Artikel erscheint.
Im endefekt sollen nur die Artikel die Tatsächlich verbraucht worden sind auch Bestellt werden!

Im ersten Versuch habe ich die Komplette Tabelle 1zu1 verknüpft und dann
versucht über ein Makro alle Zeilen der 2. Tabelle auszublenden, in denen Menge=0 ist. ::)
hat leider auch nicht 100%ig gefunzt .....

Vieleicht hat jemand eine Idee, kann ich bestimmt auch irgendwie ohne Makro´s machen, bin leider nicht so ein Excel-Guru!

Danke schon mal vorab!

Gruss aus Frankfurt,
Gustel
 
  • #2
Hallo Gustel,

ich hab dir mal eine Lösung mit Makros zusammengestellt.

Die Arbeitsmappe ist folgendermassen aufgebaut:

1.Blatt:
Name: Verbrauchte_Artikel
Überschrift->Artikel' in A1
A2 und folgende -> Artikelbezeichnung
Überschrift->Menge' in B1

2. Blatt:
Name: Anforderung
in A1 Formel:
Code:
=Verbrauchte_Artikel!A1
Formel soweit oder weiter ziehen, bis Du alle Artikel auf dem 2.Blatt siehst.
in B1 Formel:
Code:
=Verbrauchte_Artikel!B1
Formel wie in Spalte A herunterziehen

So jetzt kommen die Makros:
1) VB-Ediotr öffnen mit Alt+F11
Links siehst Du ein Fenster mit der Überschrift Projekt-VBA-Project.
In diesem Fenster ist die Arbeitsmappe unter dem Namen VBAProject(MappenName) zu finden.

2) VBA-Modul anlegen mit
2a) VBAProject(MappenName) mit der Maus selektieren
2b) rechte Maustaste -> Einfügen -> Modul
in der Mitte geht das Code-Fenster MappenName-Modul1(Code) auf
2c) den folgenden Code per copy und Paste in dieses Fenster hineinkopieren
Code:
 ->1. Zeile mit Werten auf->Verbrauchte_Artikel'
  Global Const c_ErsteWerteZeile = 2
 ->Spaltendefinition
  Global Const c_SP_Artikel = 1
  Global Const c_SP_Menge = 2
 ->Tabellennamen
  Global Const c_Name_Verbrauchte_Artikel = Verbrauchte_Artikel
  Global Const c_Name_Anforderung = Anforderung

3) den Makro anlegen, der beim Öffnen der Arbeitsmappe
auf dem Blatt->Anforderung' die Zeilen  mit dem Wert 0 versteckt
3a) Doppelklick im Projekt-Fenster auf DieseArbeitsmappe
in der Mitte geht das Code-Fenster DieseArbeitsmappe(Code) auf
3b) den folgenden Code per copy und Paste in dieses Fenster hineinkopieren
Code:
Private Sub Workbook_Open()
  
  Dim x As Long, l_ZeileMax As Long, ws1 As Worksheet, ws2 As Worksheet
  
  On Error GoTo AufWiedersehen
  Set ws1 = Worksheets(c_Name_Verbrauchte_Artikel)
  Set ws2 = Worksheets(c_Name_Anforderung)
  
 ->letzte Zeile mit Artikel auf->Verbrauchte_Artikel' feststellen
  l_ZeileMax = ws1.Cells(ws1.Rows.Count, c_SP_Artikel).End(xlUp).Row
  
 ->für alle Zeilen auf->Verbrauchte_Artikel' Wert->Menge'prüfen
  For x = c_ErsteWerteZeile To l_ZeileMax
   ->eine Zelle der Spalte 2 ?
    If ws1.Cells(x, c_SP_Menge) = 0 Then
      ws2.Rows(x).Hidden = True
    Else
      ws2.Rows(x).Hidden = False
    End If
  Next
AufWiedersehen:
  Set ws1 = Nothing: Set ws2 = Nothing
End Sub

4) den Makro anlegen, der beim Ändern der Mengenangabe
im Blatt->Verbrauchte_Artikel' auf dem Blatt->Anforderung'
die korrespondierende Zeile  entsprechend dem Wert
ein- oder ausblendet
4a) Doppelklick im Projekt-Fenster auf Tabelle1(Verbrauchte_Artikel)
in der Mitte geht das Code-Fenster Tabelle1(Code) auf
4b) den folgenden Code per copy und Paste in dieses Fenster hineinkopieren
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  
  Dim Zelle As Range, l_row As Long
  
  On Error GoTo UndTschuess
  
 ->für alle geänderten Zellen
  For Each Zelle In Target
   ->eine Zelle der Spalte 2 ?
    If Zelle.Column = 2 Then
     ->Zeilennummer feststellen
      l_row = Zelle.Row
     ->Zeile auf dem Blatt->Anforderung' ein-/ausblenden
      If Zelle.Value > 0 Then
        Worksheets(c_Name_Anforderung).Rows(l_row).Hidden = False
      Else
        Worksheets(c_Name_Anforderung).Rows(l_row).Hidden = True
      End If
    End If
  Next
UndTschuess:
End Sub


5) VB-Editor schliessen mit Alt+Q
6) Excel-Datei speichern und ausprobieren


Gruß Matjes :)
 
  • #3
Hallo Matjes,

hat super funktioniert !

thx
 
Thema:

Hilfe bei Excel Makro

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.959
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben