MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 08.11.2018, 12:54   #1
Cilli96
Neuer Benutzer
Neuer Benutzer
Standard VBA - Excel 2013 / Summe markierter Zellen in Zwischenablage kopieren

Hallo zusammen,

ich muss einmal monatlich in der Firma die Umsätze und Gewinne aller Produktgruppen berechnen und in eine Liste eintragen. Hierfür markiere ich z.B. von Produktgruppe 25 alle Positionen und trage die Summe dann in eine andere Registerkarte ein.

Alle Positionen stehen untereinander, sodass AutoSumme zu umständlich wäre wenn ich hier immer eine neue Zeile einfüge, dann AutoSumme, dann Zeile wieder löschen...

Ich habe ein VBA gefunden mit dem anscheinend möglich ist, die Zellen zu markieren, dann wird die Summe automatisch in meine Zwischenablage kopiert, dann kann ich es in eine andere Zelle speichern.

Code:

[i]Public Sub CopyStatusFunction() 
Dim Obj             As New DataObject 
Dim ctl             As CommandBarControl 
Dim AWF             As Object 
Dim AutoVal         As Double 
Dim intFormula      As Integer 

    Set AWF = Application.WorksheetFunction 

    intFormula = 0 
    For Each ctl In Application.CommandBars("AutoCalculate").Controls 
        intFormula = intFormula + 1 
        If ctl.State <> 0 Then 
            Exit For 
        End If 
    Next ctl 

    Select Case intFormula 
    Case 2 
        AutoVal = AWF.Average(Selection.SpecialCells(xlCellTypeVisible)) 
    Case 3 
        AutoVal = AWF.CountA(Selection.SpecialCells(xlCellTypeVisible)) 
    Case 4 
        AutoVal = AWF.Count(Selection.SpecialCells(xlCellTypeVisible)) 
    Case 5 
        AutoVal = AWF.Max(Selection.SpecialCells(xlCellTypeVisible)) 
    Case 6 
        AutoVal = AWF.Min(Selection.SpecialCells(xlCellTypeVisible)) 
    Case 7 
        AutoVal = AWF.Sum(Selection.SpecialCells(xlCellTypeVisible)) 
    End Select 

    Obj.SetText AutoVal 
    Obj.PutInClipboard 
    Set Obj = Nothing 

End Sub
Ich habe den Code aktiviert und einen Verweis auf die Forms Bibliothek gemacht.

Wenn ich nun einen Bereich markiere und die Summe in eine Zelle kopieren will, kommt immer 0 raus.

Wisst ihr woran das liegen könnte?
Ich hoffe hier kann mir jemand helfen.

Vielen Dank!

LG
Cilli96
Cilli96 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.11.2018, 13:08   #2
MisterBurns
MOF Koryphäe
MOF Koryphäe
Standard

Bei mir funktioniert der Code wunderbar - hast du den Code auch händisch ausgeführt? Von ganz alleine macht der gar nüscht.

__________________

Schöne Grüße
Berni
MisterBurns ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.11.2018, 13:37   #3
Cilli96
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Danke für die schnelle Rückmeldung!

Also ich hab den Code eingefügt, dann in der Symbolleiste auf Ausführen --> Sub/UserForm ausführen

Dann Microsoft VBA geschlossen. Der Verweis ist auch gesetzt.

Muss ich dann in der Arbeitsmappe nochmal was extra machen? Wenn ja, wie?

Danke und LG
Cilli96 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.11.2018, 13:46   #4
MisterBurns
MOF Koryphäe
MOF Koryphäe
Standard

Du hast in der Mappe einen Bereich mit Zahlen markiert und dann den Code ausgeführt (ob du den VBA-Explorer schließt oder nicht ist unerheblich). Wenn ja, hat der Code die Summe der markierten Zellen in die Zwischenablage kopiert - den Wert kannst du in Excel oder auch in einem anderen Programm einfügen. Zumindest bei mir geht es.

Kriegst du auch keine Fehlermeldung beim Ausführen des Codes?

__________________

Schöne Grüße
Berni
MisterBurns ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.11.2018, 13:48   #5
EarlFred
MOF Guru
MOF Guru
Standard

Zitat:

Hierfür markiere ich z.B. von Produktgruppe 25 alle Positionen und trage die Summe dann in eine andere Registerkarte ein.

Ohne die Mappe zu kennen: Das klingt fast, als könnte z. B. Summewenn helfen.

Hiermit geht es automatisch:

Achtung - der Code muss in das Codemodul des Tabellenblatts, in dem Du die Zellen markierst!
Code:

Option Explicit
Private pDatObj As Object
Property Get objDatObj() As Object
   If (pDatObj Is Nothing) Then
      Set pDatObj = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
   End If
   Set objDatObj = pDatObj
End Property

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim ctl             As CommandBarControl
Dim AWF             As Object
Dim AutoVal         As Double
Dim intFormula      As Integer

    Set AWF = Application.WorksheetFunction

    intFormula = 0
    For Each ctl In Application.CommandBars("AutoCalculate").Controls
        intFormula = intFormula + 1
        If ctl.State <> 0 Then
            Exit For
        End If
    Next ctl

    Select Case intFormula
    Case 2
        AutoVal = AWF.Average(Target.SpecialCells(xlCellTypeVisible))
    Case 3
        AutoVal = AWF.CountA(Target.SpecialCells(xlCellTypeVisible))
    Case 4
        AutoVal = AWF.Count(Target.SpecialCells(xlCellTypeVisible))
    Case 5
        AutoVal = AWF.Max(Target.SpecialCells(xlCellTypeVisible))
    Case 6
        AutoVal = AWF.Min(Target.SpecialCells(xlCellTypeVisible))
    Case 7
        AutoVal = AWF.Sum(Target.SpecialCells(xlCellTypeVisible))
    End Select

    objDatObj.SetText AutoVal
    objDatObj.PutInClipboard

End Sub
Das funktioniert aber nur, wenn Du es so verwendest, wie beschrieben: Im besagten Blatt markieren, in einem anderen Blatt / andere Mappe / anderes Programm einfügen! Eine erneute Markierung im besagten Blatt löscht bzw. überschreibt das Ergebnis im Zwischenspeicher.

__________________

Datum und Uhrzeit, Makrorekorder-Code entschlacken, {Matrixformeln}
Tutorials zu Pivottabellen: Kurzeinstieg; Dynamischer Datenbereich; Daten und Zeiten gruppieren
Für 6 meiner Beiträge haben sich die Hilfesuchenden mit einer Spende an Wikipedia, die Tafeln oder Hilfe für krebskranke Kinder eV bedankt (das entspricht 0,044% per 26.07.2018) - eine tolle Geste!

Geändert von EarlFred (08.11.2018 um 13:53 Uhr).
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.11.2018, 14:11   #6
Cilli96
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo ihr zwei,

@EarlFred:
ja das wäre eine Idee, aber bei manchen Produktgruppen muss man nochmal extra unterscheiden, also gehts wieder doch nicht.

Aber dein Hinweis hat geholfen!!
Ich wollte es zur Probe (ob es funktioniert) einfach unten drunter einfügen.
Wie du beschrieben hast, hat es dann neu berechnet.

Habs dann in die "richtige" Datei eingefügt, dann gings. :-)

@MisterBurns:
Das war ein guter Hinweis, ich wusste nicht dass man den Code immer neu starten muss. Dachte wenn der einmal aktiviert ist, läufts automatisch.
Hab jetzt einen Shortcut vergeben.

Ich denke jetzt funktionierts so wie gewünscht. Vielen Dank euch zwei!!

LG
Cilli96
Cilli96 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:45 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.