Kopiert die Summe von Excel-Zellen in die Zwischenablage

Veröffentliche deine funktionierenden Skripte und Funktionen

Moderator: jNizM

User avatar
haichen
Posts: 631
Joined: 09 Feb 2014, 08:24

Kopiert die Summe von Excel-Zellen in die Zwischenablage

Post by haichen » 08 Jul 2020, 10:35

Mein Skript von https://www.autohotkey.com/boards/viewtopic.php?f=6&t=78328 in Deutsch:

Kopiert die Summe der ausgewählten Excel-Zellen in die Zwischenablage

Das Skript von https://www.autohotkey.com/boards/viewtopic.php?p=340285#p340285
hat mich dazu inspiriert, daraus einen kompletten Helfer für Excel-Arbeiter zu machen.

Das Skript kopiert die Summe eines in Excel ausgewählten Bereichs in die Zwischenablage.
Im Tray-Menü können Sie wählen, ob Sie nur die sichtbaren Zellen oder auch die ausgeblendeten Zellen hinzufügen möchten.
Dort können Sie auch die Rundung des Ergebnisses wählen.
Wenn das Programm unter NTFS ausgeführt wird, merkt es sich die Einstellungen.
Es verwendet STRG+SHIFT+N, um die Summe zu erhalten.

arbeitet mit [v1.1.31+]

Code: Select all

DriveGet, fs, FileSystem,  % SubStr(A_ScriptDir,1,3)
if (fs !="NTFS")
   msgbox, Programmeinstellungen können nur unter NTFS gespeichert werden! Das aktuelle Dateisystem ist %fs%
   
global rf, v
ADSload("sfdata","rf","v")

if (rf="")
	rf:=0
if (v="")
	v:=0

Hilfe =
(
 Kopiert die Summe der ausgewählten 
 Excelzellen in die Zwischenablage
 
 Sie können alle ausgewählten sichtbaren Zellen summieren
 oder auch versteckte Zellen.
 
 Zellen mit Text werden ignoriert.
 Die Auswahl kann ein Array (Block, Tabelle, Range) sein.
)

Tiptext =
(
 STRG+SHIFT+N: Summe der Excelzellen 
)

menutitle1:="Ausgewählte Excel-Zellen summieren "
menutitle2:="und in die Zwischenablage kopieren"
Menu, tray,add,  info1
Menu, tray,Disable,  info1
Menu, tray,Rename, info1 , %menutitle1%
Menu, tray,add,  info2
Menu, tray,Disable,  info2
Menu, tray,Rename, info2 , %menutitle2%
Menu, tray, add
Menu, tray, add, Hilfe
Menu, tray, add
Menu, tray, add,nur_sichtbare_Zellen
Menu, tray, add,sichtbare_und_ausgeblendete_Zellen
Menu, tray, add
Menu, tray, add,Keine_Dezimalstelle
Menu, tray, add,Eine_Dezimalstelle
Menu, tray, add,Zwei_Dezimalstellen
Menu, tray, add,Drei_Dezimalstellen
Menu, tray, add, Pause
Menu, tray, Default, Pause
Menu, tray, add, Beenden
Menu, tray, NoStandard
Menu, Tray, Tip, %Tiptext%

xlCellTypeVisible := 12
test:=0

if !v
	gosub, nur_sichtbare_Zellen
else
	gosub, sichtbare_und_ausgeblendete_Zellen

switch rf
{
	case  0:   Menu, tray, Check, Keine_Dezimalstelle
	case  1:   Menu, tray, Check, Eine_Dezimalstelle
	case  2:   Menu, tray, Check, Zwei_Dezimalstellen
	case  3:   Menu, tray, Check, Drei_Dezimalstellen
}

SetTimer, testExcel, 2000 ; 

return

RemoveToolTip:
ToolTip
return

testExcel:
if !IsObject(xl)
try
	xl := ComObjActive("Excel.Application")
return

info1:
info2:
return

Trennzeichen:
return

Hilfe:
Msgbox, %Hilfe%
return

Beenden:
exitapp

test:
return

nur_sichtbare_Zellen:
Gui, Submit, NoHide
Menu, tray, Check,nur_sichtbare_Zellen
Menu, tray, UnCheck,sichtbare_und_ausgeblendete_Zellen
Hotkey, ^+n, visible
v:=0
ADSsave("sfdata","v")
return

sichtbare_und_ausgeblendete_Zellen:
Gui, Submit, NoHide
Menu, tray, UnCheck,nur_sichtbare_Zellen
Menu, tray, Check,sichtbare_und_ausgeblendete_Zellen
Hotkey, ^+n, visibleandhidden
v:=1
ADSsave("sfdata","v")
return

visible:
tooltip, % "Summe (sichtbare Zellen):`n" clipboard :=round( xl.WorksheetFunction.sum(xl.selection.SpecialCells(xlCellTypeVisible)),rf) ;shows the sum as Tooltip, and added it to the clipboard
;send, {esc} ; If I use STRG i alway see the analytic menu from Excel without send, {esc}
SetTimer, RemoveToolTip, -2000 ; remove Tooltip after 2 sec
return

visibleandhidden:
tooltip, % "Summe (sichtbare und ausgeblendete Zellen):`n" clipboard := round(xl.WorksheetFunction.sum(xl.selection),rf) ;shows the sum as Tooltip, and added it to the clipboard
;send, {esc} ; If I use STRG i alway see the analytic menu from Excel without send, {esc} 
SetTimer, RemoveToolTip, -2000 ; remove Tooltip after 2 sec
return

Keine_Dezimalstelle:
Gui, Submit, NoHide
Menu, tray, Check,Keine_Dezimalstelle
Menu, tray, UnCheck,Eine_Dezimalstelle
Menu, tray, UnCheck,Zwei_Dezimalstellen
Menu, tray, UnCheck,Drei_Dezimalstellen
rf:=0
ADSsave("sfdata","rf")
return

Eine_Dezimalstelle:
Gui, Submit, NoHide
Menu, tray, UnCheck,Keine_Dezimalstelle
Menu, tray, Check,Eine_Dezimalstelle
Menu, tray, UnCheck,Zwei_Dezimalstellen
Menu, tray, UnCheck,Drei_Dezimalstellen
rf:=1
ADSsave("sfdata","rf")
return

Zwei_Dezimalstellen:
Gui, Submit, NoHide
Menu, tray, UnCheck,Keine_Dezimalstelle
Menu, tray, UnCheck,Eine_Dezimalstelle
Menu, tray, Check,Zwei_Dezimalstellen
Menu, tray, UnCheck,Drei_Dezimalstellen
rf:=2
ADSsave("sfdata","rf")
return 

Drei_Dezimalstellen:
Gui, Submit, NoHide
Menu, tray, UnCheck,Keine_Dezimalstelle
Menu, tray, UnCheck,Eine_Dezimalstelle
Menu, tray, UnCheck,Zwei_Dezimalstellen
Menu, tray, Check,Drei_Dezimalstellen
rf:=3
ADSsave("sfdata","rf")
return

pause:
Gui, Submit, NoHide
if A_IsSuspended
{
	Suspend, off
	Menu, tray, Rename, Weiter ,Pause
	Menu, tray, Default, Pause
} else
{
	Menu, tray, Rename, Pause ,Weiter
	Menu, tray, Default, Weiter
	Suspend, On
}
return

ADSreset(stream:="sfdata"){
	filedelete,% A_ScriptFullPath ":" stream
	return
}

ADSload(stream, params*){
	stream_1:=A_ScriptFullPath ":" stream
	
	; If something goes wrong, you can delete the ADS by
	; renaming the Program eg ads.ahk => adsreset.ahk - after that, rename it back.
	; ADS will be also deleted by copying to fat32
	if InStr(A_ScriptName, "reset"){
		filedelete,%stream_1%
		return
	}
	
	for index,param in params
		IniRead, %param%, %stream_1%, Section, %param% ,  %a_space%
	
	return
}

ADSsave(stream, params*){
	stream_1:=A_ScriptFullPath ":" stream
	if InStr(A_ScriptName, "reset"){
		filedelete,%stream_1%
		return
	}
	
	for index,param in params
		IniWrite,% """" %param% """", %stream_1%, section, %param%
	
	return
}

Return to “Skripte und Funktionen”