Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1508to1512
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

Makro Daten eintragen läuft nicht

Makro Daten eintragen läuft nicht
09.08.2016 17:40:35
Annette
Nochmal Hallo,
dankdersuper schnellen Hilfe heute morgen und vielen Stunden rumprobieren sind schon einige Probleme gelöst,aber nun habe ich eins da komme ich nicht weiter.
1. Versuch mit Makrorekorder ging garnicht
Dann eben eine sehr alte Datei rausgesucht und Marko kopiert, soweit so gut, Anpassung an neue Datei eigentlich recht gut gelungen, aber trotzdem geht es nicht.
1. Tabelle mit Eingabemaske
2. Tabelle mit Mitgliedsdaten und dann die Daten leeren auf Tabelle 1
Ich möchte durch die Eingabe auf Tabelle 1 in den Spalten c11,e11 unf g11 Zahlen in Tabelle 2 in die Spalten G,H,I eintragen.
Sollten eigentlich kein Problem sein,aber es klappt nicht.
Dabei sollen auch vorhandene Daten addiert werden also Lagerbestand erhöht.
Mein Makro sieht jetzt schon so aus:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myRange As Range
If (Target.Address = "$c$11" or Target.Address = "$e$11" or Target.Address = "$g$11")
And Trim(Target.Text)  "" And Not IsError(Cells(11, 3).Value) Then
With Worksheets("Mitgliedsdaten")
If .FilterMode Then .ShowAllData
Set myRange = .Columns(1).Find(What:=Cells(6, 3).Value, _
LookAt:=xlWhole, LookIn:=xlValues)
If Not myRange Is Nothing Then
If Target.Row = 11 Then .Cells(myRange.Row, 7).Value = _
.Cells(myRange.Row, 7).Value - Target.Value _
Else .Cells(myRange.Row, 7).Value = _
.Cells(myRange.Row, 7).Value Target.Value
Else
MsgBox "Wert " & Cells(6, 3).Value & " nicht in der Tabelle.", 16, "Fehler"
End If
End With
Else
If Target.Address = "$c$6" Then
Application.EnableEvents = False
Cells(11, 3).Value = 0
Cells(11, 5).Value = 0
Cells(11, 7).Value = 0
Application.EnableEvents = True
End If
End If
End Sub

Da scheite ich nun völlig.
Danke Annette

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Daten eintragen läuft nicht
09.08.2016 19:19:56
ChrisL
Hi Annette
Mit Beispieldatei wäre es einfacher, aber ich versuche mal zu helfen.
Hier der m.E. entscheidende Codeteil:
If Target.Row = 11 Then .Cells(myRange.Row, 7).Value = _
.Cells(myRange.Row, 7).Value - Target.Value _
Else .Cells(myRange.Row, 7).Value = _
.Cells(myRange.Row, 7).Value Target.Value
Die If...Then Abfrage ist überflüssig. Da du bereits auf Zellen C11, E11, G11 eingeschränkt hast, wäre es doppelt gemoppelt.
Womit wir bei folgendem Ersatz-Code wären (eine Zeile reicht):
.Cells(myRange.Row, 7).Value = .Cells(myRange.Row, 7).Value + Target.Value

Die Nummer 7 steht für die 7. Spalte (= Buchstabe G)
+ für addieren
Falls es nicht funktioniert, setze mal einen Haltepunkt oder mach...
MsgBox "Test"
... eine Zeile vorher um zu testen, ob die Codezeile überhaupt durchläuft (andernfalls wäre der Fehler vermutlich in der ersten Wenn-Bedingung)
viel Erfolg, cu
Chris
Anzeige
AW: Makro Daten eintragen läuft nicht
09.08.2016 19:26:36
ChrisL
... noch was...
Set myRange = .Columns(1).Find(What:=Cells(6, 3).Value, _
LookAt:=xlWhole, LookIn:=xlValues)
Inhalt von Tabelle1!C6 in Tabelle2 Spalte A suchen ist korrekt?
AW: Makro Daten eintragen läuft nicht
10.08.2016 06:24:33
Annette
Guten Morgen an Alle Frühaufsteher.
danke an ChrisL für die Hilfe. Habe alles geändert aber es stoppt schon am Anfrang.
Habe mal eine Testdatei erstellt und hochgeladen:
https://www.herber.de/bbs/user/107516.xlsm
danke
Annette
AW: Makro Daten eintragen läuft nicht
10.08.2016 08:16:00
Bastian
Hallo Annette ich würde das nicht über die Worksheet_Change starten da du bei der eingabe von gold,silber,bronze immer wieder den Wert Addierst du willst aber bestimmt nur einmal alle eingeben und dann die werte in die Mitgliedsdaten übertragen ?
Nun ja wie auch immer =D Hier der Code so wie du es wolltest du Musst die Targets Addressen Groß schreiben
Gruß Basti
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myRange As Range
Dim WsE As Worksheet
Dim WsM As Worksheet
Set WsE = ThisWorkbook.Worksheets("Eingabemaske")
Set WsM = ThisWorkbook.Worksheets("Mitgliedsdaten")
If (Target.Address = "$C$11" Or Target.Address = "$E$11" Or Target.Address = "$G$11") And  _
Trim(Target.Text)  "" And Not IsError(Cells(11, 3).Value) Then
With WsM
If .FilterMode Then .ShowAllData
Set myRange = .Columns(2).Find(What:=WsE.Cells(6, 3).Value, _
LookAt:=xlWhole, LookIn:=xlValues)
If Not myRange Is Nothing Then
.Cells(myRange.Row, 7).Value = .Cells(myRange.Row, 7).Value + WsE.Range("C11"). _
Value
.Cells(myRange.Row, 8).Value = .Cells(myRange.Row, 8).Value + WsE.Range("E11"). _
Value
.Cells(myRange.Row, 9).Value = .Cells(myRange.Row, 9).Value + WsE.Range("G11"). _
Value
Else
MsgBox "Wert " & WsE.Cells(6, 3).Value & " nicht in der Tabelle.", 16, "Fehler"
End If
End With
Else
If Target.Address = "$C$6" Then
Application.EnableEvents = False
Cells(11, 3).Value = 0
Cells(11, 5).Value = 0
Cells(11, 7).Value = 0
Application.EnableEvents = True
End If
End If
End Sub

Anzeige
AW: Makro Daten eintragen läuft nicht
10.08.2016 08:17:07
ChrisL
Hi Annette
Die Zeile muss so lauten:

If (Target.Address = "$c$11" Or Target.Address = "$e$11" Or Target.Address = "$G$11") _
And Trim(Target.Text)  "" And Not IsError(Cells(11, 3).Value) Then
cu
Chris
AW: Makro Daten eintragen läuft nicht
10.08.2016 16:03:33
Annette
Hallo an ALle,
danke für die Hilfe.
Habe den Code von Basti eingetragn und damit läuft es schon mal weiter aber bei der Adition auf der zweiten Tabelle macht es Fehler.
Gebe überall 100 ein und es wird übertragen 300, 200, 100 das würde entsprechen 3x100,2x100,1x100. Also habe ich noch einen Fehler drin er addiert an falscher Stelle.
https://www.herber.de/bbs/user/107536.xlsm
AUsserdem würde ich gerne nach der Eintragung die Zellen löschen.
Habe mit dem Makrorekorder mit das zur Hilfe geholt:
Range("C11,E11,G11,C6").Select
Selection.ClearContents
Wo kann ich das zwischendurch eintragen? Kurz vor Sub End klappt es nicht. Möchte verhindern dass die nächsten Daten dann falsch sind bei nächster Eintragung oder beim nächsten Öffnen.
Bin schon mal froh nicht so ganz falsch alles gemacht zu haben.
Anzeige
AW: Makro Daten eintragen läuft nicht
10.08.2016 16:11:36
ChrisL
Hi Annette
Probier mal...
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myRange As Range
Dim WsE As Worksheet
Dim WsM As Worksheet
Set WsE = ThisWorkbook.Worksheets("Eingabemaske")
Set WsM = ThisWorkbook.Worksheets("Mitgliedsdaten")
If (Target.Address = "$C$11" Or Target.Address = "$E$11" Or Target.Address = "$G$11") And _
Trim(Target.Text)  "" And Not IsError(Cells(11, 3)) Then
With WsM
If .FilterMode Then .ShowAllData
Set myRange = .Columns(2).Find(What:=WsE.Cells(6, 3), _
LookAt:=xlWhole, LookIn:=xlValues)
If Not myRange Is Nothing Then
.Cells(myRange.Row, 7) = .Cells(myRange.Row, 7) + WsE.Range("C11")
.Cells(myRange.Row, 8) = .Cells(myRange.Row, 8) + WsE.Range("E11")
.Cells(myRange.Row, 9) = .Cells(myRange.Row, 9) + WsE.Range("G11")
Call loeschen
Else
MsgBox "Wert " & WsE.Cells(6, 3) & " nicht in der Tabelle.", 16, "Fehler"
End If
End With
Else
If Target.Address = "$C$6" Then Call loeschen
End If
End Sub

Private Sub loeschen()
On Error Resume Next
Application.EnableEvents = False
Cells(11, 3) = 0
Cells(11, 5) = 0
Cells(11, 7) = 0
Application.EnableEvents = True
End Sub

cu
Chris
Anzeige
AW: Makro Daten eintragen läuft nicht
10.08.2016 16:25:14
Bastian
Ganu das habe ich damit gemeint Dein Makro dürfte erst Starten wenn der letzt (G11) gefüllt wurde sonst ist das klar weil bei jeder eingabe das Makro gestartet wird ;)
AW: Makro Daten eintragen läuft nicht
10.08.2016 17:31:50
Annette
Danke vielmals,
habe den Code eingetragen und jetzt startet Makro tatsächlich nach jeder Eingabe,besser wäre es aber wenn ich erst alle drei eintragen würde, denn das kommt immer vor.
Wie kann ich das ändern?
LG Annette
AW: Makro Daten eintragen läuft nicht
11.08.2016 08:24:31
ChrisL
Hi Annette
Oder so...
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myRange As Range
Dim WsE As Worksheet
Dim WsM As Worksheet
Set WsE = ThisWorkbook.Worksheets("Eingabemaske")
Set WsM = ThisWorkbook.Worksheets("Mitgliedsdaten")
If (Target.Address = "$C$11" Or Target.Address = "$E$11" Or Target.Address = "$G$11") And _
Trim(Target.Text)  "" And Not IsError(Cells(11, 3)) And _
WorksheetFunction.CountIf(WsE.Range("C11:G11"), 0) = 0 Then
With WsM
If .FilterMode Then .ShowAllData
Set myRange = .Columns(2).Find(What:=WsE.Cells(6, 3), _
LookAt:=xlWhole, LookIn:=xlValues)
If Not myRange Is Nothing Then
.Cells(myRange.Row, 7) = .Cells(myRange.Row, 7) + WsE.Range("C11")
.Cells(myRange.Row, 8) = .Cells(myRange.Row, 8) + WsE.Range("E11")
.Cells(myRange.Row, 9) = .Cells(myRange.Row, 9) + WsE.Range("G11")
Call loeschen
Else
MsgBox "Wert " & WsE.Cells(6, 3) & " nicht in der Tabelle.", 16, "Fehler"
End If
End With
Else
If Target.Address = "$C$6" Then Call loeschen
End If
End Sub
Private Sub loeschen()
On Error Resume Next
Application.EnableEvents = False
Cells(11, 3) = 0
Cells(11, 5) = 0
Cells(11, 7) = 0
Application.EnableEvents = True
End Sub

In den 3 Zellen muss als Ausgangslage eine Null stehen. Anschliessend wird die Null dann automatisch zurückgesetzt.
cu
Chris
Anzeige
AW: Makro Daten eintragen läuft nicht
11.08.2016 06:41:54
Annette
Hallo Basti und guten morgen an Alle,
"Hallo Annette ich würde das nicht über die Worksheet_Change starten da du bei der eingabe von gold,silber,bronze immer wieder den Wert Addierst du willst aber bestimmt nur einmal alle eingeben und dann die werte in die Mitgliedsdaten übertragen ?"
Basti hat geschrieben nicht über Worksheet_Change start aber worüber besser dann?
Wäre es besser ein Modul zu machen und mit einer Combotaste Makro zu starten?
Danke
Annette
AW: Makro Daten eintragen läuft nicht
11.08.2016 07:23:35
Bastian
Ja du Könntest es in eine Modul machen aber dann muss der aufbau anders sein . Oder du machst es einfach so wenn du immer die 3 Felder ausfüllen musst Startet das Makro erst wenn du bei Bronze etwas eingegeben hast
Gruß Basti
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myRange As Range
Dim WsE As Worksheet
Dim WsM As Worksheet
Set WsE = ThisWorkbook.Worksheets("Eingabemaske")
Set WsM = ThisWorkbook.Worksheets("Mitgliedsdaten")
If (Target.Address = "$G$11") And _
Trim(Target.Text)  "" And Not IsError(Cells(11, 3).Value) Then
With WsM
If .FilterMode Then .ShowAllData
Set myRange = .Columns(2).Find(What:=WsE.Cells(6, 3).Value, _
LookAt:=xlWhole, LookIn:=xlValues)
If Not myRange Is Nothing Then
.Cells(myRange.Row, 7).Value = .Cells(myRange.Row, 7).Value + WsE.Range("C11").  _
_
Value
.Cells(myRange.Row, 8).Value = .Cells(myRange.Row, 8).Value + WsE.Range("E11").  _
_
Value
.Cells(myRange.Row, 9).Value = .Cells(myRange.Row, 9).Value + WsE.Range("G11").  _
_
Value
Else
MsgBox "Wert " & WsE.Cells(6, 3).Value & " nicht in der Tabelle.", 16, "Fehler"
End If
End With
Else
If Target.Address = "$C$6" Then
Application.EnableEvents = False
Cells(11, 3).Value = 0
Cells(11, 5).Value = 0
Cells(11, 7).Value = 0
Application.EnableEvents = True
End If
End If
End Sub

Anzeige
AW: Makro Daten eintragen läuft nicht
11.08.2016 16:55:20
Annette
erst einmal wieder super danke, alles läuft perfekt.
Wenn ich doch mal so fit wär, aber die Hoffnung stirb zum Schluss.
Trotzdem tritt jetzt die Frage auf , was mache ich wenn eine Farbe nicht erwünscht wird, denn Null nimmt er nicht an.
Gibt es dafür auch eine Lösung?.
danke
Annette
AW: Makro Daten eintragen läuft nicht
11.08.2016 18:19:40
ChrisL
Hi Annette
Nochmal...
Variante 1
Bei jeder Eingabe wird einzeln übertragen und zurück auf Null gesetzt
https://www.herber.de/forum/messages/1508690.html
Variante 2
Nach Eingabe aller 3 Felder wird übertragen und auf Null zurück gesetzt
https://www.herber.de/forum/messages/1508757.html
Variante 3
Eine Schaltfläche auf die du manuell drücken musst, dann wird Übertragen und auf Null zurück gesetzt
Wir oder ich können dir auch noch einen Code für V3 erstellen, aller guter Dinge sind drei, aber wäre halt schön, wenn du dich final entscheiden könntest ;)
cu
Chris
Anzeige
AW: Makro Daten eintragen läuft nicht
12.08.2016 06:20:43
Annette
Gutem Morgen Chrios und alle Anderen,
Du hast Recht Chris man muss sich entscheiden und deshalb werde ich es bei Variante 1 lassen damit kann ich am besten leben.
Danke für die Hilfend bis zum nächten Problem,was hoffentlich auf sich warten lässt
LG Annette

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige