Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
972to976
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
972to976
972to976
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Eine Zeile weniger falsches Ergebnis

Eine Zeile weniger falsches Ergebnis
30.04.2008 20:20:00
Becker
Hallo liebes Forum,
Hallo Profis, ich ersuche um Eure Hilfe:
Code Beschreibung:
- in „A-Quelle“ Tabelle sind Produkte (ab Zeile 12) in Spalte A-Artikel Nummer Spalte B-Produkt Name
- Spalte C-Verbrauchte Menge und Spalte D-Summen Beträge
- in „B-ZielTabelle“ wird das ganze addiert, auch ab Zeile A12, nach Lager Häuser.
- In „C-LagerHaus“ Tabelle sind die Artikel Nummer
Der untere Code funktioniert einwandfrei.
Mein Problem ist das die alte Kopf Zeile (A1:F11) sich um eine Zeile verkürzt hat und jetzt ist die neue Kopf Zeile (A1:F10).
Und wenn eine Zeile gelöscht wird dann wird immer der erste Lager Haus übersprungen.
Meines Wissens nach (bin der Anfänger in VBA) habe ich im Code dementsprechend die Veränderung vorgenomen in Zeilen Bereich
Und es wird leider immer der erste Lager Haus übersprungen bzw. es wird nicht dazugezahlt. Da ändere ich im Code;
- Von “wksB.Range("C12:D23").ClearContents” nach “wksB.Range("C11:D22").ClearContents”
- Von “iRow = 12” nach “iRow = 11”
- Von “For iRow = 12 To 23” nach “For iRow = 11 To 22”
- Meine Frage an Euch habe ich noch was im „SetSums2 ausgelassen?
Und mit dieser Veränderung läuft es nicht mehr richtig bzw. es wird immer der „LagerHaus1“ übersprungen.
Muß noch was im Code verändert werden sobald man eine Zeile (in Zeilen Bereich A1:F11) löscht dann ist der neue Kopfzeile A1:F10.?
Leider sind meine Kenntnisse in VBA noch extrem begrenzt.
Ich Danke Euch für Euer Mühen
Netten Gruß
Daniel

Sub SetSums()
Dim wksA As Worksheet, wksB As Worksheet, wksC As Worksheet
Dim iRow As Integer, iRowT As Integer
Set wksA = Worksheets("A-Quelle")
Set wksB = Worksheets("B-ZielTabelle")
Set wksC = Worksheets("C-LagerHaus")
wksB.Range("C12:D23").ClearContents
iRow = 12
Do Until Not IsNumeric(wksA.Cells(iRow, 1).Value)
iRowT = wksC.Cells(WorksheetFunction.Match(wksA.Cells(iRow, 1).Value, wksC.Columns(3), -1) _
_
, 1).Value + 2
wksB.Cells(iRowT, 3).Value = wksB.Cells(iRowT, 3).Value + wksA.Cells(iRow, 3).Value
wksB.Cells(iRowT, 4).Value = wksB.Cells(iRowT, 4).Value + wksA.Cells(iRow, 4).Value
iRow = iRow + 1
Loop
For iRow = 12 To 23
If wksB.Cells(iRow, 3).Value = 0 Then
wksB.Rows(iRow).Hidden = True
Else
wksB.Rows(iRow).Hidden = False
End If
Next iRow
End Sub


10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eine Zeile weniger falsches Ergebnis
30.04.2008 20:40:00
Renee
Hi Daniel,
Meine Frage an Euch habe ich noch was im „SetSums2 ausgelassen?
Ja, nämlich das, was du vorher so schön gemacht hast, nämlich
Alle 12 durch 11 ersetzt und
alle 23 durch 22
GreetZ Renée

AW: Eine Zeile weniger falsches Ergebnis
30.04.2008 22:17:00
Becker
Grützi Renee,
vielen Dank für Deien Anweisung. Mit Deinem Vorschlag bekomme ich Laufzeitfehler 1004 und zwar ab hier
"wksB.Range("C12:D23").ClearContents".
Der Code funktioniert Fehlerfrei wenn man Kopfzeilen Anzahl A1:F11 ist und die Artikel Nummer fangen in alle zwei Tabellen ab A12 („A-Quelle“, „B-ZielTabelle“).
Meine Problem; Der Kopfzeilen Anzahl hat sich um eine Zeile reduziert. So jetzt ist der Kopzeilen Anzahl A1:F10, jezt kommt das Problemm und die Artikel Nummer fangen nicht mehr in A12 an sonder von A11:A22.
Daher mein Beispiel was ich verändert habe;
- Von “wksB.Range("C12:D23").ClearContents” nach “wksB.Range("C11:D22").ClearContents”
- Von “iRow = 12” nach “iRow = 11”
- Von “For iRow = 12 To 23” nach “For iRow = 11 To 22”
Und nach dieser Veränderung wird immer der erste Lager Haus übersprungen.
Daher habe ich leider nicht so viel Ahnung ob ich noch was ausgelassen habe?
Mein lezte Weg ist daß man nur eine Zeile in Bereich (A1:F11) ausblendt (was nicht erwünscht ist).
Da ich der Anfänger bin kann ich es mir nicht erklären ob und wo soll was verändert werden damit es funkioniert wie gewünscht.
Daher bitte ich Euch um weitere Nachhilfe oder Hinweise.
Gruß
Daniel

Anzeige
AW: Eine Zeile weniger falsches Ergebnis
30.04.2008 22:22:52
Renee
Hoi Daniel,
Da ich der Anfänger bin kann ich es mir nicht erklären ob und wo soll was verändert werden damit es funkioniert wie gewünscht.
Das ist keine Schande. Wenn wir helfen können tun wir es. Es wäre aber in deinem Fall viel besser, wir hätten eine (anonymisierte) Beispielmappe mit dem Code, oder wenigstens eine Kopie des gesamten Codes, mit einer Beschreibung, wo sich der Code befindet (Tabelle, Arbeitsmappe, Modul).
GreetZ Renée

AW: Eine Zeile weniger falsches Ergebnis
01.05.2008 03:09:56
Becker
Hallo Renee,
Hier die Beispiels Mappe die auskommentiert ist. Bin wirklich gespannt.
https://www.herber.de/bbs/user/51996.xlsm
Ich danke im voraus für jede Hilfe und kommende Anweisungen
Gruß Daniel

Anzeige
AW: Eine Zeile weniger falsches Ergebnis
01.05.2008 09:28:00
Renee
Hi Daniel,
Leider habe ich kein Excel 2007, ich muss mich noch mit XP2000 begnügen.
Kannst du die Beispielmappe als niedriegere Version und .xls hier reinstellen?
GreetZ Renée

AW: Eine Zeile weniger falsches Ergebnis
01.05.2008 12:12:00
Renee
Hi Daniel,
1. Subroutine durch diese ersetzen:

Sub SetSums()
Dim wksA As Worksheet, wksB As Worksheet, wksC As Worksheet
Dim iRow As Integer, iRowT As Integer
Set wksA = Worksheets("Quelle")
Set wksB = Worksheets("ZielTabelle")
Set wksC = Worksheets("LagerHäuser")
wksB.Range("C11:D22").ClearContents
iRow = 12
Do Until Not IsNumeric(wksA.Cells(iRow, 1).Value)
iRowT = wksC.Cells(WorksheetFunction.Match(wksA.Cells(iRow, 1).Value, wksC.Columns(3), -1) _
, 1).Value + 2
wksB.Cells(iRowT - 1, 3).Value = wksB.Cells(iRowT - 1, 3).Value + wksA.Cells(iRow, 3). _
Value
wksB.Cells(iRowT - 1, 4).Value = wksB.Cells(iRowT - 1, 4).Value + wksA.Cells(iRow, 4). _
Value
iRow = iRow + 1
Loop
For iRow = 11 To 22
If wksB.Cells(iRow, 3).Value = 0 Then
wksB.Rows(iRow).Hidden = True
Else
wksB.Rows(iRow).Hidden = False
End If
Next iRow
End Sub


2. Zeile löschen.
3. Go!
GreetZ Renée

Anzeige
AW: Eine Zeile weniger falsches Ergebnis
01.05.2008 16:10:00
Becker
Hallo Renee,
Wahnsinn....., Renee Du bringst mich zum Staunen :-O )
Danke Dir vielen, vielen mal daß Du mir geholfen hast.
Renee Du hast es aufs genauste getroffen, wie ich es mir vorgestellt habe.
Ich versuche es zu verstehen;
-verstehe ich richtig die Anweisungen dass in den Befehlen "wksB.Cells(iRowT - 1, 3)" immer um einen "-1"
substrahiert wird?
Nochmals Danke Dir für die Mühe.
Neten Gruß
Daniel

AW: Eine Zeile weniger falsches Ergebnis
01.05.2008 10:20:50
Uduuh
Hallo,
warum lässt du die Zeile nicht drin und blendest sie einfach aus?
Gruß aus’m Pott
Udo

Anzeige
AW: Eine Zeile weniger falsches Ergebnis
01.05.2008 12:08:12
Becker
Hallo Udo,
Den Vorschlag habe ich schon angesprochen.
warum lässt du die Zeile nicht drin und blendest sie einfach aus?
In die Tabellen habe ich noch einige Funktionen (Formel, Kopf A1:F10 und Fuß Zeilen Bereich) der dementsprechend geändert sein sollte. Und die 2 Tabellen (Quell und ZielTabelle) sind wieder mit anderen Mappen verknüpft und in die anderen Mappen sind wieder die Makros die was damit zu tun habe.
Wenn man hier keine Lösung findet, dann muss ich mir den Rest mit ausgeblendete Zeile anpassen.
Daher dachte ich eine Frage in Profi Forum kann nicht schaden.
Mit Euer Profi Hilfe vielleicht erspare ich mir den Arbeit von ein paar Tagen bis es alles richtig angespasst wurde.
Bin Neuling in VBA Welt. Meiner Meinung nach dachte ich es genüge in den Code nur die Zeilen Anwesungen richtig anzupassen. Was ich aber auch getan habe und trotzdem kann ich nicht verstehen ob noch was ausgelassen wurde. Wenn ja was und wo?
Ich danke Dir für Deine nette Anweisung.
Netten Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige