Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Werte zuordnen

VBA Werte zuordnen
09.12.2014 09:11:17
Hans
Halli und Hallo!
Ich schreibe mir gerade eine Wiegeprogram mit Excel und stehe vor einem kleinem Problem für das ich eure Hilfe brauche:
Ich möchte dass ich bei jedem Wiegevorgang das Gewicht des LKWs in eine Tabelle eingetragen wird, sodass ich einen Überblick über die Lagerbestände habe.
Ich habe einen Button eingerichtet der den Wert einer Zelle "E15" (das Gewicht) in eine Tabelle schreibt.
Soweit kein Problem:
Private Sub CommandButton2_Click()
Range("E15").Copy
Worksheets("Lager").Range("C3").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
End Sub
allerdings muss er ja beim nächste Wiegevorgang nicht mehr in "C3" schreiben sondern in C4 usw usf. Also immer in die nächste freie Zeile. Wenn ich die Tabelle reinige soll er natürlich wieder soweit "oben" wie möglich anfangen.
Außerdem steht in der Zelle Template!B13 um welche Art von Ware es sich handelt (kann man per Dropdown auswählen). Hier muss erst geprüft werden um was es sich, sodass er unter umständen nicht bei Lager!C3 sondern bei Lager!D3 anfängt die Lagertabelle zu füllen.
Ich hoffe ich konnte mein Problem halbwegs anschaulich darstellen und freue mich auf konstruktive Antworten!
Beste Grüße

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Werte zuordnen
09.12.2014 09:54:49
Simon
Guten Morgen
für dein Grundproblem könntest du (glaube ich) das Programm nehmen:

Sub kopieren()
Dim ws As Worksheet
Dim varlauf As Long
Dim speicher As String
Set ws = Worksheets("Lager")
speicher = Cells(15, 5)
With ws
For varlauf = 1 To ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row
If .Cells(varlauf, 3)  "" Then
.Cells(varlauf, 3) = speicher
End If
Next varlauf
End With
End Sub
aber ich verstehe nicht ganz was du mit dem zweiten Teil
Außerdem steht in der Zelle Template!B13 um welche Art von Ware es sich handelt (kann man per Dropdown auswählen). Hier muss erst geprüft werden um was es sich, sodass er unter umständen nicht bei Lager!C3 sondern bei Lager!D3 anfängt die Lagertabelle zu füllen.
meinst
Mit freundlichen Grüßen
Simon

Anzeige
AW: VBA Werte zuordnen
09.12.2014 10:06:24
Hans
Hey Simon!
Vielen Dank für die schnelle Hilfe. Ich werde es sofort ausprobieren.
Kurz zu deiner Frage: ich möchte das er zunächst den Wert der Zelle Template!B13 prüft und dann abhängig von dem Ergebnis in dem Lager Worksheet in die korrekte Spalte schreibt. Ich überlege gerade das mit Makros zu machen:
=WENN(Template!$B$13="WareA";Makro1_start();)
=WENN(Template!$B$13="WareB";Makro2_start();)
=WENN(Template!$B$13="WareC";Makro3_start();)
Makro1 würde dann in "Lager" Spalte C kopieren, Makro2 in Spalte D usw usf

Anzeige
AW: VBA Werte zuordnen
09.12.2014 10:15:37
hary
Moin
Du brauchst nicht fuer jede Ware ein Makro.
Wir muessten deinen Tabellenaufbau kennen.
Wenn du aus dem Blatt "Template" rausziehst und im Blatt "Lager" in Zeile 3 sind die Ueberschriften.
Dann so.
Sub rueber()
Dim wksQ As Worksheet
Dim wksZ As Worksheet
Dim letzte As Long
Dim a As Variant
Set wksQ = Worksheets("Template")
Set wksZ = Worksheets("Lager")
a = Application.Match(wksQ.Range("B13"), wksZ.Rows(3), 0)
If IsNumeric(a) Then
letzte = wksZ.Cells(Rows.Count, a).End(xlUp).Row + 1
wksQ.Range("E15").Copy
wksZ.Cells(letzte, a).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End If
End Sub

gruss hary

Anzeige
AW: VBA Werte zuordnen
09.12.2014 10:24:49
Hans
Hey Hary!
danke auch dir. Ich versuche nochmal etwas besser zu erklären:
In der Zelle Template!E15 steht das Gewicht des LKWs.
In der Zelle Template!B13 kann ich per Dropdown die Ware auswählen (es gibt nur 3 verschiedene).
Wenn Template!B13 = WareA soll er in "Lager" Spalte C das Gewicht aus Template!E15 schreiben.
Wenn Template!B13 = WareB soll er in "Later" Spalte D das Gewicht aus Template!E15 schreiben usw.
Innerhalb der Lagerspalten muss er aber immer noch prüfen welche die letzte freie Zeile in der jeweiligen Spalte ist, sodass er jedem "Buttonklick" nach unten die Gewichte der LKWs fortschreibt

Anzeige
AW: VBA Werte zuordnen
09.12.2014 10:30:35
hary
Moin
Ja macht der Code:
Sub rueber()
Dim wksQ As Worksheet
Dim wksZ As Worksheet
Dim letzte As Long
Dim a As Variant
Set wksQ = Worksheets("Template")
Set wksZ = Worksheets("Lager")
a = Application.Match(wksQ.Range("B13"), wksZ.Rows(3), 0)  '-- sucht in Zeile 3 die  _
passende Ware
If IsNumeric(a) Then '---wenn gefunden ist das die Spalte
letzte = wksZ.Cells(Rows.Count, a).End(xlUp).Row + 1 '--- gibt die naechste freie in  _
Spalte
wksQ.Range("E15").Copy
wksZ.Cells(letzte, a).PasteSpecial Paste:=xlPasteValuesAndNumberFormats'--kopiert  _
dahin
End If
End Sub

gruss hary

Anzeige
AW: VBA Werte zuordnen
09.12.2014 10:43:19
Hans
Jo funktioniert einwandfrei.
Wahnsinn, vielen Dank!
Echt der Hit was ihr drauf habt.
Problem solved ;)

AW: VBA Werte zuordnen
10.12.2014 15:50:47
Hans
Und holla ich habe dann noch eine weitergehende Frage:
Ich möchte, dass in der Zeile neben dem im "Lager" eingefügten Wert das dazugehörige Datun inkl. Uhrzeit erscheint. Ist das möglich?
Unabhängig davon versuche ich gerade einen Code zu schreiben, der eine bestimmte Zelle jeden Tag wieder auf "1" setzt... Wie kann ich das lösen?
Beste Grüße im Voraus
Hans
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Werte automatisch zuordnen in Excel


Schritt-für-Schritt-Anleitung

Um in Excel Werte automatisch zuzuordnen, kannst du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung, wie du das umsetzen kannst:

  1. Öffne Excel und erstelle zwei Arbeitsblätter: "Template" und "Lager".
  2. In "Template" fügst du die Zellen B13 (für die Ware) und E15 (für das Gewicht) hinzu.
  3. In "Lager" fügst du in Zeile 3 die Überschriften für die verschiedenen Waren ein (z.B. WareA, WareB, WareC).
  4. Füge einen Button hinzu, der den folgenden Code ausführt:
Sub rueber()
    Dim wksQ As Worksheet
    Dim wksZ As Worksheet
    Dim letzte As Long
    Dim a As Variant
    Set wksQ = Worksheets("Template")
    Set wksZ = Worksheets("Lager")

    a = Application.Match(wksQ.Range("B13"), wksZ.Rows(3), 0) ' Sucht die Ware
    If IsNumeric(a) Then ' Wenn die Ware gefunden wurde
        letzte = wksZ.Cells(Rows.Count, a).End(xlUp).Row + 1 ' Nächste freie Zeile
        wksQ.Range("E15").Copy
        wksZ.Cells(letzte, a).PasteSpecial Paste:=xlPasteValuesAndNumberFormats ' Wert einfügen
    End If
End Sub
  1. Klicke auf den Button, um das Gewicht in die entsprechende Spalte zu übertragen.

Häufige Fehler und Lösungen

  • Fehler: "Typen nicht kompatibel"

    • Lösung: Stelle sicher, dass die Zelle B13 im "Template"-Blatt eine gültige Ware enthält, die mit den Überschriften im "Lager"-Blatt übereinstimmt.
  • Fehler: Wert wird nicht in die nächste Zeile eingefügt

    • Lösung: Überprüfe, ob die Zelle in Spalte C, D oder E nicht leer ist. Der Code sucht nach der letzten befüllten Zeile, um das Gewicht korrekt einzufügen.

Alternative Methoden

Falls du keine VBA-Programmierung verwenden möchtest, kannst du auch die Funktion WENN in Excel nutzen, um die Werte manuell zuzuordnen. Beispiel:

=WENN(Template!$B$13="WareA";Template!$E$15;"")

Diese Formel überprüft, ob in B13 "WareA" steht und gibt das Gewicht aus E15 zurück. Diese Methode ist jedoch nicht automatisch und erfordert manuelles Eingreifen.


Praktische Beispiele

Angenommen, du wiegst LKWs mit verschiedenen Waren:

  1. Beispiel für die Verwendung von VBA:

    • Du hast in B13 "WareA" ausgewählt und in E15 steht "1000".
    • Nach dem Klicken des Buttons wird "1000" in die nächste freie Zeile in Spalte C eingefügt.
  2. Beispiel für die Verwendung von Formeln:

    • Du kannst verschiedene Formeln in den Zellen C4, D4, und E4 verwenden, um die Werte manuell zuzuordnen, abhängig von der Auswahl in B13.

Tipps für Profis

  • Verwende die Worksheet_Change-Ereignisprozedur, um die Werte automatisch zuzuordnen, ohne einen Button zu klicken. Dies kann die Benutzerfreundlichkeit erhöhen, da es die Eingabe automatisiert.

  • Erweitere den Code, um auch das Datum und die Uhrzeit neben dem Gewicht zu speichern:

wksZ.Cells(letzte, a + 1).Value = Now ' Fügt das aktuelle Datum und die Uhrzeit hinzu

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass der Code bei jedem Wiegevorgang funktioniert? Stelle sicher, dass das Makro korrekt zugewiesen ist und die richtigen Zellreferenzen verwendet werden.

2. Ist es möglich, mehrere Waren gleichzeitig zu verarbeiten? Ja, du kannst den Code so anpassen, dass er eine Schleife durchführt, um mehrere Daten gleichzeitig zu verarbeiten.

3. Wie setze ich eine Zelle jeden Tag auf "1"? Du kannst ein weiteres Makro erstellen, das beim Öffnen der Arbeitsmappe ausgeführt wird. Verwende dazu:

Private Sub Workbook_Open()
    Worksheets("Template").Range("A1").Value = 1
End Sub

Das wird sicherstellen, dass die Zelle A1 jeden Tag zurückgesetzt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige