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

Code ändern

Code ändern
10.04.2016 16:07:08
Andre
Hallo
Ich möchte meinen Code ändern so das die Spalte D bis F nach grösser 0 abgefragt werden desweiteren soll im gleichen zug nach dem Kopieren ins Grundbuch im Tabellenblatt "Jahresauswertung" die Zahlen im passenden Monat eingetragen und immer addiert werden.Ich habe ein Beispieltabelle hochgeladen.
Ich hoffe Ihr könnt mir helfen und bedanke mich schon mal im vorraus
https://www.herber.de/bbs/user/104868.xlsm

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code ändern
10.04.2016 20:55:13
Fennek
Hallo,
da bis jetzt niemand geantwortet hat, möchte ich vorschlagen, die Datei im xlsx-Format ("Trusty") hochzuladen und das Makro als Text hier im Fenster als Text zu zeigen.
Mfg

AW: Code ändern
10.04.2016 22:12:27
Andre
Hallo Fennek
Das ist der Code denn ich jetzt verwende
Private Sub CommandButton1_Click()
Dim i As Long, myLastRow2 As Long
Dim wksQ As Worksheet, wksZ As Worksheet
Set wksQ = Worksheets("Hilfstabelle")
Set wksZ = Worksheets("Grundbuch")
With wksQ.Range("A1").CurrentRegion
.AutoFilter Field:=4, Criteria1:=">0"
i = Intersect(.SpecialCells(xlVisible), .Columns(1)).Count - 1
If i > 0 Then
Application.ScreenUpdating = False
myLastRow2 = Application.Max(4, wksZ.Cells(Rows.Count, 3).End(xlUp).Row + 1)
.Range("A2:F" & .Cells(Rows.Count, 3).End(xlUp).Row).SpecialCells(xlVisible).Copy
wksZ.Range("C" & myLastRow2).PasteSpecial Paste:=xlValue
wksZ.Range("B" & myLastRow2).Resize(wksZ.Cells(Rows.Count, 3).End(xlUp).Row - _
myLastRow2 + 1, 1) = Date
End If
Application.CutCopyMode = False
.AutoFilter
End With
Application.ScreenUpdating = True
Set wksQ = Nothing
Set wksZ = Nothing
End Sub

Anzeige
AW: Code ändern
10.04.2016 23:44:22
Fennek
Hallo,
für jemanden, der "kaum vba-Kenntsisse" angibt, ist der Code richtig gut. Ich konnte ihn, mit Ausnahme der Zeile "=date" nachvollziehen.
Zu der ursprünglichen Frage, "die Spalte D-F auf Werte >0 zu prüfen", habe ich ein kleines Makro geschrieben.
Da ich die .xlsx nicht kenne, konnte ich die zweite Frage nicht beantworten.
Alle Zellen mit Werten >0 werden im debug-Fenster ausgegeben (falls nicht sichtbar: strg-g im vba-Fenster)

Sub sAndre()
Dim rng as range
Dim ar
With activesheet.columns("d:f")
Set rng = .specialcells(2,1)
Redim ar(rng.count)
For each c in rng
i = i +1
ar(i) = c.address & ", " & sgn(c.value)
Next c
arF = filter(ar, "-", false)
For i = 1 to ubound(arF)
Debug.print split(arF(i), ",")(0)
Next i
End with
End sub
Mfg

Anzeige
AW: Code ändern
11.04.2016 09:11:26
Andre
Hallo Fennek
erstmal Danke für deine Hilfe
Ich hatte vor einiger Zeit schon mal eure Hilfe beansprucht genommen daraus ist der Code. Ihr hier im Forum seid echt genial.
vielen Dank nochmal

AW: Code ändern
11.04.2016 09:41:02
hary
Moin
Teste mal.Es wird eine Hilfsspalte(I)erstellt und wieder gloescht.
Private Sub CommandButton1_Click()
Dim i As Long, myLastRow2 As Long, Monat As Long
Dim Zelle As Range
Dim a As Variant
Dim wksQ As Worksheet, wksZ As Worksheet, wksJahr As Worksheet
Set wksQ = Worksheets("Hilfstabelle")
Set wksZ = Worksheets("Grundbuch")
Set wksJahr = Worksheets("Jahresauswertung")
Application.ScreenUpdating = False
wksQ.Range("G1") = "Hilfsspalte"
wksQ.Range("G2:G" & wksQ.Cells(Rows.Count, 1).End(xlUp).Row).FormulaLocal = "=SUMME(D2:F2)"
With wksQ.Range("A1").CurrentRegion
.AutoFilter Field:=7, Criteria1:=">0"
i = Intersect(.SpecialCells(xlVisible), .Columns(1)).Count - 1
If i > 0 Then
myLastRow2 = Application.Max(4, wksZ.Cells(Rows.Count, 3).End(xlUp).Row + 1)
.Range("A2:F" & .Cells(Rows.Count, 3).End(xlUp).Row).SpecialCells(xlVisible).Copy
wksZ.Range("C" & myLastRow2).PasteSpecial Paste:=xlValue
wksZ.Range("B" & myLastRow2).Resize(wksZ.Cells(Rows.Count, 3).End(xlUp).Row -  _
myLastRow2 + 1, 1) = Date
Monat = Month(wksZ.Range("B4"))
For Each Zelle In wksZ.Range("C4:C" & wksZ.Cells(Rows.Count, 3).End(xlUp).Row)
a = Application.Match(Zelle, wksJahr.Columns(1), 0)
If IsNumeric(a) Then
wksJahr.Cells(a, 3 * Monat + 1) = wksJahr.Cells(a, 3 * Monat + 1) + Zelle. _
Offset(, 3)
wksJahr.Cells(a, 3 * Monat + 2) = wksJahr.Cells(a, 3 * Monat + 2) + Zelle. _
Offset(, 4)
wksJahr.Cells(a, 3 * Monat + 3) = wksJahr.Cells(a, 3 * Monat + 3) + Zelle. _
Offset(, 5)
End If
Next
End If
Application.CutCopyMode = False
.AutoFilter
End With
wksQ.Columns(7).Clear
Application.ScreenUpdating = True
Set wksQ = Nothing
Set wksZ = Nothing
End Sub

Anzeige
AW: Hilfsspalte ist SpalteG gruss owT
11.04.2016 09:43:39
hary
.

AW: Hilfsspalte ist SpalteG gruss owT
11.04.2016 19:54:27
Andre
Hallo Hary
erstmal Herzlichen Dank für deine Mühe Hary
Der Code ist super:)
Habe nur ein Proplem ich hatte mich falsch ausgedrückt bei der Jahresübersicht da sollte immer addiert werden aber ich meinte das die Summe des jeweiligen Artikel im Monat aus dem Grundbuch dort erscheint.
Über einen neuen Tipp würde ich mich sehr freuen.

AW: Frage
12.04.2016 06:17:58
hary
Moin
Also wird im Grundbuch nicht nur ein Tag eingetragen sondern fortlaufend.
Bsp.: heute wird ins Grundbuch uebernommen(12.4.) und morgen wird darunter mit Datum 13.4 eingetragen?
Bis der Monat voll ist oder das ganze Jahr?
Erklaer mal.
gruss hary

Anzeige
AW: Frage
12.04.2016 07:25:38
Andre
Morgen Hary
erstmal vielen Dank
Im Grundbuch werden jeden Tag das ganze Jahr Artikel aus der Hilfstabelle eingetragen.
In der Jahresübersicht soll die Summe wie oft der Artikel im Monat als Eingang, Entsorgt oder Ausgeliefert eingetragen wurden.
Ich hoffe du kannst damit was anfangen und vielen Dank nochmal
gruss Andre

AW: Teste mal
12.04.2016 20:59:35
Andre
Hallo Hary
vielen Dank für deine Mühe echt super wie du das hin bekommen hast.Genauso meinte ich das echt klasse
nur eins es dauert ziehlich lange bis er alles abgearbeitet hat vieleicht hast du noch tipp wie hinbekomme das es schneller geht.Es sind ca. 1500 Artikel die er durchsuchen muss.
gruss Andre
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige