<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Clever-Excel-Forum - mit VBA]]></title>
		<link>https://www.clever-excel-forum.de/</link>
		<description><![CDATA[Clever-Excel-Forum - https://www.clever-excel-forum.de]]></description>
		<pubDate>Sat, 02 May 2026 03:50:58 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Userform auf Excelzelle positionieren]]></title>
			<link>https://www.clever-excel-forum.de/Thread-Userform-auf-Excelzelle-positionieren</link>
			<pubDate>Wed, 04 Feb 2026 12:17:27 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.clever-excel-forum.de/member.php?action=profile&uid=18350">volti</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.clever-excel-forum.de/Thread-Userform-auf-Excelzelle-positionieren</guid>
			<description><![CDATA[Hallo Forum,<br /><br />wer seine Userform immer genau an die Stelle einer Excelzelle positionieren möchte, der kann dazu folgenden Code verwenden....<br /><br /><!--- erstellt am 04.02.2026 13:13:50 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 690px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><!--- VBA-Code ---><div id='VBA131350' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>FindWindowA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpClassName <font color=blue>As String</font>, <font color=blue>ByVal</font> lpWindowName <font color=blue>As String</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetWindowPos</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hWnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> hWndInsertAfter <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> x <font color=blue>As Long</font>, <font color=blue>ByVal</font> y <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> cx <font color=blue>As Long</font>, <font color=blue>ByVal</font> cy <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wFlags <font color=blue>As Long</font>) <font color=blue>As Long</font><br><br><strong><font color=blue>Private Sub</font> UserForm_Activate()</strong><br>&nbsp;&nbsp;<font color=blue>Dim</font> oCell <font color=blue>As</font> Range<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>Set</font> oCell = ActiveSheet.Range(&quot;<font color=red>B5</font>&quot;)<br>&nbsp;&nbsp;<font color=blue>With</font> ActiveWindow.ActivePane<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetWindowPos</font> <font color=#d000d0>FindWindowA</font>(&quot;<font color=red>ThunderDFrame</font>&quot;, Me.Caption), <font color=#ff6060>0&</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.PointsToScreenPixelsX(oCell.Left - <font color=#ff6060>5</font>), _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.PointsToScreenPixelsY(oCell.Top - <font color=#ff6060>1</font>), _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#ff6060>0&</font>, <font color=#ff6060>0&</font>, <font color=#ff6060>&H1</font><font color=#00a000>&nbsp;' &H1 = SWP_NOSIZE</font><br>&nbsp;&nbsp;<font color=blue>End With</font><br><strong><font color=blue>End Sub</font></strong></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></description>
			<content:encoded><![CDATA[Hallo Forum,<br /><br />wer seine Userform immer genau an die Stelle einer Excelzelle positionieren möchte, der kann dazu folgenden Code verwenden....<br /><br /><!--- erstellt am 04.02.2026 13:13:50 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 690px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><!--- VBA-Code ---><div id='VBA131350' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>FindWindowA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpClassName <font color=blue>As String</font>, <font color=blue>ByVal</font> lpWindowName <font color=blue>As String</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetWindowPos</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hWnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> hWndInsertAfter <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> x <font color=blue>As Long</font>, <font color=blue>ByVal</font> y <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> cx <font color=blue>As Long</font>, <font color=blue>ByVal</font> cy <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wFlags <font color=blue>As Long</font>) <font color=blue>As Long</font><br><br><strong><font color=blue>Private Sub</font> UserForm_Activate()</strong><br>&nbsp;&nbsp;<font color=blue>Dim</font> oCell <font color=blue>As</font> Range<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>Set</font> oCell = ActiveSheet.Range(&quot;<font color=red>B5</font>&quot;)<br>&nbsp;&nbsp;<font color=blue>With</font> ActiveWindow.ActivePane<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetWindowPos</font> <font color=#d000d0>FindWindowA</font>(&quot;<font color=red>ThunderDFrame</font>&quot;, Me.Caption), <font color=#ff6060>0&</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.PointsToScreenPixelsX(oCell.Left - <font color=#ff6060>5</font>), _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.PointsToScreenPixelsY(oCell.Top - <font color=#ff6060>1</font>), _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#ff6060>0&</font>, <font color=#ff6060>0&</font>, <font color=#ff6060>&H1</font><font color=#00a000>&nbsp;' &H1 = SWP_NOSIZE</font><br>&nbsp;&nbsp;<font color=blue>End With</font><br><strong><font color=blue>End Sub</font></strong></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Inputbox als Passwortabfrage]]></title>
			<link>https://www.clever-excel-forum.de/Thread-Inputbox-als-Passwortabfrage</link>
			<pubDate>Wed, 10 Dec 2025 09:24:06 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.clever-excel-forum.de/member.php?action=profile&uid=18350">volti</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.clever-excel-forum.de/Thread-Inputbox-als-Passwortabfrage</guid>
			<description><![CDATA[Hallo,<br /><br />wer eine Passwortabfrage mit geschützten Zeichen mittels einer Excel-Inputbox machen möchte, kann sich des u.a. Codes bedienen.<br /><br />Es ist eine Minimalversion mit wenig Code, die lediglich die Eigenschaft der Editbox ändert. Das anzuzeigende Ersatzzeichen, z.B. *, kann freigewählt werden.<br /><br />PS: Die Application.Inputbox funktioniert diesbezüglich nicht. Ich nehme an, dass die Eigenschaft von der Inputbox selbst wieder verstellt wird.<br /><br /><!--- erstellt am 10.12.2025 10:11:51 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 950px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus101151' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA101151' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> uElapse <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpTimerFunc <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>KillTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetActiveWindow</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; () <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SendDlgItemMessageA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hDlg <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDDlgItem <font color=blue>As Long</font>, <font color=blue>ByVal</font> wMsg <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Dim</font> mhTimer <font color=blue>As LongPtr</font><br><br><strong><font color=blue>Public Function</font> GetPassword(<font color=blue>Optional</font> sPrompt <font color=blue>As String</font> = &quot;<font color=red>Bitte geben Sie das Passwort ein!</font>&quot;, _</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Optional</font> sCaption <font color=blue>As String</font> = &quot;<font color=red>Passwortabfrage</font>&quot;) <font color=blue>As String</font><br>&nbsp;&nbsp;mhTimer = <font color=#d000d0>SetTimer</font>(<font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>25</font>, <font color=blue>AddressOf</font> Password_Callback)<br>&nbsp;&nbsp;GetPassword = <font color=#5050f0>InputBox</font>(sPrompt, sCaption)<br><strong><font color=blue>End Function</font></strong><br><br><strong><font color=blue>Private Sub</font> Password_Callback()</strong><br>&nbsp;&nbsp;<font color=blue>If</font> mhTimer &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> <font color=#d000d0>KillTimer</font> <font color=#ff6060>0</font>, mhTimer: mhTimer = <font color=#ff6060>0</font> <font color=#00a000>&nbsp;' Timer l&ouml;schen</font><br><font color=#00a000>'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ID der Editbox = 4900, &HCC=EM_SETPASSWORDCHAR</font><br>&nbsp;&nbsp;<font color=#d000d0>SendDlgItemMessageA</font> <font color=#d000d0>GetActiveWindow</font>(), <font color=#ff6060>4900</font>, <font color=#ff6060>&HCC</font>, <font color=#5050f0>Asc</font>(&quot;<font color=red>*</font>&quot;), <font color=#ff6060>0</font><br><strong><font color=blue>End Sub</font></strong><br><br><font color=#00a000>' ###### Aufruf #####</font><br><strong><font color=blue>Sub</font> Test()</strong><br>&nbsp;&nbsp;<font color=blue>MsgBox</font> GetPassword()<br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></description>
			<content:encoded><![CDATA[Hallo,<br /><br />wer eine Passwortabfrage mit geschützten Zeichen mittels einer Excel-Inputbox machen möchte, kann sich des u.a. Codes bedienen.<br /><br />Es ist eine Minimalversion mit wenig Code, die lediglich die Eigenschaft der Editbox ändert. Das anzuzeigende Ersatzzeichen, z.B. *, kann freigewählt werden.<br /><br />PS: Die Application.Inputbox funktioniert diesbezüglich nicht. Ich nehme an, dass die Eigenschaft von der Inputbox selbst wieder verstellt wird.<br /><br /><!--- erstellt am 10.12.2025 10:11:51 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 950px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus101151' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA101151' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> uElapse <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpTimerFunc <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>KillTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetActiveWindow</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; () <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SendDlgItemMessageA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hDlg <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDDlgItem <font color=blue>As Long</font>, <font color=blue>ByVal</font> wMsg <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Dim</font> mhTimer <font color=blue>As LongPtr</font><br><br><strong><font color=blue>Public Function</font> GetPassword(<font color=blue>Optional</font> sPrompt <font color=blue>As String</font> = &quot;<font color=red>Bitte geben Sie das Passwort ein!</font>&quot;, _</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Optional</font> sCaption <font color=blue>As String</font> = &quot;<font color=red>Passwortabfrage</font>&quot;) <font color=blue>As String</font><br>&nbsp;&nbsp;mhTimer = <font color=#d000d0>SetTimer</font>(<font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>25</font>, <font color=blue>AddressOf</font> Password_Callback)<br>&nbsp;&nbsp;GetPassword = <font color=#5050f0>InputBox</font>(sPrompt, sCaption)<br><strong><font color=blue>End Function</font></strong><br><br><strong><font color=blue>Private Sub</font> Password_Callback()</strong><br>&nbsp;&nbsp;<font color=blue>If</font> mhTimer &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> <font color=#d000d0>KillTimer</font> <font color=#ff6060>0</font>, mhTimer: mhTimer = <font color=#ff6060>0</font> <font color=#00a000>&nbsp;' Timer l&ouml;schen</font><br><font color=#00a000>'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ID der Editbox = 4900, &HCC=EM_SETPASSWORDCHAR</font><br>&nbsp;&nbsp;<font color=#d000d0>SendDlgItemMessageA</font> <font color=#d000d0>GetActiveWindow</font>(), <font color=#ff6060>4900</font>, <font color=#ff6060>&HCC</font>, <font color=#5050f0>Asc</font>(&quot;<font color=red>*</font>&quot;), <font color=#ff6060>0</font><br><strong><font color=blue>End Sub</font></strong><br><br><font color=#00a000>' ###### Aufruf #####</font><br><strong><font color=blue>Sub</font> Test()</strong><br>&nbsp;&nbsp;<font color=blue>MsgBox</font> GetPassword()<br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Auswertung Lotto/ Eurojackpot]]></title>
			<link>https://www.clever-excel-forum.de/Thread-Auswertung-Lotto-Eurojackpot</link>
			<pubDate>Thu, 09 Oct 2025 14:20:46 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.clever-excel-forum.de/member.php?action=profile&uid=37">BoskoBiati</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.clever-excel-forum.de/Thread-Auswertung-Lotto-Eurojackpot</guid>
			<description><![CDATA[Hallo,<br /><br />für alle Lotto- u. Eurojackpotspieler habe ich mal zwei Dateien, mit denen man die Zahlen der Ziehungen ansehen und auswerten kann (für Statistiker)und seine eigenen Tipps auswerten kann. Für Verbesserungsvorschläge bin ich dankbar.<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.clever-excel-forum.de/images/attachtypes/xlsx.png" title="" border="0" alt=".xlsx" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=56446" target="_blank" title="09.10.2025, 16:20">EJ_Abruf_V1.xlsx</a> (Größe: 79,58 KB / Downloads: 11)
<!-- end: postbit_attachments_attachment --><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.clever-excel-forum.de/images/attachtypes/xlsm.png" title="" border="0" alt=".xlsm" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=56447" target="_blank" title="09.10.2025, 16:20">Lottoabruf_V1.xlsm</a> (Größe: 491,66 KB / Downloads: 11)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Hallo,<br /><br />für alle Lotto- u. Eurojackpotspieler habe ich mal zwei Dateien, mit denen man die Zahlen der Ziehungen ansehen und auswerten kann (für Statistiker)und seine eigenen Tipps auswerten kann. Für Verbesserungsvorschläge bin ich dankbar.<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.clever-excel-forum.de/images/attachtypes/xlsx.png" title="" border="0" alt=".xlsx" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=56446" target="_blank" title="09.10.2025, 16:20">EJ_Abruf_V1.xlsx</a> (Größe: 79,58 KB / Downloads: 11)
<!-- end: postbit_attachments_attachment --><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.clever-excel-forum.de/images/attachtypes/xlsm.png" title="" border="0" alt=".xlsm" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=56447" target="_blank" title="09.10.2025, 16:20">Lottoabruf_V1.xlsm</a> (Größe: 491,66 KB / Downloads: 11)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Temporäre tabellierte Abschlussmeldungsbox]]></title>
			<link>https://www.clever-excel-forum.de/Thread-Temporaere-tabellierte-Abschlussmeldungsbox</link>
			<pubDate>Sun, 09 Mar 2025 14:00:06 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.clever-excel-forum.de/member.php?action=profile&uid=18350">volti</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.clever-excel-forum.de/Thread-Temporaere-tabellierte-Abschlussmeldungsbox</guid>
			<description><![CDATA[Wer's brauchen kann...<br /><br />Liebe Leserin, lieber Leser,<br /><br />nach Auswertungs- und Suchläufen o.ä. zeigt man ja gerne die Ergebnisse in einer MsgBox an.<br /><br />Hierbei hat man häufig ein zweispaltiges Feld mit den Beschreibungen und jeweiliger Anzahl. Ggf. soll die Meldung auch nur für eine gewisse Zeit aktiv sein.<br />Schwierig hierbei ist es jedoch, die Werte sauber untereinander anzuzeigen und Zahlen ggf. rechtsbündig darzustellen.<br /><br />Hier mal ein Beispiel, wie so etwas realisiert werden könnte.<br /><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.clever-excel-forum.de/images/attachtypes/image.gif" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=55061" target="_blank" title="09.03.2025, 17:23">Abschlussmeldung.png</a> (Größe: 8,02 KB / Downloads: 64)
<!-- end: postbit_attachments_attachment --><br /><br /><!--- erstellt am 09.03.2025 14:57:16 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 1090px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus145716' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA145716' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=#00a000>' Timer Funktionen</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> uElapse <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpTimerFunc <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>KillTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=#00a000>' Messages Funktionen</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SendDlgItemMessageA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hDlg <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDDlgItem <font color=blue>As Long</font>, <font color=blue>ByVal</font> wMsg <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>PostMessageA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> wMsg <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetDlgItemTextA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hDlg <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDDlgItem <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpString <font color=blue>As String</font>) <font color=blue>As Long</font><br><font color=#00a000>' Fenster Funktionen</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetActiveWindow</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; () <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>CreateWindowExA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> dwExStyle <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpClassName <font color=blue>As String</font>, <font color=blue>ByVal</font> lpWindowName <font color=blue>As String</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> dwStyle <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> x <font color=blue>As Long</font>, <font color=blue>ByVal</font> y <font color=blue>As Long</font>, <font color=blue>ByVal</font> nWidth <font color=blue>As Long</font>, <font color=blue>ByVal</font> nHeight <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hWndParent <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hMenu <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> hInstance <font color=blue>As LongPtr</font>, lpParam <font color=blue>As Any</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>DestroyWindow</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetDlgItem</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hDlg <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDDlgItem <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetWindowRect</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, lpRect <font color=blue>As RECT</font>) <font color=blue>As Long</font><br><br><font color=blue>Private Type RECT</font><br>&nbsp;&nbsp; X1 <font color=blue>As Long</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Left</font><br>&nbsp;&nbsp; Y1 <font color=blue>As Long</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Top</font><br>&nbsp;&nbsp; X2 <font color=blue>As Long</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Right</font><br>&nbsp;&nbsp; Y2 <font color=blue>As Long</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Bottom</font><br><font color=blue>End Type</font><br><br><font color=blue>Private Const</font> <font color=#d000d0>WS_TABBOX</font> <font color=blue>As Long</font> = <font color=#ff6060>&H40000000</font> + <font color=#ff6060>&H10000000</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' WS_CHILD | WS_VISIBLE</font><br><br><font color=blue>Dim</font> mhDlg&nbsp;&nbsp; <font color=blue>As LongPtr</font>, miTimeOut&nbsp;&nbsp; <font color=blue>As Long</font><br><font color=blue>Dim</font> mhTimer <font color=blue>As LongPtr</font>, miLang&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font><br><font color=blue>Dim</font> msTxt() <font color=blue>As String</font>, msTextlang() <font color=blue>As String</font><br><br><strong><font color=blue>Sub</font> TabBox(<font color=blue>ByVal</font> sTxt <font color=blue>As String</font>, <font color=blue>ByVal</font> sCaption <font color=blue>As String</font>, _</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Optional</font> iButton <font color=blue>As Long</font>, <font color=blue>Optional</font> iTimeOut <font color=blue>As Long</font>)<br><font color=#00a000>' Zeigt Text in Tabellenform in einer Messagebox an</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> sArrZl() <font color=blue>As String</font>, sArrSp() <font color=blue>As String</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> iZl <font color=blue>As Integer</font>, iSp <font color=blue>As Integer</font>, iAnz <font color=blue>As Integer</font>, j <font color=blue>As Integer</font>, iLang <font color=blue>As Integer</font><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;miTimeOut = iTimeOut&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Laufzeit global machen</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;sArrZl = <font color=#5050f0>Split</font>(sTxt & &quot;<font color=red> </font>&quot;, <font color=#a000c0>vbLf)</font>:&nbsp;&nbsp;&nbsp;&nbsp; iAnz = <font color=#5050f0>UBound</font>(sArrZl)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Text auf Zeilen aufsplitten</font><br>&nbsp;&nbsp;sArrSp = <font color=#5050f0>Split</font>(sArrZl(<font color=#ff6060>0</font>), <font color=#a000c0>vbTab)</font>:&nbsp;&nbsp;&nbsp;&nbsp; j = <font color=#5050f0>UBound</font>(sArrSp)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Zeile auf Spalten aufsplitten</font><br>&nbsp;&nbsp;<font color=blue>ReDim</font> msTxt(j): <font color=blue>ReDim</font> msTextlang(j)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Arrays einmalig dimensionieren</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>For</font> iZl = <font color=#ff6060>0</font> <font color=blue>To</font> iAnz&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Alle Zeilen durchgehen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sArrSp = <font color=#5050f0>Split</font>(sArrZl(iZl) & <font color=#5050f0>String</font>(j, <font color=#a000c0>vbTab</font>), <font color=#a000c0>vbTab</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Zeile auf Spalten aufsplitten</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>For</font> iSp = <font color=#ff6060>0</font> <font color=blue>To</font> j&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Alle Spalten durchgehen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msTxt(iSp) = msTxt(iSp) & sArrSp(iSp) & <font color=#5050f0>IIf</font>(iZl = iAnz, &quot;<font color=red></font>&quot;, <font color=#a000c0>vbLf</font>)<font color=#00a000>&nbsp;' Text f&uuml;r die Spalten kreieren</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> <font color=#5050f0>Len</font>(sArrSp(iSp)) &gt; <font color=#5050f0>Len</font>(msTextlang(iSp)) <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msTextlang(iSp) = sArrSp(iSp)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' L&auml;ngsten Text der Spalte merken</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Next</font> iSp<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>Next</font> iZl<br>&nbsp;&nbsp;miLang = <font color=#5050f0>Len</font>(<font color=blue>Join&#36;</font>(msTextlang)):&nbsp;&nbsp; <font color=blue>If</font> miLang &gt; <font color=#ff6060>70</font> <font color=blue>Then</font> miLang = <font color=#ff6060>70</font>&nbsp;&nbsp; <font color=#00a000>&nbsp;' Maximale Textbreite, ggf. anpassen</font><br>&nbsp;&nbsp;mhTimer = <font color=#d000d0>SetTimer</font>(<font color=#ff6060>0&</font>, <font color=#ff6060>0&</font>, <font color=#ff6060>10</font>, <font color=blue>AddressOf</font> TabBox_CallBackProc)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Timer setzen</font><br>&nbsp;&nbsp;<font color=blue>MsgBox</font> <font color=#5050f0>String</font>(miLang, &quot;<font color=red>e</font>&quot;) & <font color=#5050f0>String</font>(iAnz, <font color=#a000c0>vbLf</font>) & &quot;<font color=red>!</font>&quot;, iButton, sCaption<br>&nbsp;&nbsp;<font color=blue>If</font> mhTimer &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> <font color=#d000d0>KillTimer</font> <font color=#ff6060>0&</font>, mhTimer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Timer l&ouml;schen</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Sub</font> TabBox_CallBackProc()</strong><br><font color=#00a000>' CallBack-Funktion f&uuml;r die TabBox</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> R <font color=blue>As RECT</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> hStat <font color=blue>As LongPtr</font>, hFont <font color=blue>As LongPtr</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> i <font color=blue>As Integer</font>, x <font color=blue>As Long</font>, w <font color=blue>As Long</font>, h <font color=blue>As Long</font><br>&nbsp;<br>&nbsp;&nbsp;<font color=#d000d0>KillTimer</font> <font color=#ff6060>0&</font>, mhTimer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Timer l&ouml;schen</font><br>&nbsp;&nbsp;<font color=blue>If</font> miTimeOut &gt; <font color=#ff6060>0</font> <font color=blue>Then</font> mhTimer = <font color=#d000d0>SetTimer</font>(<font color=#ff6060>0&</font>, <font color=#ff6060>0&</font>, miTimeOut, <font color=blue>AddressOf</font> TabBox_TimeOutProc)<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;mhDlg = <font color=#d000d0>GetActiveWindow</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Handle der Dlg holen</font><br>&nbsp;&nbsp;hStat = <font color=#d000d0>GetDlgItem</font>(mhDlg, <font color=#ff6060>65535</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Handle des Textfeldes ID=65535</font><br>&nbsp;&nbsp;<font color=#d000d0>GetWindowRect</font> mhDlg, R:&nbsp;&nbsp;x = R.X1 + <font color=#ff6060>8</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Maße der Dialogbox holen</font><br>&nbsp;&nbsp;<font color=#d000d0>GetWindowRect</font> hStat, R:&nbsp;&nbsp;x = R.X1 - x:&nbsp;&nbsp;h = R.Y2 - R.Y1 + <font color=#ff6060>5</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Maße des Textfelds holen</font><br><br><font color=#00a000>' Schriftart des Textfeldes holen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &H31 = WM_GETFONT</font><br>&nbsp;&nbsp;hFont = <font color=#d000d0>SendDlgItemMessageA</font>(mhDlg, <font color=#ff6060>65535</font>, <font color=#ff6060>&H31</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>)<br>&nbsp;&nbsp;<font color=#d000d0>DestroyWindow</font> hStat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Textfeld entfernen</font><br><br>&nbsp;&nbsp;<font color=blue>For</font> i = <font color=#ff6060>0</font> <font color=blue>To</font> <font color=#5050f0>UBound</font>(msTxt)<font color=#00a000>&nbsp;' 20 = Bereich um 20 Pixel horizontal verbreitern</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w = (R.X2 - R.X1 + <font color=#ff6060>20</font>) / miLang <font color=blue>*</font> <font color=#5050f0>Len</font>(msTextlang(i))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Breite der Spalte errechnen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hStat = <font color=#d000d0>CreateWindowExA</font>(<font color=#ff6060>0</font>, &quot;<font color=red>STATIC</font>&quot;, msTxt(i), _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>WS_TABBOX</font> + <font color=#5050f0>IIf</font>(i = <font color=#ff6060>1</font>, <font color=#ff6060>&H2</font>, <font color=#ff6060>0</font>), _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x, <font color=#ff6060>33</font>, w, h, mhDlg, <font color=#ff6060>10000</font> + i, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Application.HinstancePtr, <font color=blue>ByVal</font> <font color=#ff6060>0&</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Weitere neue Labels erstellen</font><br><font color=#00a000>' Schriftart setzen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &H30 = WM_SETFONT</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SendDlgItemMessageA</font> mhDlg, <font color=#ff6060>10000</font> + i, <font color=#ff6060>&H30</font>, hFont, <font color=blue>True</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Schriftart zuordnen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x = x + w&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Position f&uuml;r das n&auml;chste Textfeld</font><br>&nbsp;&nbsp;<font color=blue>Next</font> i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' 2 = ID des OK-Buttons</font><br>&nbsp;&nbsp;<font color=#d000d0>SetDlgItemTextA</font> mhDlg, <font color=#ff6060>2</font>, &quot;<font color=red>Schließen</font>&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Buttontext f&uuml;r OK-Button setzen</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Sub</font> TabBox_TimeOutProc()</strong><br><font color=#00a000>' TabBox schließen&nbsp;&nbsp;&nbsp;&nbsp;&H10 = WM_CLOSE</font><br>&nbsp;&nbsp;<font color=#d000d0>PostMessageA</font> mhDlg, <font color=#ff6060>&H10</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font><br><strong><font color=blue>End Sub</font></strong><br><br><br><font color=#00a000>' ############### Beispielaufruf #######################</font><br><strong><font color=blue>Sub</font> Aufruftest()</strong><br>&nbsp;&nbsp;<font color=blue>Dim</font> sMsg <font color=blue>As String</font><br><br>&nbsp;&nbsp;sMsg = &quot;<font color=red>Anzahl der gefundenen Objekte</font>&quot; & <font color=#a000c0>vbTab</font> & <font color=#5050f0>Format</font>(<font color=#ff6060>5000</font>, &quot;<font color=red>##,##0</font>&quot;) & <font color=#a000c0>vbTab</font> & &quot;<font color=red>&nbsp;&nbsp; </font>&quot; & <font color=#a000c0>vbLf</font> _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; & &quot;<font color=red>&nbsp;&nbsp; - davon Verzeichnisse</font>&quot; & <font color=#a000c0>vbTab</font> & &quot;<font color=red>125</font>&quot; & <font color=#a000c0>vbLf</font> _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; & &quot;<font color=red>&nbsp;&nbsp; - davon Dateien</font>&quot; & <font color=#a000c0>vbTab</font> & <font color=#5050f0>Format</font>(<font color=#ff6060>4250</font>, &quot;<font color=red>##,##0</font>&quot;) & <font color=#a000c0>vbLf</font> _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; & &quot;<font color=red>&nbsp;&nbsp; - davon unidentifizierbar</font>&quot; & <font color=#a000c0>vbTab</font> & &quot;<font color=red>625</font>&quot; & <font color=#a000c0>vbLf</font> & <font color=#a000c0>vbLf</font> _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; & &quot;<font color=red>erstelt am </font>&quot; & <font color=blue>Date</font><br><br>&nbsp;&nbsp;TabBox sTxt:=sMsg, sCaption:=&quot;<font color=red>Abschlussauswertung</font>&quot;, iButton:=vbInformation, iTimeOut:=10000<br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></description>
			<content:encoded><![CDATA[Wer's brauchen kann...<br /><br />Liebe Leserin, lieber Leser,<br /><br />nach Auswertungs- und Suchläufen o.ä. zeigt man ja gerne die Ergebnisse in einer MsgBox an.<br /><br />Hierbei hat man häufig ein zweispaltiges Feld mit den Beschreibungen und jeweiliger Anzahl. Ggf. soll die Meldung auch nur für eine gewisse Zeit aktiv sein.<br />Schwierig hierbei ist es jedoch, die Werte sauber untereinander anzuzeigen und Zahlen ggf. rechtsbündig darzustellen.<br /><br />Hier mal ein Beispiel, wie so etwas realisiert werden könnte.<br /><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.clever-excel-forum.de/images/attachtypes/image.gif" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=55061" target="_blank" title="09.03.2025, 17:23">Abschlussmeldung.png</a> (Größe: 8,02 KB / Downloads: 64)
<!-- end: postbit_attachments_attachment --><br /><br /><!--- erstellt am 09.03.2025 14:57:16 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 1090px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus145716' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA145716' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=#00a000>' Timer Funktionen</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> uElapse <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpTimerFunc <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>KillTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=#00a000>' Messages Funktionen</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SendDlgItemMessageA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hDlg <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDDlgItem <font color=blue>As Long</font>, <font color=blue>ByVal</font> wMsg <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>PostMessageA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> wMsg <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetDlgItemTextA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hDlg <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDDlgItem <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpString <font color=blue>As String</font>) <font color=blue>As Long</font><br><font color=#00a000>' Fenster Funktionen</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetActiveWindow</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; () <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>CreateWindowExA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> dwExStyle <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpClassName <font color=blue>As String</font>, <font color=blue>ByVal</font> lpWindowName <font color=blue>As String</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> dwStyle <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> x <font color=blue>As Long</font>, <font color=blue>ByVal</font> y <font color=blue>As Long</font>, <font color=blue>ByVal</font> nWidth <font color=blue>As Long</font>, <font color=blue>ByVal</font> nHeight <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hWndParent <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hMenu <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> hInstance <font color=blue>As LongPtr</font>, lpParam <font color=blue>As Any</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>DestroyWindow</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetDlgItem</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hDlg <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDDlgItem <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetWindowRect</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, lpRect <font color=blue>As RECT</font>) <font color=blue>As Long</font><br><br><font color=blue>Private Type RECT</font><br>&nbsp;&nbsp; X1 <font color=blue>As Long</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Left</font><br>&nbsp;&nbsp; Y1 <font color=blue>As Long</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Top</font><br>&nbsp;&nbsp; X2 <font color=blue>As Long</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Right</font><br>&nbsp;&nbsp; Y2 <font color=blue>As Long</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Bottom</font><br><font color=blue>End Type</font><br><br><font color=blue>Private Const</font> <font color=#d000d0>WS_TABBOX</font> <font color=blue>As Long</font> = <font color=#ff6060>&H40000000</font> + <font color=#ff6060>&H10000000</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' WS_CHILD | WS_VISIBLE</font><br><br><font color=blue>Dim</font> mhDlg&nbsp;&nbsp; <font color=blue>As LongPtr</font>, miTimeOut&nbsp;&nbsp; <font color=blue>As Long</font><br><font color=blue>Dim</font> mhTimer <font color=blue>As LongPtr</font>, miLang&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font><br><font color=blue>Dim</font> msTxt() <font color=blue>As String</font>, msTextlang() <font color=blue>As String</font><br><br><strong><font color=blue>Sub</font> TabBox(<font color=blue>ByVal</font> sTxt <font color=blue>As String</font>, <font color=blue>ByVal</font> sCaption <font color=blue>As String</font>, _</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Optional</font> iButton <font color=blue>As Long</font>, <font color=blue>Optional</font> iTimeOut <font color=blue>As Long</font>)<br><font color=#00a000>' Zeigt Text in Tabellenform in einer Messagebox an</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> sArrZl() <font color=blue>As String</font>, sArrSp() <font color=blue>As String</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> iZl <font color=blue>As Integer</font>, iSp <font color=blue>As Integer</font>, iAnz <font color=blue>As Integer</font>, j <font color=blue>As Integer</font>, iLang <font color=blue>As Integer</font><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;miTimeOut = iTimeOut&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Laufzeit global machen</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;sArrZl = <font color=#5050f0>Split</font>(sTxt & &quot;<font color=red> </font>&quot;, <font color=#a000c0>vbLf)</font>:&nbsp;&nbsp;&nbsp;&nbsp; iAnz = <font color=#5050f0>UBound</font>(sArrZl)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Text auf Zeilen aufsplitten</font><br>&nbsp;&nbsp;sArrSp = <font color=#5050f0>Split</font>(sArrZl(<font color=#ff6060>0</font>), <font color=#a000c0>vbTab)</font>:&nbsp;&nbsp;&nbsp;&nbsp; j = <font color=#5050f0>UBound</font>(sArrSp)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Zeile auf Spalten aufsplitten</font><br>&nbsp;&nbsp;<font color=blue>ReDim</font> msTxt(j): <font color=blue>ReDim</font> msTextlang(j)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Arrays einmalig dimensionieren</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>For</font> iZl = <font color=#ff6060>0</font> <font color=blue>To</font> iAnz&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Alle Zeilen durchgehen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sArrSp = <font color=#5050f0>Split</font>(sArrZl(iZl) & <font color=#5050f0>String</font>(j, <font color=#a000c0>vbTab</font>), <font color=#a000c0>vbTab</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Zeile auf Spalten aufsplitten</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>For</font> iSp = <font color=#ff6060>0</font> <font color=blue>To</font> j&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Alle Spalten durchgehen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msTxt(iSp) = msTxt(iSp) & sArrSp(iSp) & <font color=#5050f0>IIf</font>(iZl = iAnz, &quot;<font color=red></font>&quot;, <font color=#a000c0>vbLf</font>)<font color=#00a000>&nbsp;' Text f&uuml;r die Spalten kreieren</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> <font color=#5050f0>Len</font>(sArrSp(iSp)) &gt; <font color=#5050f0>Len</font>(msTextlang(iSp)) <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msTextlang(iSp) = sArrSp(iSp)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' L&auml;ngsten Text der Spalte merken</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Next</font> iSp<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>Next</font> iZl<br>&nbsp;&nbsp;miLang = <font color=#5050f0>Len</font>(<font color=blue>Join&#36;</font>(msTextlang)):&nbsp;&nbsp; <font color=blue>If</font> miLang &gt; <font color=#ff6060>70</font> <font color=blue>Then</font> miLang = <font color=#ff6060>70</font>&nbsp;&nbsp; <font color=#00a000>&nbsp;' Maximale Textbreite, ggf. anpassen</font><br>&nbsp;&nbsp;mhTimer = <font color=#d000d0>SetTimer</font>(<font color=#ff6060>0&</font>, <font color=#ff6060>0&</font>, <font color=#ff6060>10</font>, <font color=blue>AddressOf</font> TabBox_CallBackProc)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Timer setzen</font><br>&nbsp;&nbsp;<font color=blue>MsgBox</font> <font color=#5050f0>String</font>(miLang, &quot;<font color=red>e</font>&quot;) & <font color=#5050f0>String</font>(iAnz, <font color=#a000c0>vbLf</font>) & &quot;<font color=red>!</font>&quot;, iButton, sCaption<br>&nbsp;&nbsp;<font color=blue>If</font> mhTimer &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> <font color=#d000d0>KillTimer</font> <font color=#ff6060>0&</font>, mhTimer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Timer l&ouml;schen</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Sub</font> TabBox_CallBackProc()</strong><br><font color=#00a000>' CallBack-Funktion f&uuml;r die TabBox</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> R <font color=blue>As RECT</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> hStat <font color=blue>As LongPtr</font>, hFont <font color=blue>As LongPtr</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> i <font color=blue>As Integer</font>, x <font color=blue>As Long</font>, w <font color=blue>As Long</font>, h <font color=blue>As Long</font><br>&nbsp;<br>&nbsp;&nbsp;<font color=#d000d0>KillTimer</font> <font color=#ff6060>0&</font>, mhTimer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Timer l&ouml;schen</font><br>&nbsp;&nbsp;<font color=blue>If</font> miTimeOut &gt; <font color=#ff6060>0</font> <font color=blue>Then</font> mhTimer = <font color=#d000d0>SetTimer</font>(<font color=#ff6060>0&</font>, <font color=#ff6060>0&</font>, miTimeOut, <font color=blue>AddressOf</font> TabBox_TimeOutProc)<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;mhDlg = <font color=#d000d0>GetActiveWindow</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Handle der Dlg holen</font><br>&nbsp;&nbsp;hStat = <font color=#d000d0>GetDlgItem</font>(mhDlg, <font color=#ff6060>65535</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Handle des Textfeldes ID=65535</font><br>&nbsp;&nbsp;<font color=#d000d0>GetWindowRect</font> mhDlg, R:&nbsp;&nbsp;x = R.X1 + <font color=#ff6060>8</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Maße der Dialogbox holen</font><br>&nbsp;&nbsp;<font color=#d000d0>GetWindowRect</font> hStat, R:&nbsp;&nbsp;x = R.X1 - x:&nbsp;&nbsp;h = R.Y2 - R.Y1 + <font color=#ff6060>5</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Maße des Textfelds holen</font><br><br><font color=#00a000>' Schriftart des Textfeldes holen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &H31 = WM_GETFONT</font><br>&nbsp;&nbsp;hFont = <font color=#d000d0>SendDlgItemMessageA</font>(mhDlg, <font color=#ff6060>65535</font>, <font color=#ff6060>&H31</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>)<br>&nbsp;&nbsp;<font color=#d000d0>DestroyWindow</font> hStat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Textfeld entfernen</font><br><br>&nbsp;&nbsp;<font color=blue>For</font> i = <font color=#ff6060>0</font> <font color=blue>To</font> <font color=#5050f0>UBound</font>(msTxt)<font color=#00a000>&nbsp;' 20 = Bereich um 20 Pixel horizontal verbreitern</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w = (R.X2 - R.X1 + <font color=#ff6060>20</font>) / miLang <font color=blue>*</font> <font color=#5050f0>Len</font>(msTextlang(i))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Breite der Spalte errechnen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hStat = <font color=#d000d0>CreateWindowExA</font>(<font color=#ff6060>0</font>, &quot;<font color=red>STATIC</font>&quot;, msTxt(i), _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>WS_TABBOX</font> + <font color=#5050f0>IIf</font>(i = <font color=#ff6060>1</font>, <font color=#ff6060>&H2</font>, <font color=#ff6060>0</font>), _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x, <font color=#ff6060>33</font>, w, h, mhDlg, <font color=#ff6060>10000</font> + i, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Application.HinstancePtr, <font color=blue>ByVal</font> <font color=#ff6060>0&</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Weitere neue Labels erstellen</font><br><font color=#00a000>' Schriftart setzen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &H30 = WM_SETFONT</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SendDlgItemMessageA</font> mhDlg, <font color=#ff6060>10000</font> + i, <font color=#ff6060>&H30</font>, hFont, <font color=blue>True</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Schriftart zuordnen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x = x + w&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Position f&uuml;r das n&auml;chste Textfeld</font><br>&nbsp;&nbsp;<font color=blue>Next</font> i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' 2 = ID des OK-Buttons</font><br>&nbsp;&nbsp;<font color=#d000d0>SetDlgItemTextA</font> mhDlg, <font color=#ff6060>2</font>, &quot;<font color=red>Schließen</font>&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Buttontext f&uuml;r OK-Button setzen</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Sub</font> TabBox_TimeOutProc()</strong><br><font color=#00a000>' TabBox schließen&nbsp;&nbsp;&nbsp;&nbsp;&H10 = WM_CLOSE</font><br>&nbsp;&nbsp;<font color=#d000d0>PostMessageA</font> mhDlg, <font color=#ff6060>&H10</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font><br><strong><font color=blue>End Sub</font></strong><br><br><br><font color=#00a000>' ############### Beispielaufruf #######################</font><br><strong><font color=blue>Sub</font> Aufruftest()</strong><br>&nbsp;&nbsp;<font color=blue>Dim</font> sMsg <font color=blue>As String</font><br><br>&nbsp;&nbsp;sMsg = &quot;<font color=red>Anzahl der gefundenen Objekte</font>&quot; & <font color=#a000c0>vbTab</font> & <font color=#5050f0>Format</font>(<font color=#ff6060>5000</font>, &quot;<font color=red>##,##0</font>&quot;) & <font color=#a000c0>vbTab</font> & &quot;<font color=red>&nbsp;&nbsp; </font>&quot; & <font color=#a000c0>vbLf</font> _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; & &quot;<font color=red>&nbsp;&nbsp; - davon Verzeichnisse</font>&quot; & <font color=#a000c0>vbTab</font> & &quot;<font color=red>125</font>&quot; & <font color=#a000c0>vbLf</font> _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; & &quot;<font color=red>&nbsp;&nbsp; - davon Dateien</font>&quot; & <font color=#a000c0>vbTab</font> & <font color=#5050f0>Format</font>(<font color=#ff6060>4250</font>, &quot;<font color=red>##,##0</font>&quot;) & <font color=#a000c0>vbLf</font> _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; & &quot;<font color=red>&nbsp;&nbsp; - davon unidentifizierbar</font>&quot; & <font color=#a000c0>vbTab</font> & &quot;<font color=red>625</font>&quot; & <font color=#a000c0>vbLf</font> & <font color=#a000c0>vbLf</font> _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; & &quot;<font color=red>erstelt am </font>&quot; & <font color=blue>Date</font><br><br>&nbsp;&nbsp;TabBox sTxt:=sMsg, sCaption:=&quot;<font color=red>Abschlussauswertung</font>&quot;, iButton:=vbInformation, iTimeOut:=10000<br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Datei in mehreren Instanzen suchen]]></title>
			<link>https://www.clever-excel-forum.de/Thread-Datei-in-mehreren-Instanzen-suchen</link>
			<pubDate>Thu, 20 Feb 2025 13:39:24 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.clever-excel-forum.de/member.php?action=profile&uid=18350">volti</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.clever-excel-forum.de/Thread-Datei-in-mehreren-Instanzen-suchen</guid>
			<description><![CDATA[Hallo liebe Leserin, lieber Leser,<br /><br />manchmal hat man aus irgendwelchen Gründen Dateien geöffnet, die sich in mehreren Excel-Instanzen befinden.<br />Will man diese schließen oder eine bestimmte Datei via Workbook-Schleife finden, scheitert man oft, da nur in der eigenen Instanz gesucht wird.<br /><br />Nachfolgende Funktion ermittelt alle vorhandenen Excel-Instanzen, die man nun für seine Zwecke nutzen kann.<br /><br />Viel Erfolg beim Testen.<br /><!--- erstellt am 20.02.2025 14:32:50 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 820px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus143250' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA143250' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetClassNameA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lpClassName <font color=blue>As String</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> nMaxCount <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>EnumWindows</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpEnumFunc <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>EnumChildWindows</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hWndParent <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lpEnumFunc <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Sub</font> <font color=#d000d0>IIDFromString</font> <font color=blue>Lib</font> &quot;<font color=red>ole32.dll</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpsz <font color=blue>As String</font>, <font color=blue>ByRef</font> lpiid <font color=blue>As GUID</font>)<br><font color=blue>Private Declare PtrSafe Sub</font> <font color=#d000d0>AccessibleObjectFromWindow</font> <font color=blue>Lib</font> &quot;<font color=red>oleacc.dll</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> dwId <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByRef</font> riid <font color=blue>As GUID</font>, <font color=blue>ByRef</font> ppvObject <font color=blue>As Any</font>)<br><br><font color=blue>Private Type GUID</font><br>&nbsp;&nbsp; Data1 <font color=blue>As Long</font><br>&nbsp;&nbsp; Data2 <font color=blue>As Integer</font><br>&nbsp;&nbsp; Data3 <font color=blue>As Integer</font><br>&nbsp;&nbsp; Data4(<font color=#ff6060>0</font> <font color=blue>To</font> <font color=#ff6060>7</font>) <font color=blue>As Byte</font><br><font color=blue>End Type</font><br><font color=blue>Private</font> mtGuid <font color=blue>As GUID</font><br><font color=blue>Private Const</font> <font color=#d000d0>IID_EXCELWINDOW</font> <font color=blue>As String</font> = &quot;<font color=red>{00020893-0000-0000-C000-000000000046}</font>&quot;<br><font color=blue>Private Const</font> <font color=#d000d0>OBJID_NATIVEOM</font>&nbsp;&nbsp;<font color=blue>As Long</font> = <font color=#ff6060>&HFFFFFFF0</font><br><font color=blue>Private</font> moTmpApplications()&nbsp;&nbsp; <font color=blue>As</font> Application<br><font color=blue>Private</font> miAnz&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Long</font><br><font color=blue>Private</font> msAllHWnd <font color=blue>As String</font>, msClassname <font color=blue>As String *</font> <font color=#ff6060>16</font><br><br><strong><font color=blue>Function</font> GetApplications() <font color=blue>As</font> Application()</strong><br><font color=#00a000>' Alle Kinder-Fenster &uuml;ber die geladenen Eltern-Fenster ermitteln</font><br>&nbsp;&nbsp;miAnz = <font color=#ff6060>1</font><br>&nbsp;&nbsp;<font color=blue>Erase</font> moTmpApplications: msAllHWnd = &quot;<font color=red>,</font>&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Array zur&uuml;cksetzen</font><br>&nbsp;&nbsp;<br><font color=#00a000>' Konvertiere die IID des Excel-Window-Objektes in die GUID-Struktur</font><br>&nbsp;&nbsp;<font color=blue>Call</font> <font color=#d000d0>IIDFromString</font>(<font color=blue>StrConv</font>(<font color=#d000d0>IID_EXCELWINDOW</font>, <font color=#a000c0>vbUnicode</font>), mtGuid)<br><br>&nbsp;&nbsp;<font color=blue>Call</font> <font color=#d000d0>EnumWindows</font>(<font color=blue>AddressOf</font> EnumAppsProc, <font color=blue>ByVal</font> <font color=#ff6060>0&</font>)<br>&nbsp;&nbsp;GetApplications = moTmpApplications&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Array zur&uuml;ckgeben</font><br><br><strong><font color=blue>End Function</font></strong><br><br><strong><font color=blue>Private Function</font> EnumAppsProc(<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As Long</font>) <font color=blue>As Long</font></strong><br><font color=#00a000>' Durchlaufe alle Eltern-Fenster</font><br>&nbsp;&nbsp;<font color=blue>If</font> <font color=#5050f0>Left&#36;</font>(msClassname, <font color=#d000d0>GetClassNameA</font>(hwnd, msClassname, <font color=#ff6060>16</font>)) = &quot;<font color=red>XLMAIN</font>&quot; <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>EnumChildWindows</font> hwnd, <font color=blue>AddressOf</font> EnumXlsProc, <font color=blue>ByVal</font> <font color=#ff6060>0&</font><br>&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;EnumAppsProc = <font color=#ff6060>1</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' N&auml;chster Aufruf</font><br><strong><font color=blue>End Function</font></strong><br><br><strong><font color=blue>Private Function</font> EnumXlsProc(<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As Long</font>) <font color=blue>As Long</font></strong><br><font color=#00a000>' Durchlaufe alle Kinder-Fenster bis EXCEL7 gefunden</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> oWin <font color=blue>As</font> Window, hWndApp <font color=blue>As LongPtr</font><br><br>&nbsp;&nbsp;<font color=blue>If</font> <font color=#5050f0>Left&#36;</font>(msClassname, <font color=#d000d0>GetClassNameA</font>(hwnd, msClassname, <font color=#ff6060>16</font>)) = &quot;<font color=red>EXCEL7</font>&quot; <font color=blue>Then</font><br><br><font color=#00a000>' Hole &uuml;ber die Zugriffsnummer das entsprechende Window-Objekt</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Call</font> <font color=#d000d0>AccessibleObjectFromWindow</font>(hwnd, <font color=#d000d0>OBJID_NATIVEOM</font>, mtGuid, oWin)<br><br><font color=#00a000>' Verweis setzen auf Application-Objekt</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If Not</font> oWin <font color=blue>Is Nothing Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hWndApp = oWin.Application.hwnd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> <font color=#5050f0>InStr</font>(msAllHWnd, &quot;<font color=red>,</font>&quot; & hWndApp & &quot;<font color=red>,</font>&quot;) = <font color=#ff6060>0</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ReDim Preserve</font> moTmpApplications(miAnz)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Set</font> moTmpApplications(miAnz) = oWin.Application<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msAllHWnd = msAllHWnd & hWndApp & &quot;<font color=red>,</font>&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; miAnz = miAnz + <font color=#ff6060>1</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Exit Function</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Fertig mit Job</font><br>&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;EnumXlsProc = <font color=#ff6060>1</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' N&auml;chster Aufruf</font><br><strong><font color=blue>End Function</font></strong><br><br><font color=#00a000>' ##### Aufrufbeispiele #####</font><br><strong><font color=blue>Sub</font> SchließeAlleAnderenInstanzen()</strong><br><font color=#00a000>' Sub beendet alle anderen Excel-Instanzen außer der Aktuellen</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> oApps() <font color=blue>As</font> Application, WkB <font color=blue>As</font> Workbook<br>&nbsp;&nbsp;<font color=blue>Dim</font> i <font color=blue>As Long</font>, bIsThis <font color=blue>As Boolean</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;oApps = GetApplications&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Hole die Excel-Instanzen</font><br><br>&nbsp;&nbsp;<font color=blue>For</font> i = <font color=#ff6060>1</font> <font color=blue>To</font> <font color=#5050f0>UBound</font>(oApps)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bIsThis = <font color=blue>False</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>For Each</font> WkB <font color=blue>In</font> oApps(i).Workbooks<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bIsThis = WkB <font color=blue>Is</font> ThisWorkbook&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Beinhaltet Instanz diese Datei?</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> bIsThis <font color=blue>Then Exit For</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Wenn ja =&gt; raus</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Next</font> WkB<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oApps(i).DisplayAlerts = <font color=blue>False</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> bIsThis = <font color=blue>False Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oApps(i).DisplayAlerts = <font color=blue>False</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oApps(i).Quit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Diese Excel-Instanz beenden</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;<font color=blue>Next</font> i<br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Sub</font> SucheDateiInAllesInstanzen()</strong><br><font color=#00a000>' Sub sucht eine offene Mappe in allen Excel-Instanzen</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> oApps() <font color=blue>As</font> Application, WkB <font color=blue>As</font> Workbook<br>&nbsp;&nbsp;<font color=blue>Dim</font> i <font color=blue>As Long</font>, sMappe <font color=blue>As String</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;sMappe = ThisWorkbook.Name<br>&nbsp;&nbsp;oApps = GetApplications&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Hole die Excel-Instanzen</font><br><br>&nbsp;&nbsp;<font color=blue>For</font> i = <font color=#ff6060>1</font> <font color=blue>To</font> <font color=#5050f0>UBound</font>(oApps)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>For Each</font> WkB <font color=blue>In</font> oApps(i).Workbooks<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> WkB.Name <font color=blue>Like</font> sMappe <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>MsgBox</font> &quot;<font color=red>Workbook '</font>&quot; & sMappe & &quot;<font color=red>' gefunden in Instanz </font>&quot; _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& i & &quot;<font color=red> von </font>&quot; & <font color=#5050f0>UBound</font>(oApps) & &quot;<font color=red> Instanz(en)!</font>&quot;, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#a000c0>vbInformation</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Next</font> WkB<br>&nbsp;&nbsp;<font color=blue>Next</font> i<br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></description>
			<content:encoded><![CDATA[Hallo liebe Leserin, lieber Leser,<br /><br />manchmal hat man aus irgendwelchen Gründen Dateien geöffnet, die sich in mehreren Excel-Instanzen befinden.<br />Will man diese schließen oder eine bestimmte Datei via Workbook-Schleife finden, scheitert man oft, da nur in der eigenen Instanz gesucht wird.<br /><br />Nachfolgende Funktion ermittelt alle vorhandenen Excel-Instanzen, die man nun für seine Zwecke nutzen kann.<br /><br />Viel Erfolg beim Testen.<br /><!--- erstellt am 20.02.2025 14:32:50 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 820px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus143250' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA143250' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetClassNameA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lpClassName <font color=blue>As String</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> nMaxCount <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>EnumWindows</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpEnumFunc <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>EnumChildWindows</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hWndParent <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lpEnumFunc <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Sub</font> <font color=#d000d0>IIDFromString</font> <font color=blue>Lib</font> &quot;<font color=red>ole32.dll</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpsz <font color=blue>As String</font>, <font color=blue>ByRef</font> lpiid <font color=blue>As GUID</font>)<br><font color=blue>Private Declare PtrSafe Sub</font> <font color=#d000d0>AccessibleObjectFromWindow</font> <font color=blue>Lib</font> &quot;<font color=red>oleacc.dll</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> dwId <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByRef</font> riid <font color=blue>As GUID</font>, <font color=blue>ByRef</font> ppvObject <font color=blue>As Any</font>)<br><br><font color=blue>Private Type GUID</font><br>&nbsp;&nbsp; Data1 <font color=blue>As Long</font><br>&nbsp;&nbsp; Data2 <font color=blue>As Integer</font><br>&nbsp;&nbsp; Data3 <font color=blue>As Integer</font><br>&nbsp;&nbsp; Data4(<font color=#ff6060>0</font> <font color=blue>To</font> <font color=#ff6060>7</font>) <font color=blue>As Byte</font><br><font color=blue>End Type</font><br><font color=blue>Private</font> mtGuid <font color=blue>As GUID</font><br><font color=blue>Private Const</font> <font color=#d000d0>IID_EXCELWINDOW</font> <font color=blue>As String</font> = &quot;<font color=red>{00020893-0000-0000-C000-000000000046}</font>&quot;<br><font color=blue>Private Const</font> <font color=#d000d0>OBJID_NATIVEOM</font>&nbsp;&nbsp;<font color=blue>As Long</font> = <font color=#ff6060>&HFFFFFFF0</font><br><font color=blue>Private</font> moTmpApplications()&nbsp;&nbsp; <font color=blue>As</font> Application<br><font color=blue>Private</font> miAnz&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Long</font><br><font color=blue>Private</font> msAllHWnd <font color=blue>As String</font>, msClassname <font color=blue>As String *</font> <font color=#ff6060>16</font><br><br><strong><font color=blue>Function</font> GetApplications() <font color=blue>As</font> Application()</strong><br><font color=#00a000>' Alle Kinder-Fenster &uuml;ber die geladenen Eltern-Fenster ermitteln</font><br>&nbsp;&nbsp;miAnz = <font color=#ff6060>1</font><br>&nbsp;&nbsp;<font color=blue>Erase</font> moTmpApplications: msAllHWnd = &quot;<font color=red>,</font>&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Array zur&uuml;cksetzen</font><br>&nbsp;&nbsp;<br><font color=#00a000>' Konvertiere die IID des Excel-Window-Objektes in die GUID-Struktur</font><br>&nbsp;&nbsp;<font color=blue>Call</font> <font color=#d000d0>IIDFromString</font>(<font color=blue>StrConv</font>(<font color=#d000d0>IID_EXCELWINDOW</font>, <font color=#a000c0>vbUnicode</font>), mtGuid)<br><br>&nbsp;&nbsp;<font color=blue>Call</font> <font color=#d000d0>EnumWindows</font>(<font color=blue>AddressOf</font> EnumAppsProc, <font color=blue>ByVal</font> <font color=#ff6060>0&</font>)<br>&nbsp;&nbsp;GetApplications = moTmpApplications&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Array zur&uuml;ckgeben</font><br><br><strong><font color=blue>End Function</font></strong><br><br><strong><font color=blue>Private Function</font> EnumAppsProc(<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As Long</font>) <font color=blue>As Long</font></strong><br><font color=#00a000>' Durchlaufe alle Eltern-Fenster</font><br>&nbsp;&nbsp;<font color=blue>If</font> <font color=#5050f0>Left&#36;</font>(msClassname, <font color=#d000d0>GetClassNameA</font>(hwnd, msClassname, <font color=#ff6060>16</font>)) = &quot;<font color=red>XLMAIN</font>&quot; <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>EnumChildWindows</font> hwnd, <font color=blue>AddressOf</font> EnumXlsProc, <font color=blue>ByVal</font> <font color=#ff6060>0&</font><br>&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;EnumAppsProc = <font color=#ff6060>1</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' N&auml;chster Aufruf</font><br><strong><font color=blue>End Function</font></strong><br><br><strong><font color=blue>Private Function</font> EnumXlsProc(<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As Long</font>) <font color=blue>As Long</font></strong><br><font color=#00a000>' Durchlaufe alle Kinder-Fenster bis EXCEL7 gefunden</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> oWin <font color=blue>As</font> Window, hWndApp <font color=blue>As LongPtr</font><br><br>&nbsp;&nbsp;<font color=blue>If</font> <font color=#5050f0>Left&#36;</font>(msClassname, <font color=#d000d0>GetClassNameA</font>(hwnd, msClassname, <font color=#ff6060>16</font>)) = &quot;<font color=red>EXCEL7</font>&quot; <font color=blue>Then</font><br><br><font color=#00a000>' Hole &uuml;ber die Zugriffsnummer das entsprechende Window-Objekt</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Call</font> <font color=#d000d0>AccessibleObjectFromWindow</font>(hwnd, <font color=#d000d0>OBJID_NATIVEOM</font>, mtGuid, oWin)<br><br><font color=#00a000>' Verweis setzen auf Application-Objekt</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If Not</font> oWin <font color=blue>Is Nothing Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hWndApp = oWin.Application.hwnd<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> <font color=#5050f0>InStr</font>(msAllHWnd, &quot;<font color=red>,</font>&quot; & hWndApp & &quot;<font color=red>,</font>&quot;) = <font color=#ff6060>0</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ReDim Preserve</font> moTmpApplications(miAnz)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Set</font> moTmpApplications(miAnz) = oWin.Application<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msAllHWnd = msAllHWnd & hWndApp & &quot;<font color=red>,</font>&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; miAnz = miAnz + <font color=#ff6060>1</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Exit Function</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Fertig mit Job</font><br>&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;EnumXlsProc = <font color=#ff6060>1</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' N&auml;chster Aufruf</font><br><strong><font color=blue>End Function</font></strong><br><br><font color=#00a000>' ##### Aufrufbeispiele #####</font><br><strong><font color=blue>Sub</font> SchließeAlleAnderenInstanzen()</strong><br><font color=#00a000>' Sub beendet alle anderen Excel-Instanzen außer der Aktuellen</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> oApps() <font color=blue>As</font> Application, WkB <font color=blue>As</font> Workbook<br>&nbsp;&nbsp;<font color=blue>Dim</font> i <font color=blue>As Long</font>, bIsThis <font color=blue>As Boolean</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;oApps = GetApplications&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Hole die Excel-Instanzen</font><br><br>&nbsp;&nbsp;<font color=blue>For</font> i = <font color=#ff6060>1</font> <font color=blue>To</font> <font color=#5050f0>UBound</font>(oApps)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bIsThis = <font color=blue>False</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>For Each</font> WkB <font color=blue>In</font> oApps(i).Workbooks<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bIsThis = WkB <font color=blue>Is</font> ThisWorkbook&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Beinhaltet Instanz diese Datei?</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> bIsThis <font color=blue>Then Exit For</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Wenn ja =&gt; raus</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Next</font> WkB<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oApps(i).DisplayAlerts = <font color=blue>False</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> bIsThis = <font color=blue>False Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oApps(i).DisplayAlerts = <font color=blue>False</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oApps(i).Quit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Diese Excel-Instanz beenden</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;<font color=blue>Next</font> i<br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Sub</font> SucheDateiInAllesInstanzen()</strong><br><font color=#00a000>' Sub sucht eine offene Mappe in allen Excel-Instanzen</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> oApps() <font color=blue>As</font> Application, WkB <font color=blue>As</font> Workbook<br>&nbsp;&nbsp;<font color=blue>Dim</font> i <font color=blue>As Long</font>, sMappe <font color=blue>As String</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;sMappe = ThisWorkbook.Name<br>&nbsp;&nbsp;oApps = GetApplications&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Hole die Excel-Instanzen</font><br><br>&nbsp;&nbsp;<font color=blue>For</font> i = <font color=#ff6060>1</font> <font color=blue>To</font> <font color=#5050f0>UBound</font>(oApps)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>For Each</font> WkB <font color=blue>In</font> oApps(i).Workbooks<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> WkB.Name <font color=blue>Like</font> sMappe <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>MsgBox</font> &quot;<font color=red>Workbook '</font>&quot; & sMappe & &quot;<font color=red>' gefunden in Instanz </font>&quot; _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& i & &quot;<font color=red> von </font>&quot; & <font color=#5050f0>UBound</font>(oApps) & &quot;<font color=red> Instanz(en)!</font>&quot;, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#a000c0>vbInformation</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Next</font> WkB<br>&nbsp;&nbsp;<font color=blue>Next</font> i<br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Userform - In Listbox mit Mausrad scrollen und weiteres]]></title>
			<link>https://www.clever-excel-forum.de/Thread-Userform-In-Listbox-mit-Mausrad-scrollen-und-weiteres</link>
			<pubDate>Thu, 13 Feb 2025 07:45:41 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.clever-excel-forum.de/member.php?action=profile&uid=18350">volti</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.clever-excel-forum.de/Thread-Userform-In-Listbox-mit-Mausrad-scrollen-und-weiteres</guid>
			<description><![CDATA[Liebe Leserin, lieber Leser,<br />manchmal möchte man in seiner Userform-Listbox gerne mit dem Mausrad bequem scrollen oder vielleicht einen Doppelclick oder Rechtsclick ausführen, um weitere Aktionen zu ermöglichen.<br /><br />Das ist bei einer Listbox so weit ich weiß nicht vorgesehen.<br /><br />Das Thema 'Scrollen mit dem Mausrad' wurde hier schon mal behandelt.<br /><a href="https://www.clever-excel-forum.de/Thread-Userform-Scrollen-mit-dem-Mausrad-in-List-und-Comboboxen" target="_blank" rel="noopener" class="mycode_url">https://www.clever-excel-forum.de/Thread...Comboboxen</a><br /><br />Damals wurde die Funktionalität über Mousehooking realisiert. Mit der u.a. gezeigten, weniger empfindlichen, Methode benötigt man weniger Code.<br />Unterschied ist jedoch, dass hier die gewünschte Listbox aktiviert sein muss, während beim Mousehooking das Scrollen bereits beim Überfahren funktioniert.<br /><br />Hier eine Minimalversion für Listboxscrollen für z.B. zwei Listboxen.<br />PS: Hat man erst mal Zugang zur Listbox, kann man noch viel mehr machen.....<br /><br /><!--- erstellt am 13.02.2025 08:44:46 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 930px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus084446' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA084446' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=#00a000>' &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; in Modul &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>PostMessageA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> wMsg <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, lParam <font color=blue>As Any</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetFocus</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; () <font color=blue>As LongPtr</font><br><br><font color=blue>#If</font> <font color=blue><b>Win64</b></font> <font color=blue>Then</font><br>&nbsp;<font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetWindowLongA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Alias</font> &quot;<font color=red>SetWindowLongPtrA</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIndex <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> dwNewLong <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>#Else</font><br>&nbsp;<font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetWindowLongA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIndex <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> dwNewLong <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>#End If</font><br><font color=blue>Private Const</font> <font color=#d000d0>GWL_WNDPROC</font> <font color=blue>As Long</font> = <font color=#ff6060>-4</font><br><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>CallWindowProcA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpPrevWndFunc <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> Msg <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><br><font color=blue>Dim</font> mlpOldProc <font color=blue>As LongPtr</font><br><br><strong><font color=blue>Sub</font> UF_Start(oCtrl <font color=blue>As</font> control)</strong><br>&nbsp;&nbsp;<font color=blue>Dim</font> hWndCtrl <font color=blue>As LongPtr</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>On Error GoTo</font> Fehler<br>&nbsp;&nbsp;oCtrl.SetFocus<br>&nbsp;&nbsp;hWndCtrl = <font color=#d000d0>GetFocus</font>()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Handle holen</font><br>&nbsp;&nbsp;<font color=blue>If</font> hWndCtrl &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Listbox hooken</font><br>&nbsp;&nbsp;&nbsp;&nbsp; mlpOldProc = <font color=#d000d0>SetWindowLongA</font>(hWndCtrl, <font color=#d000d0>GWL_WNDPROC</font>, <font color=blue>AddressOf</font> WindowProc)<br>&nbsp;&nbsp;<font color=blue>End If</font><br><b><font color=black>Fehler:</font></b><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Function</font> WindowProc(<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> uMsg <font color=blue>As Long</font>, _</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> i <font color=blue>As Long</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>Select Case</font> uMsg<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>Case</font> <font color=#ff6060>&H20A</font><font color=#00a000>&nbsp;' WM_MOUSEWHEEL</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> hwnd = <font color=#d000d0>GetFocus</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> wParam &gt; <font color=#ff6060>&HFF0000</font> <font color=blue>Then</font> i = <font color=#ff6060>40</font> <font color=blue>Else</font> i = <font color=#ff6060>38</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>PostMessageA</font> hwnd, <font color=#ff6060>&H100</font>, i, <font color=#ff6060>0</font><font color=#00a000>&nbsp;' WM_KEYDOWN</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>PostMessageA</font> hwnd, <font color=#ff6060>&H101</font>, i, <font color=#ff6060>0</font><font color=#00a000>&nbsp;' WM_KEYUP</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Exit Function</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;<font color=blue>Case</font> <font color=#ff6060>&H203</font>, <font color=#ff6060>&H205</font><font color=#00a000>&nbsp;' WM_LBUTTONDBLCLK und WM_RBUTTONUP</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>MsgBox</font> <font color=#5050f0>IIf</font>(uMsg = <font color=#ff6060>&H203</font>, &quot;<font color=red>Doppelclick</font>&quot;, &quot;<font color=red>Rechtsclick</font>&quot;)<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>End Select</font><br>&nbsp;&nbsp;WindowProc = <font color=#d000d0>CallWindowProcA</font>(mlpOldProc, hwnd, uMsg, <font color=blue>ByVal</font> wParam, <font color=blue>ByVal</font> lParam)<br><strong><font color=blue>End Function</font></strong><br><br><br><font color=#00a000>' &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; ins Userformmodul &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;</font><br><strong><font color=blue>Private Sub</font> UserForm_Activate()</strong><br>&nbsp;&nbsp;<font color=blue>Call</font> UF_Start(Me.ListBox1)<br>&nbsp;&nbsp;<font color=blue>Call</font> UF_Start(Me.ListBox2)<br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></description>
			<content:encoded><![CDATA[Liebe Leserin, lieber Leser,<br />manchmal möchte man in seiner Userform-Listbox gerne mit dem Mausrad bequem scrollen oder vielleicht einen Doppelclick oder Rechtsclick ausführen, um weitere Aktionen zu ermöglichen.<br /><br />Das ist bei einer Listbox so weit ich weiß nicht vorgesehen.<br /><br />Das Thema 'Scrollen mit dem Mausrad' wurde hier schon mal behandelt.<br /><a href="https://www.clever-excel-forum.de/Thread-Userform-Scrollen-mit-dem-Mausrad-in-List-und-Comboboxen" target="_blank" rel="noopener" class="mycode_url">https://www.clever-excel-forum.de/Thread...Comboboxen</a><br /><br />Damals wurde die Funktionalität über Mousehooking realisiert. Mit der u.a. gezeigten, weniger empfindlichen, Methode benötigt man weniger Code.<br />Unterschied ist jedoch, dass hier die gewünschte Listbox aktiviert sein muss, während beim Mousehooking das Scrollen bereits beim Überfahren funktioniert.<br /><br />Hier eine Minimalversion für Listboxscrollen für z.B. zwei Listboxen.<br />PS: Hat man erst mal Zugang zur Listbox, kann man noch viel mehr machen.....<br /><br /><!--- erstellt am 13.02.2025 08:44:46 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 930px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus084446' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA084446' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=#00a000>' &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; in Modul &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>PostMessageA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> wMsg <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, lParam <font color=blue>As Any</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetFocus</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; () <font color=blue>As LongPtr</font><br><br><font color=blue>#If</font> <font color=blue><b>Win64</b></font> <font color=blue>Then</font><br>&nbsp;<font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetWindowLongA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Alias</font> &quot;<font color=red>SetWindowLongPtrA</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIndex <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> dwNewLong <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>#Else</font><br>&nbsp;<font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetWindowLongA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIndex <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> dwNewLong <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>#End If</font><br><font color=blue>Private Const</font> <font color=#d000d0>GWL_WNDPROC</font> <font color=blue>As Long</font> = <font color=#ff6060>-4</font><br><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>CallWindowProcA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpPrevWndFunc <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> Msg <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><br><font color=blue>Dim</font> mlpOldProc <font color=blue>As LongPtr</font><br><br><strong><font color=blue>Sub</font> UF_Start(oCtrl <font color=blue>As</font> control)</strong><br>&nbsp;&nbsp;<font color=blue>Dim</font> hWndCtrl <font color=blue>As LongPtr</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>On Error GoTo</font> Fehler<br>&nbsp;&nbsp;oCtrl.SetFocus<br>&nbsp;&nbsp;hWndCtrl = <font color=#d000d0>GetFocus</font>()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Handle holen</font><br>&nbsp;&nbsp;<font color=blue>If</font> hWndCtrl &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Listbox hooken</font><br>&nbsp;&nbsp;&nbsp;&nbsp; mlpOldProc = <font color=#d000d0>SetWindowLongA</font>(hWndCtrl, <font color=#d000d0>GWL_WNDPROC</font>, <font color=blue>AddressOf</font> WindowProc)<br>&nbsp;&nbsp;<font color=blue>End If</font><br><b><font color=black>Fehler:</font></b><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Function</font> WindowProc(<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> uMsg <font color=blue>As Long</font>, _</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> i <font color=blue>As Long</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>Select Case</font> uMsg<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>Case</font> <font color=#ff6060>&H20A</font><font color=#00a000>&nbsp;' WM_MOUSEWHEEL</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> hwnd = <font color=#d000d0>GetFocus</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> wParam &gt; <font color=#ff6060>&HFF0000</font> <font color=blue>Then</font> i = <font color=#ff6060>40</font> <font color=blue>Else</font> i = <font color=#ff6060>38</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>PostMessageA</font> hwnd, <font color=#ff6060>&H100</font>, i, <font color=#ff6060>0</font><font color=#00a000>&nbsp;' WM_KEYDOWN</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>PostMessageA</font> hwnd, <font color=#ff6060>&H101</font>, i, <font color=#ff6060>0</font><font color=#00a000>&nbsp;' WM_KEYUP</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Exit Function</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;<font color=blue>Case</font> <font color=#ff6060>&H203</font>, <font color=#ff6060>&H205</font><font color=#00a000>&nbsp;' WM_LBUTTONDBLCLK und WM_RBUTTONUP</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>MsgBox</font> <font color=#5050f0>IIf</font>(uMsg = <font color=#ff6060>&H203</font>, &quot;<font color=red>Doppelclick</font>&quot;, &quot;<font color=red>Rechtsclick</font>&quot;)<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>End Select</font><br>&nbsp;&nbsp;WindowProc = <font color=#d000d0>CallWindowProcA</font>(mlpOldProc, hwnd, uMsg, <font color=blue>ByVal</font> wParam, <font color=blue>ByVal</font> lParam)<br><strong><font color=blue>End Function</font></strong><br><br><br><font color=#00a000>' &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; ins Userformmodul &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;</font><br><strong><font color=blue>Private Sub</font> UserForm_Activate()</strong><br>&nbsp;&nbsp;<font color=blue>Call</font> UF_Start(Me.ListBox1)<br>&nbsp;&nbsp;<font color=blue>Call</font> UF_Start(Me.ListBox2)<br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Dateieigenschaften EXIF-Daten ermitteln]]></title>
			<link>https://www.clever-excel-forum.de/Thread-Dateieigenschaften-EXIF-Daten-ermitteln</link>
			<pubDate>Wed, 05 Feb 2025 12:32:35 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.clever-excel-forum.de/member.php?action=profile&uid=18350">volti</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.clever-excel-forum.de/Thread-Dateieigenschaften-EXIF-Daten-ermitteln</guid>
			<description><![CDATA[Liebe Leserin, lieber Leser,<br /><br />zum Auslesen diverser Dateieigenschaften von Mediendateien wird oft GetDetailsOf verwendet.<br /><br />Hier mal eine weitere Möglichkeit, sich diese Daten anzeigen zu lassen.<br /><br />Die Sub listet alle gefundene Eigenschaften mit Name und Wert auf.<br />Die Funktion zeigt, wie man ohne Schleife auf eine Einzeleigenschaft, hier Aufnahmedatum, zugreifen kann.<br /><br /><!--- erstellt am 05.02.2025 13:28:10 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 840px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus132810' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA132810' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><strong><font color=blue>Function</font> Aufnahmedatum(sDatei <font color=blue>As String</font>) <font color=blue>As Variant</font></strong><br><font color=#00a000>' Function gibt das Aufnahmedatum eines Fotos zur&uuml;ck</font><br>&nbsp;&nbsp;<font color=blue>On Error Resume Next</font><br>&nbsp;&nbsp;<font color=blue>With</font> <font color=#5050f0>CreateObject</font>(&quot;<font color=red>WIA.ImageFile</font>&quot;)<br>&nbsp;&nbsp;&nbsp;&nbsp; .LoadFile (sDatei)<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> Err.Number &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Aufnahmedatum = &quot;<font color=red>Die Datei</font>&quot; & <font color=#a000c0>vbLf</font> & sDatei & <font color=#a000c0>vbLf</font> _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& &quot;<font color=red>wurde nicht gefunden!</font>&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Else</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Aufnahmedatum = &quot;<font color=red>Kein Aufnahmedatum vorhanden!</font>&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Aufnahmedatum = <font color=#5050f0>CDate</font>(<font color=blue>Replace</font>(.Properties(&quot;<font color=red>ExifDTDigitized</font>&quot;).Value, &quot;<font color=red>:</font>&quot;, &quot;<font color=red>/</font>&quot;, <font color=#ff6060>1</font>, <font color=#ff6060>2</font>))<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;<font color=blue>End With</font><br><strong><font color=blue>End Function</font></strong><br><br><strong><font color=blue>Sub</font> ErmittleDateieigenschaften(sDatei <font color=blue>As String</font>)</strong><br><font color=#00a000>' Funktion listet alle EXIF-Dateieigenschaften der Datei auf</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> oProp <font color=blue>As Object</font>, L <font color=blue>As Long</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>Lz</font> <font color=blue>As String</font> = &quot;<font color=red>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font>&quot;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>On Error Resume Next</font><br>&nbsp;&nbsp;<font color=blue>With</font> <font color=#5050f0>CreateObject</font>(&quot;<font color=red>WIA.ImageFile</font>&quot;)<br>&nbsp;&nbsp;&nbsp;&nbsp; .LoadFile (sDatei)<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> Err.Number &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>MsgBox</font> &quot;<font color=red>Die Datei</font>&quot; & <font color=#a000c0>vbLf</font> & sDatei & <font color=#a000c0>vbLf</font> & &quot;<font color=red>wurde nicht gefunden!</font>&quot;, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#a000c0>vbCritical</font>, &quot;<font color=red>EXIF-Daten ermitteln</font>&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Exit Sub</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>For Each</font> oProp <font color=blue>In</font> .Properties<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>With</font> oProp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L = <font color=#5050f0>Len</font>(.<font color=blue>Name</font>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> L &gt; <font color=#ff6060>5</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Debug.Print</font> <font color=#5050f0>Left&#36;</font>(.<font color=blue>Name</font> & <font color=#d000d0>Lz</font> & <font color=#d000d0>Lz</font>, <font color=#ff6060>25</font>) & .Value<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End With</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Next</font> oProp<br>&nbsp;&nbsp;<font color=blue>End With</font><br><strong><font color=blue>End Sub</font></strong><br><br><br><br><strong><font color=blue>Sub</font> Test()</strong><br>&nbsp;&nbsp;ErmittleDateieigenschaften &quot;<font color=red>D:&bsol;Pictures&bsol;Fotos&bsol;PICT0010.JPG</font>&quot;<br>&nbsp;&nbsp;<font color=blue>MsgBox</font> Aufnahmedatum(&quot;<font color=red>D:&bsol;Pictures&bsol;Fotos&bsol;PICT0010.JPG</font>&quot;)<br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></description>
			<content:encoded><![CDATA[Liebe Leserin, lieber Leser,<br /><br />zum Auslesen diverser Dateieigenschaften von Mediendateien wird oft GetDetailsOf verwendet.<br /><br />Hier mal eine weitere Möglichkeit, sich diese Daten anzeigen zu lassen.<br /><br />Die Sub listet alle gefundene Eigenschaften mit Name und Wert auf.<br />Die Funktion zeigt, wie man ohne Schleife auf eine Einzeleigenschaft, hier Aufnahmedatum, zugreifen kann.<br /><br /><!--- erstellt am 05.02.2025 13:28:10 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 840px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus132810' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA132810' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><strong><font color=blue>Function</font> Aufnahmedatum(sDatei <font color=blue>As String</font>) <font color=blue>As Variant</font></strong><br><font color=#00a000>' Function gibt das Aufnahmedatum eines Fotos zur&uuml;ck</font><br>&nbsp;&nbsp;<font color=blue>On Error Resume Next</font><br>&nbsp;&nbsp;<font color=blue>With</font> <font color=#5050f0>CreateObject</font>(&quot;<font color=red>WIA.ImageFile</font>&quot;)<br>&nbsp;&nbsp;&nbsp;&nbsp; .LoadFile (sDatei)<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> Err.Number &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Aufnahmedatum = &quot;<font color=red>Die Datei</font>&quot; & <font color=#a000c0>vbLf</font> & sDatei & <font color=#a000c0>vbLf</font> _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& &quot;<font color=red>wurde nicht gefunden!</font>&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Else</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Aufnahmedatum = &quot;<font color=red>Kein Aufnahmedatum vorhanden!</font>&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Aufnahmedatum = <font color=#5050f0>CDate</font>(<font color=blue>Replace</font>(.Properties(&quot;<font color=red>ExifDTDigitized</font>&quot;).Value, &quot;<font color=red>:</font>&quot;, &quot;<font color=red>/</font>&quot;, <font color=#ff6060>1</font>, <font color=#ff6060>2</font>))<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;<font color=blue>End With</font><br><strong><font color=blue>End Function</font></strong><br><br><strong><font color=blue>Sub</font> ErmittleDateieigenschaften(sDatei <font color=blue>As String</font>)</strong><br><font color=#00a000>' Funktion listet alle EXIF-Dateieigenschaften der Datei auf</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> oProp <font color=blue>As Object</font>, L <font color=blue>As Long</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>Lz</font> <font color=blue>As String</font> = &quot;<font color=red>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font>&quot;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>On Error Resume Next</font><br>&nbsp;&nbsp;<font color=blue>With</font> <font color=#5050f0>CreateObject</font>(&quot;<font color=red>WIA.ImageFile</font>&quot;)<br>&nbsp;&nbsp;&nbsp;&nbsp; .LoadFile (sDatei)<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> Err.Number &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>MsgBox</font> &quot;<font color=red>Die Datei</font>&quot; & <font color=#a000c0>vbLf</font> & sDatei & <font color=#a000c0>vbLf</font> & &quot;<font color=red>wurde nicht gefunden!</font>&quot;, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#a000c0>vbCritical</font>, &quot;<font color=red>EXIF-Daten ermitteln</font>&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Exit Sub</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>For Each</font> oProp <font color=blue>In</font> .Properties<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>With</font> oProp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L = <font color=#5050f0>Len</font>(.<font color=blue>Name</font>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> L &gt; <font color=#ff6060>5</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Debug.Print</font> <font color=#5050f0>Left&#36;</font>(.<font color=blue>Name</font> & <font color=#d000d0>Lz</font> & <font color=#d000d0>Lz</font>, <font color=#ff6060>25</font>) & .Value<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End With</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Next</font> oProp<br>&nbsp;&nbsp;<font color=blue>End With</font><br><strong><font color=blue>End Sub</font></strong><br><br><br><br><strong><font color=blue>Sub</font> Test()</strong><br>&nbsp;&nbsp;ErmittleDateieigenschaften &quot;<font color=red>D:&bsol;Pictures&bsol;Fotos&bsol;PICT0010.JPG</font>&quot;<br>&nbsp;&nbsp;<font color=blue>MsgBox</font> Aufnahmedatum(&quot;<font color=red>D:&bsol;Pictures&bsol;Fotos&bsol;PICT0010.JPG</font>&quot;)<br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[PC - Lautstärke einstellen]]></title>
			<link>https://www.clever-excel-forum.de/Thread-PC-Lautstaerke-einstellen</link>
			<pubDate>Fri, 24 Jan 2025 18:15:30 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.clever-excel-forum.de/member.php?action=profile&uid=18350">volti</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.clever-excel-forum.de/Thread-PC-Lautstaerke-einstellen</guid>
			<description><![CDATA[Hallo Forum,<br /><br />manchmal möchte man per VBA die Lautstärke an seinem PC einstellen. <br /><br />Neben einigen anderen bei mir nicht funktionierenden Methoden bietet sich eine Methode an, bei der eine <font color=blue><b>WM_APPCOMMAND</b></font>-Message an Windows gesendet wird.<br />Leider wird hier nur VolumeUp, VolumeDown und VolumeMute angeboten und das auch noch mit zwei Prozent Änderung pro Aufruf anstatt mit einem Prozent.<br /><br />Somit ist eigentlich die Übergabe eines festen Lautsprecherlevels nicht möglich. <br /><br />Ein Trick wäre, immer erst auf Null zu fahren und dann anhand dieses festen Startwerts das Volumen durch Hochfahren festzulegen und sich den neuen Wert zu merken.<br />Vom neuen gemerkten Startwert können Folgeeinstellungen dann direkt erfolgen.<br /><br />Der folgende Code ermöglicht die<br /><li>Festlegung eines Levels durch Übergabe eines geraden positiven Wertes von 0 bis 100</li><li>Prozentuale Erhöhung oder Verminderung durch Übergabe eines negativen oder ungeraden Wertes</li><li>Stummschaltung bzw. Einschaltung des Tones durch die Übergabe eines Wertes größer 100 bzw. WM_Mute.</li><li>Erzwingung des Runterfahrens und dadurch Speicherung eines Startwertes</li><br />PS: Durch die Zwei-Prozentveränderung wird der gewünschte Wert manchmal nicht direkt getroffen, aber das sollte ja kein Problem darstellen.<br /><br /><br /><!--- erstellt am 24.01.2025 18:48:41 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 830px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus184841' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA184841' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Public Const</font> <font color=#d000d0>WM_Mute</font>&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font> = <font color=#ff6060>&H80000</font><br><font color=blue>Dim</font> miLastVolume&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetVolume</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; <font color=blue>Alias</font> &quot;<font color=red>SendMessageA</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> wMsg <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><br><strong><font color=blue>Private Sub</font> Lautst&auml;rke(<font color=blue>ByVal</font> iWert <font color=blue>As Long</font>, <font color=blue>Optional</font> bReset <font color=blue>As Boolean</font>)</strong><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>WM_AppCmd</font> <font color=blue>As Long</font> = <font color=#ff6060>&H319</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>WM_Down</font>&nbsp;&nbsp; <font color=blue>As Long</font> = <font color=#ff6060>&H90000</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>WM_Up</font>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Long</font> = <font color=#ff6060>&HA0000</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> i <font color=blue>As Long</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>With</font> Application<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> <font color=#5050f0>Abs</font>(iWert) &gt; <font color=#ff6060>100</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SetVolume</font> .hwnd, <font color=#d000d0>WM_AppCmd</font>, <font color=#ff6060>0</font>, <font color=blue>ByVal</font> <font color=#d000d0>WM_Mute</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Mute ein/ausschalten</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Exit Sub</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> iWert &lt; <font color=#ff6060>0</font> <font color=blue>Or</font> (iWert <font color=blue>Mod</font> <font color=#ff6060>2</font>) = <font color=#ff6060>1</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iWert = iWert + miLastVolume + <font color=#5050f0>IIf</font>(iWert &lt; <font color=#ff6060>0</font>, <font color=#ff6060>-1</font>, <font color=#ff6060>1</font>)<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> iWert &lt;&gt; <font color=#ff6060>0</font> <font color=blue>And</font> iWert = miLastVolume <font color=blue>And</font> bReset = <font color=blue>False Then Exit Sub</font><br><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> miLastVolume = <font color=#ff6060>0</font> <font color=blue>Or</font> bReset <font color=blue>Then</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Auf Null fahren</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>For</font> i = <font color=#ff6060>1</font> <font color=blue>To</font> <font color=#ff6060>50</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SetVolume</font> .hwnd, <font color=#d000d0>WM_AppCmd</font>, <font color=#ff6060>0</font>, <font color=blue>ByVal</font> <font color=#d000d0>WM_Down</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Next</font> i<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;miLastVolume = <font color=#ff6060>0</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Runtergefahren</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>For</font> i = <font color=#ff6060>1</font> <font color=blue>To</font> <font color=#5050f0>Abs</font>(iWert - miLastVolume) &bsol; <font color=#ff6060>2</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Jetzt Lautst&auml;rke ver&auml;ndern</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetVolume</font> .hwnd, <font color=#d000d0>WM_AppCmd</font>, <font color=#ff6060>0</font>, <font color=blue>ByVal</font> <font color=#5050f0>IIf</font>(iWert &lt; miLastVolume, <font color=#d000d0>WM_Down</font>, <font color=#d000d0>WM_Up</font>)<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Next</font> i<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> iWert &gt; <font color=#ff6060>100</font> <font color=blue>Then</font> iWert = <font color=#ff6060>100</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Korrigierung</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> iWert &lt; <font color=#ff6060>0</font> <font color=blue>Then</font> iWert = <font color=#ff6060>0</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Korrigierung</font><br>&nbsp;&nbsp;&nbsp;&nbsp; miLastVolume = iWert&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Level merken</font><br>&nbsp;&nbsp;<font color=blue>End With</font><br><strong><font color=blue>End Sub</font></strong><br><br><br><br><font color=#00a000>' ### Tests ###</font><br><strong><font color=blue>Sub</font> Test1()</strong><br>&nbsp;&nbsp;Lautst&auml;rke <font color=#ff6060>6</font>, <font color=blue>True</font><font color=#00a000>&nbsp;' Lautst&auml;rke auf 0, dann auf 6 setzen</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Sub</font> Test2()</strong><br>&nbsp;&nbsp;Lautst&auml;rke <font color=#ff6060>60</font>&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Lautst&auml;rke sofort auf 60 setzen</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Sub</font> Test3()</strong><br>&nbsp;&nbsp;Lautst&auml;rke <font color=#ff6060>20</font>&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Lautst&auml;rke sofort auf 20 setzen</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Sub</font> Test4()</strong><br>&nbsp;&nbsp;Lautst&auml;rke <font color=#ff6060>5</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Lautst&auml;rke um 5 erh&ouml;hen</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Sub</font> Test5()</strong><br>&nbsp;&nbsp;Lautst&auml;rke <font color=#ff6060>-7</font>&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Lautst&auml;rke um 7 erniedrigen</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Sub</font> Test6()</strong><br>&nbsp;&nbsp;Lautst&auml;rke <font color=#d000d0>WM_Mute</font><font color=#00a000>&nbsp;' Lautst&auml;rke stummschalten</font><br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></description>
			<content:encoded><![CDATA[Hallo Forum,<br /><br />manchmal möchte man per VBA die Lautstärke an seinem PC einstellen. <br /><br />Neben einigen anderen bei mir nicht funktionierenden Methoden bietet sich eine Methode an, bei der eine <font color=blue><b>WM_APPCOMMAND</b></font>-Message an Windows gesendet wird.<br />Leider wird hier nur VolumeUp, VolumeDown und VolumeMute angeboten und das auch noch mit zwei Prozent Änderung pro Aufruf anstatt mit einem Prozent.<br /><br />Somit ist eigentlich die Übergabe eines festen Lautsprecherlevels nicht möglich. <br /><br />Ein Trick wäre, immer erst auf Null zu fahren und dann anhand dieses festen Startwerts das Volumen durch Hochfahren festzulegen und sich den neuen Wert zu merken.<br />Vom neuen gemerkten Startwert können Folgeeinstellungen dann direkt erfolgen.<br /><br />Der folgende Code ermöglicht die<br /><li>Festlegung eines Levels durch Übergabe eines geraden positiven Wertes von 0 bis 100</li><li>Prozentuale Erhöhung oder Verminderung durch Übergabe eines negativen oder ungeraden Wertes</li><li>Stummschaltung bzw. Einschaltung des Tones durch die Übergabe eines Wertes größer 100 bzw. WM_Mute.</li><li>Erzwingung des Runterfahrens und dadurch Speicherung eines Startwertes</li><br />PS: Durch die Zwei-Prozentveränderung wird der gewünschte Wert manchmal nicht direkt getroffen, aber das sollte ja kein Problem darstellen.<br /><br /><br /><!--- erstellt am 24.01.2025 18:48:41 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 830px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus184841' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA184841' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Public Const</font> <font color=#d000d0>WM_Mute</font>&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font> = <font color=#ff6060>&H80000</font><br><font color=blue>Dim</font> miLastVolume&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetVolume</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; <font color=blue>Alias</font> &quot;<font color=red>SendMessageA</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> wMsg <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><br><strong><font color=blue>Private Sub</font> Lautst&auml;rke(<font color=blue>ByVal</font> iWert <font color=blue>As Long</font>, <font color=blue>Optional</font> bReset <font color=blue>As Boolean</font>)</strong><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>WM_AppCmd</font> <font color=blue>As Long</font> = <font color=#ff6060>&H319</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>WM_Down</font>&nbsp;&nbsp; <font color=blue>As Long</font> = <font color=#ff6060>&H90000</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>WM_Up</font>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Long</font> = <font color=#ff6060>&HA0000</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> i <font color=blue>As Long</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>With</font> Application<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> <font color=#5050f0>Abs</font>(iWert) &gt; <font color=#ff6060>100</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SetVolume</font> .hwnd, <font color=#d000d0>WM_AppCmd</font>, <font color=#ff6060>0</font>, <font color=blue>ByVal</font> <font color=#d000d0>WM_Mute</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Mute ein/ausschalten</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Exit Sub</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> iWert &lt; <font color=#ff6060>0</font> <font color=blue>Or</font> (iWert <font color=blue>Mod</font> <font color=#ff6060>2</font>) = <font color=#ff6060>1</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iWert = iWert + miLastVolume + <font color=#5050f0>IIf</font>(iWert &lt; <font color=#ff6060>0</font>, <font color=#ff6060>-1</font>, <font color=#ff6060>1</font>)<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> iWert &lt;&gt; <font color=#ff6060>0</font> <font color=blue>And</font> iWert = miLastVolume <font color=blue>And</font> bReset = <font color=blue>False Then Exit Sub</font><br><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> miLastVolume = <font color=#ff6060>0</font> <font color=blue>Or</font> bReset <font color=blue>Then</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Auf Null fahren</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>For</font> i = <font color=#ff6060>1</font> <font color=blue>To</font> <font color=#ff6060>50</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SetVolume</font> .hwnd, <font color=#d000d0>WM_AppCmd</font>, <font color=#ff6060>0</font>, <font color=blue>ByVal</font> <font color=#d000d0>WM_Down</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Next</font> i<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;miLastVolume = <font color=#ff6060>0</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Runtergefahren</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>For</font> i = <font color=#ff6060>1</font> <font color=blue>To</font> <font color=#5050f0>Abs</font>(iWert - miLastVolume) &bsol; <font color=#ff6060>2</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Jetzt Lautst&auml;rke ver&auml;ndern</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetVolume</font> .hwnd, <font color=#d000d0>WM_AppCmd</font>, <font color=#ff6060>0</font>, <font color=blue>ByVal</font> <font color=#5050f0>IIf</font>(iWert &lt; miLastVolume, <font color=#d000d0>WM_Down</font>, <font color=#d000d0>WM_Up</font>)<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Next</font> i<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> iWert &gt; <font color=#ff6060>100</font> <font color=blue>Then</font> iWert = <font color=#ff6060>100</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Korrigierung</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> iWert &lt; <font color=#ff6060>0</font> <font color=blue>Then</font> iWert = <font color=#ff6060>0</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Korrigierung</font><br>&nbsp;&nbsp;&nbsp;&nbsp; miLastVolume = iWert&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Level merken</font><br>&nbsp;&nbsp;<font color=blue>End With</font><br><strong><font color=blue>End Sub</font></strong><br><br><br><br><font color=#00a000>' ### Tests ###</font><br><strong><font color=blue>Sub</font> Test1()</strong><br>&nbsp;&nbsp;Lautst&auml;rke <font color=#ff6060>6</font>, <font color=blue>True</font><font color=#00a000>&nbsp;' Lautst&auml;rke auf 0, dann auf 6 setzen</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Sub</font> Test2()</strong><br>&nbsp;&nbsp;Lautst&auml;rke <font color=#ff6060>60</font>&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Lautst&auml;rke sofort auf 60 setzen</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Sub</font> Test3()</strong><br>&nbsp;&nbsp;Lautst&auml;rke <font color=#ff6060>20</font>&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Lautst&auml;rke sofort auf 20 setzen</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Sub</font> Test4()</strong><br>&nbsp;&nbsp;Lautst&auml;rke <font color=#ff6060>5</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Lautst&auml;rke um 5 erh&ouml;hen</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Sub</font> Test5()</strong><br>&nbsp;&nbsp;Lautst&auml;rke <font color=#ff6060>-7</font>&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Lautst&auml;rke um 7 erniedrigen</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Sub</font> Test6()</strong><br>&nbsp;&nbsp;Lautst&auml;rke <font color=#d000d0>WM_Mute</font><font color=#00a000>&nbsp;' Lautst&auml;rke stummschalten</font><br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Dateien auflisten incl. aus Unterordnern]]></title>
			<link>https://www.clever-excel-forum.de/Thread-Dateien-auflisten-incl-aus-Unterordnern</link>
			<pubDate>Sun, 29 Dec 2024 17:23:31 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.clever-excel-forum.de/member.php?action=profile&uid=18350">volti</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.clever-excel-forum.de/Thread-Dateien-auflisten-incl-aus-Unterordnern</guid>
			<description><![CDATA[Liebe Leserin, lieber Leser,<br /><br />eine der häufigsten Fragen in Foren ist u.a. die Frage:<br />- Wie kann ich alle Dateien anhand einer Suchmaske aus einer Verzeichnisstruktur ermitteln?<br /><br />Die gute, alte Dir-Funktion aus DOS-Zeiten kann nur aus einem Ordner lesen.<br />Ansonsten gibt es mehrere Wege, FileScripting oder spezielle DOS-Befehle usw..<br /><br />Heute wollen wir aber mal eine weniger bekannte API-Funktion dafür nutzen.....<br /><br /><!--- erstellt am 29.12.2024 18:08:02 (HEF-Forum) von volti's VBA2HTML ---><pre style='width: 800px;'><div style='font-family: Arial; font-size: 10pt; color: #606060; line-height: 10px;'><b><u>Code:</u></b></div><br><div style='position: relative; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><!--- VBA-Code ---><div id='VBA180802' style='width: 675px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Option Explicit</font><br /><br /><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>EnumDirTreeW</font> <font color=blue>Lib</font> &quot;<font color=red>Dbghelp.dll</font>&quot; ( _<br />                <font color=blue>ByVal</font> hProcess <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> RootPath <font color=blue>As LongPtr</font>, _<br />                <font color=blue>ByVal</font> InputPathName <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> OutputPathBuffer <font color=blue>As LongPtr</font>, _<br />                <font color=blue>ByVal</font> cb <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> data <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br /><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>lstrlenW</font> <font color=blue>Lib</font> &quot;<font color=red>kernel32.dll</font>&quot; ( _<br />                <font color=blue>ByVal</font> lpString <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br /><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>lstrcpyW</font> <font color=blue>Lib</font> &quot;<font color=red>kernel32.dll</font>&quot; ( _<br />                <font color=blue>ByVal</font> lpString1 <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lpString2 <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br /><font color=blue>Dim</font> msArrFiles() <font color=blue>As String</font><br /><br /><strong><font color=blue>Private Function</font> DateiListe(<font color=blue>ByVal</font> sPfad <font color=blue>As String</font>, <font color=blue>Optional</font> sDirMaske <font color=blue>As String</font> = &quot;<font color=red>*</font>&quot;) <font color=blue>As Long</font></strong><br /><font color=#00a000>' F&uuml;llt ein Array mit den Dateipfadnamen</font><br />  <font color=blue>ReDim Preserve</font> msArrFiles(<font color=#ff6060>0</font>)                <font color=#00a000>  ' Dateiarray zur&uuml;cksetzen</font><br />  <br />  <font color=#d000d0>EnumDirTreeW</font> <font color=#ff6060>0</font>, <font color=#5050f0>StrPtr</font>(sPfad), <font color=#5050f0>StrPtr</font>(sDirMaske), <font color=#ff6060>0</font>, <font color=blue>AddressOf</font> CB_EnumDirTree, <font color=#ff6060>0</font><br />  DateiListe = <font color=#5050f0>UBound</font>(msArrFiles) - <font color=#ff6060>1</font>          <font color=#00a000> ' Anzahl gefundener Dateien zur&uuml;ckgeben</font><br /><br /><strong><font color=blue>End Function</font></strong><br /><br /><strong><font color=blue>Private Function</font> CB_EnumDirTree(<font color=blue>ByVal</font> lpcwStr <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> iNone <font color=blue>As Long</font>) <font color=blue>As Boolean</font></strong><br />  <font color=blue>Dim</font> i <font color=blue>As Long</font><br /><br />  i = <font color=#5050f0>UBound</font>(msArrFiles)                      <font color=#00a000>  ' Aktuelle Arraygr&ouml;ße ermitteln</font><br />  msArrFiles(i) = <font color=#5050f0>String</font>(<font color=#d000d0>lstrlenW</font>(lpcwStr), <font color=#ff6060>0</font>) <font color=#00a000> ' Variable mit ausreichend Platz schaffen</font><br />  <font color=#d000d0>lstrcpyW</font> <font color=#5050f0>StrPtr</font>(msArrFiles(i)), lpcwStr      <font color=#00a000> ' String umkopieren</font><br />  <font color=blue>ReDim Preserve</font> msArrFiles(i + <font color=#ff6060>1</font>)            <font color=#00a000>  ' Array neu dimensionieren</font><br /><strong><font color=blue>End Function</font></strong><br /><br /><br /><font color=#00a000>' ##### Aufruftests #####</font><br /><strong><font color=blue>Private Sub</font> Demo1()</strong><br />  <font color=blue>Dim</font> i <font color=blue>As Long</font><br />  <br />  i = DateiListe(&quot;<font color=red>C:&bsol;Users&bsol;voltm&bsol;Desktop&bsol;MyTools</font>&quot;, &quot;<font color=red>*</font>&quot;)<br />  <font color=blue>If</font> i &lt; <font color=#ff6060>0</font> <font color=blue>Then</font><br />    <font color=blue>MsgBox</font> &quot;<font color=red>Habe keine Dateien gefunden!</font>&quot;, <font color=#a000c0>vbCritical</font><br />  <font color=blue>Else</font><br />    <font color=blue>For</font> i = <font color=#ff6060>0</font> <font color=blue>To</font> i<br />        <font color=blue>Debug.Print</font> msArrFiles(i)<br />    <font color=blue>Next</font> i<br />    <font color=blue>MsgBox</font> &quot;<font color=red>Habe </font>&quot; & i & &quot;<font color=red> Dateien gefunden!</font>&quot;, <font color=#a000c0>vbInformation</font><br />  <font color=blue>End If</font><br /><strong><font color=blue>End Sub</font></strong><br /><br /><strong><font color=blue>Private Sub</font> Demo2()</strong><br />  <font color=blue>Dim</font> i <font color=blue>As Long</font><br />  <br />  i = DateiListe(&quot;<font color=red>C:&bsol;Users&bsol;voltm&bsol;Desktop&bsol;MyTools</font>&quot;, &quot;<font color=red>Excel*</font>&quot;)<br />  <font color=blue>If</font> i &gt;= <font color=#ff6060>0</font> <font color=blue>Then</font><br />    ActiveSheet.Cells(<font color=#ff6060>1</font>, <font color=#ff6060>1</font>).Resize(i + <font color=#ff6060>1</font>, <font color=#ff6060>1</font>) = WorksheetFunction.Transpose(msArrFiles)<br />  <font color=blue>End If</font><br /><strong><font color=blue>End Sub</font></strong></div><div style='line-height: 5px;'><br></div></div></pre><!--- Signatur ---><div><font size=2 face=Arial>_________________________<br>viele Gr&uuml;&szlig;e aus Freigericht ?<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></description>
			<content:encoded><![CDATA[Liebe Leserin, lieber Leser,<br /><br />eine der häufigsten Fragen in Foren ist u.a. die Frage:<br />- Wie kann ich alle Dateien anhand einer Suchmaske aus einer Verzeichnisstruktur ermitteln?<br /><br />Die gute, alte Dir-Funktion aus DOS-Zeiten kann nur aus einem Ordner lesen.<br />Ansonsten gibt es mehrere Wege, FileScripting oder spezielle DOS-Befehle usw..<br /><br />Heute wollen wir aber mal eine weniger bekannte API-Funktion dafür nutzen.....<br /><br /><!--- erstellt am 29.12.2024 18:08:02 (HEF-Forum) von volti's VBA2HTML ---><pre style='width: 800px;'><div style='font-family: Arial; font-size: 10pt; color: #606060; line-height: 10px;'><b><u>Code:</u></b></div><br><div style='position: relative; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><!--- VBA-Code ---><div id='VBA180802' style='width: 675px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Option Explicit</font><br /><br /><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>EnumDirTreeW</font> <font color=blue>Lib</font> &quot;<font color=red>Dbghelp.dll</font>&quot; ( _<br />                <font color=blue>ByVal</font> hProcess <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> RootPath <font color=blue>As LongPtr</font>, _<br />                <font color=blue>ByVal</font> InputPathName <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> OutputPathBuffer <font color=blue>As LongPtr</font>, _<br />                <font color=blue>ByVal</font> cb <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> data <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br /><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>lstrlenW</font> <font color=blue>Lib</font> &quot;<font color=red>kernel32.dll</font>&quot; ( _<br />                <font color=blue>ByVal</font> lpString <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br /><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>lstrcpyW</font> <font color=blue>Lib</font> &quot;<font color=red>kernel32.dll</font>&quot; ( _<br />                <font color=blue>ByVal</font> lpString1 <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lpString2 <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br /><font color=blue>Dim</font> msArrFiles() <font color=blue>As String</font><br /><br /><strong><font color=blue>Private Function</font> DateiListe(<font color=blue>ByVal</font> sPfad <font color=blue>As String</font>, <font color=blue>Optional</font> sDirMaske <font color=blue>As String</font> = &quot;<font color=red>*</font>&quot;) <font color=blue>As Long</font></strong><br /><font color=#00a000>' F&uuml;llt ein Array mit den Dateipfadnamen</font><br />  <font color=blue>ReDim Preserve</font> msArrFiles(<font color=#ff6060>0</font>)                <font color=#00a000>  ' Dateiarray zur&uuml;cksetzen</font><br />  <br />  <font color=#d000d0>EnumDirTreeW</font> <font color=#ff6060>0</font>, <font color=#5050f0>StrPtr</font>(sPfad), <font color=#5050f0>StrPtr</font>(sDirMaske), <font color=#ff6060>0</font>, <font color=blue>AddressOf</font> CB_EnumDirTree, <font color=#ff6060>0</font><br />  DateiListe = <font color=#5050f0>UBound</font>(msArrFiles) - <font color=#ff6060>1</font>          <font color=#00a000> ' Anzahl gefundener Dateien zur&uuml;ckgeben</font><br /><br /><strong><font color=blue>End Function</font></strong><br /><br /><strong><font color=blue>Private Function</font> CB_EnumDirTree(<font color=blue>ByVal</font> lpcwStr <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> iNone <font color=blue>As Long</font>) <font color=blue>As Boolean</font></strong><br />  <font color=blue>Dim</font> i <font color=blue>As Long</font><br /><br />  i = <font color=#5050f0>UBound</font>(msArrFiles)                      <font color=#00a000>  ' Aktuelle Arraygr&ouml;ße ermitteln</font><br />  msArrFiles(i) = <font color=#5050f0>String</font>(<font color=#d000d0>lstrlenW</font>(lpcwStr), <font color=#ff6060>0</font>) <font color=#00a000> ' Variable mit ausreichend Platz schaffen</font><br />  <font color=#d000d0>lstrcpyW</font> <font color=#5050f0>StrPtr</font>(msArrFiles(i)), lpcwStr      <font color=#00a000> ' String umkopieren</font><br />  <font color=blue>ReDim Preserve</font> msArrFiles(i + <font color=#ff6060>1</font>)            <font color=#00a000>  ' Array neu dimensionieren</font><br /><strong><font color=blue>End Function</font></strong><br /><br /><br /><font color=#00a000>' ##### Aufruftests #####</font><br /><strong><font color=blue>Private Sub</font> Demo1()</strong><br />  <font color=blue>Dim</font> i <font color=blue>As Long</font><br />  <br />  i = DateiListe(&quot;<font color=red>C:&bsol;Users&bsol;voltm&bsol;Desktop&bsol;MyTools</font>&quot;, &quot;<font color=red>*</font>&quot;)<br />  <font color=blue>If</font> i &lt; <font color=#ff6060>0</font> <font color=blue>Then</font><br />    <font color=blue>MsgBox</font> &quot;<font color=red>Habe keine Dateien gefunden!</font>&quot;, <font color=#a000c0>vbCritical</font><br />  <font color=blue>Else</font><br />    <font color=blue>For</font> i = <font color=#ff6060>0</font> <font color=blue>To</font> i<br />        <font color=blue>Debug.Print</font> msArrFiles(i)<br />    <font color=blue>Next</font> i<br />    <font color=blue>MsgBox</font> &quot;<font color=red>Habe </font>&quot; & i & &quot;<font color=red> Dateien gefunden!</font>&quot;, <font color=#a000c0>vbInformation</font><br />  <font color=blue>End If</font><br /><strong><font color=blue>End Sub</font></strong><br /><br /><strong><font color=blue>Private Sub</font> Demo2()</strong><br />  <font color=blue>Dim</font> i <font color=blue>As Long</font><br />  <br />  i = DateiListe(&quot;<font color=red>C:&bsol;Users&bsol;voltm&bsol;Desktop&bsol;MyTools</font>&quot;, &quot;<font color=red>Excel*</font>&quot;)<br />  <font color=blue>If</font> i &gt;= <font color=#ff6060>0</font> <font color=blue>Then</font><br />    ActiveSheet.Cells(<font color=#ff6060>1</font>, <font color=#ff6060>1</font>).Resize(i + <font color=#ff6060>1</font>, <font color=#ff6060>1</font>) = WorksheetFunction.Transpose(msArrFiles)<br />  <font color=blue>End If</font><br /><strong><font color=blue>End Sub</font></strong></div><div style='line-height: 5px;'><br></div></div></pre><!--- Signatur ---><div><font size=2 face=Arial>_________________________<br>viele Gr&uuml;&szlig;e aus Freigericht ?<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Info-ToolTip über ausgewählten Zellen anzeigen]]></title>
			<link>https://www.clever-excel-forum.de/Thread-Info-ToolTip-ueber-ausgewaehlten-Zellen-anzeigen</link>
			<pubDate>Tue, 10 Dec 2024 14:16:46 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.clever-excel-forum.de/member.php?action=profile&uid=18350">volti</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.clever-excel-forum.de/Thread-Info-ToolTip-ueber-ausgewaehlten-Zellen-anzeigen</guid>
			<description><![CDATA[Liebe Leserin, lieber Leser,<br /><br />hat man eine umfangreiche Liste und möchte man beim Lesen gerne Zusatzinformationen haben, die sich aber auf einem anderen Blatt befinden, so könnte man diese in einem kleinen PopUp-Fenster temporär neben dem aktuellen Feld anzeigen lassen.<br /><br />Es besteht z.B. die Möglichkeit, für jedes relevante Feld (per VBA) einmalig oder ggf. mit gelegentlichen Updates Notizen anzulegen, die dann automatisch beim Überfahren des Feldes angezeigt werden.<br />Oder man zeigt nach einem <span style="font-weight: bold;" class="mycode_b">Feldwechsel</span> über das Event <span style="font-weight: bold;" class="mycode_b">SelectionChange</span> eine Notiz an oder kreiert eine eigene Textbox. Diese würde nach einem weiteren Feldwechsel wieder verschwinden.<br /><br />Mit diesem Beitrag möchte ich aber eine weitere Möglichkeit zeigen, die mit einem eher echten Mouseover eine selbst gestaltete Textbox für die Dauer des Mausaufenthalts über dem besagten Feld anzeigt.<br /><br />Nicht zu verschweigen sei hierbei, dass diese Methode etwas zeitintensiver ist als die anderen beiden Methoden.<br />Deshalb werden zwei Tickzeiten verwendet.<br /><br />Eine längere Tickzeit von z.B. 800 mSec, wenn kein ToolTip aktiv ist.<br />Es dauert dann 800 mSec bis zur Anzeige. Bei schnellen Mausbewegungen werden dann nicht ständig Textboxen aufgemacht.<br />Und der Rechner ist weniger belastet.<br /><br />Eine kürzere Tickzeit von z.B. 80 mSec. <br />Damit verschwindet bei Verlassen des Textfeldes der Tooltip recht zügig.<br /><br />Über die Events <span style="font-weight: bold;" class="mycode_b">Activate</span> und <span style="font-weight: bold;" class="mycode_b">DeActivate</span> kann die Funktionalität auf beliebige Blätter begrenzt werden.<br /><!--- erstellt am 10.12.2024 15:14:34 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 600px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><!--- VBA-Code ---><div id='VBA151434' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><strong><font color=blue>Private Sub</font> Worksheet_Activate()</strong><br>&nbsp;&nbsp;<font color=blue>Call</font> StartPopUp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' PopUp aktivieren</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Sub</font> Worksheet_Deactivate()</strong><br>&nbsp;&nbsp;<font color=blue>Call</font> StopPopUp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' PopUp deaktivieren</font><br><strong><font color=blue>End Sub</font></strong></div><div style='line-height: 5px;'><br></div></div></div>Außerdem kann zur weiteren Ressourcenschonung ein begrenzter Bereich und/oder ein bestimmtes Suchmuster vorgegeben werden.<br /><br />Wichtig ist das Abschalten des PopPup beim Schließen der Arbeitsmappe mittels des Events <span style="font-weight: bold;" class="mycode_b">BeforeClose</span>.<br /><br /><br /><u>Hinweis</u><br />Der Code ist etwas umfangreicher, weil auch ein Fensterhandling eingebaut wurde.<br />Bei Aktivierung einer anderen Anwendung als Excel wird die Funktionalität bis zur Reaktivierung der Mappe abgeschaltet.<br />Das gilt auch für den VBA-Editor. So kann man auch bequem weiterprogrammieren.  <img src="https://www.clever-excel-forum.de/images/smilies/pack 2/19.gif" alt="19" title="19" class="smilie smilie_27" /> <br /><br />Übrigens, die generierte Textbox kannst Du nach eigenen Vorstellungen anpassen.<br /><br />Hier auch noch eine Datei zum Ausprobieren....<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.clever-excel-forum.de/images/attachtypes/xlsb.png" title="" border="0" alt=".xlsb" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=54169" target="_blank" title="10.12.2024, 16:11">PopUpUeberZelle.xlsb</a> (Größe: 53,73 KB / Downloads: 10)
<!-- end: postbit_attachments_attachment --><br /><br />Und der Mustercode:<br /><!--- erstellt am 10.12.2024 15:09:23 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 1220px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus150923' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA150923' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Option Explicit</font><br><br><font color=#00a000>' ###&nbsp;&nbsp;&nbsp;&nbsp;Einstellungen&nbsp;&nbsp;&nbsp;&nbsp;###</font><br><font color=blue>Private Const</font> <font color=#d000d0>mbTooltip</font>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Boolean</font> = <font color=blue>True</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' An- Abschalten der Funktionalit&auml;t, z.B. f&uuml;r Wartungsarbeiten</font><br><font color=blue>Private Const</font> <font color=#d000d0>csSuch</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As String</font> = &quot;<font color=red>[EI]*</font>&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Suchmuster, * = egal</font><br><font color=blue>Private Const</font> <font color=#d000d0>csActiveRange</font> <font color=blue>As String</font> = &quot;<font color=red>*</font>&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Aktiven Bereich vorgeben, * = alles</font><br><font color=blue>Private Const</font> <font color=#d000d0>csDataRange</font>&nbsp;&nbsp; <font color=blue>As String</font> = &quot;<font color=red>Daten!A:A</font>&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Datenblatt und Bereich mit den PopUp-Daten</font><br><font color=blue>Private Const</font> <font color=#d000d0>ciSpalte</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Integer</font> = <font color=#ff6060>2</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Spalte im Datenblatt mit den PopUp-Texten</font><br><font color=blue>Private Const</font> <font color=#d000d0>ciBMax</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Integer</font> = <font color=#ff6060>0</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Feste K&auml;stchenbreite vorgeben 0=auto</font><br><font color=blue>Private Const</font> <font color=#d000d0>ciFontGross</font>&nbsp;&nbsp; <font color=blue>As Integer</font> = <font color=#ff6060>10</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Schriftgr&ouml;ße, 9 ist normal</font><br><font color=blue>Private Const</font> <font color=#d000d0>ciTickTime</font>&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font> = <font color=#ff6060>800</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Verz&ouml;gerung Box-Anzeige in mSec</font><br><font color=#00a000>' ### Ende Einstellungen ###</font><br><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32.dll</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> uElapse <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpTimerFunc <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>KillTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32.dll</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetCursorPos</font> <font color=blue>Lib</font> &quot;<font color=red>user32.dll</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByRef</font> lpPoint <font color=blue>As POINTAPI</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetWinEventHook</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> eventMin <font color=blue>As Long</font>, <font color=blue>ByVal</font> eventMax <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hmodWinEventProc <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpfnWinEventProc <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> idProcess <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> idThread <font color=blue>As Long</font>, <font color=blue>ByVal</font> dwflags <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>UnhookWinEvent</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hWinEventHook <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetActiveWindow</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; () <font color=blue>As LongPtr</font><br><br><font color=blue>Private Type POINTAPI</font><br>&nbsp;&nbsp;&nbsp;&nbsp;X <font color=blue>As Long</font><br>&nbsp;&nbsp;&nbsp;&nbsp;Y <font color=blue>As Long</font><br><font color=blue>End Type</font><br><br><font color=blue>Dim</font> mhCurWin&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As LongPtr</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Handle de aktiven Fensters</font><br><font color=blue>Dim</font> mhEventHook <font color=blue>As LongPtr</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Handle des Eventhooking</font><br><font color=blue>Dim</font> mhTimer&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As LongPtr</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Handle des Hooking</font><br><font color=blue>Dim</font> moCurObj&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As</font> Range<br><font color=blue>Dim</font> msLastRange <font color=blue>As String</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Letztes PopUp-Feld</font><br><font color=blue>Dim</font> mbAktiv&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Boolean</font><br><br><strong><font color=blue>Public Sub</font> StartPopUp()</strong><br>&nbsp;&nbsp;<font color=blue>If</font> <font color=#d000d0>mbTooltip</font> = <font color=blue>False Then Exit Sub</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Kein PopUp gew&uuml;nscht =&gt;raus</font><br>&nbsp;&nbsp;<font color=blue>Call</font> ToolTip_Delete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Ggf. altes Tooltip l&ouml;schen</font><br>&nbsp;&nbsp;mhCurWin = <font color=#d000d0>GetActiveWindow</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Gerade aktives Fenster</font><br>&nbsp;&nbsp;<font color=blue>If</font> mhEventHook = <font color=#ff6060>0</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp; mhEventHook = <font color=#d000d0>SetWinEventHook</font>(<font color=#ff6060>3</font>, <font color=#ff6060>3</font>, <font color=#ff6060>0</font>, <font color=blue>AddressOf</font> EventProc, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>)<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Call</font> StartTimer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Mausabfragen starten</font><br>&nbsp;&nbsp;<font color=blue>End If</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Public Sub</font> StopPopUp()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Beendet den Eventhook und Timer</font></strong><br>&nbsp;&nbsp;<font color=blue>If</font> mhEventHook &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> <font color=#d000d0>UnhookWinEvent</font> mhEventHook: mhEventHook = <font color=#ff6060>0</font><br>&nbsp;&nbsp;<font color=blue>Call</font> StopTimer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Timer l&ouml;schen</font><br>&nbsp;&nbsp;<font color=blue>Call</font> ToolTip_Delete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Ggf. Tooltip l&ouml;schen</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Sub</font> StartTimer()</strong><br>&nbsp;&nbsp;<font color=blue>If</font> mhTimer = <font color=#ff6060>0</font> <font color=blue>Then</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Timer starten</font><br>&nbsp;&nbsp;&nbsp;&nbsp; mhTimer = <font color=#d000d0>SetTimer</font>(<font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#5050f0>IIf</font>(mbAktiv, <font color=#ff6060>80</font>, <font color=#d000d0>ciTickTime</font>), <font color=blue>AddressOf</font> TimerTick)<br>&nbsp;&nbsp;<font color=blue>End If</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Sub</font> StopTimer()</strong><br>&nbsp;&nbsp;<font color=blue>If</font> mhTimer &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> <font color=#d000d0>KillTimer</font> <font color=#ff6060>0&</font>, mhTimer: mhTimer = <font color=#ff6060>0</font>&nbsp;&nbsp;<font color=#00a000>&nbsp;' Timer l&ouml;schen</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Function</font> EventProc(<font color=blue>ByVal</font> hWinEventHook <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> WinEvent <font color=blue>As Long</font>, _</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> idObject <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> idChild <font color=blue>As Long</font>, <font color=blue>ByVal</font> dwEventThread <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> dwmsEventTime <font color=blue>As Long</font>) <font color=blue>As Long</font><br>&nbsp;&nbsp;<font color=blue>If</font> hwnd = Application.hwnd <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Call</font> StartTimer<br>&nbsp;&nbsp;<font color=blue>Else</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> mhCurWin = Application.hwnd <font color=blue>Then Call</font> StopTimer&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Mausgesten/Timer stoppen</font><br>&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;mhCurWin = <font color=#d000d0>GetActiveWindow</font><br><strong><font color=blue>End Function</font></strong><br><br><strong><font color=blue>Private Sub</font> TimerTick()</strong><br><font color=#00a000>' Diese Sub wird periodisch aufgerufen</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> Pt <font color=blue>As POINTAPI</font>, rngBer <font color=blue>As</font> Range<br>&nbsp;<br>&nbsp;&nbsp;<font color=blue>DoEvents</font><br>&nbsp;&nbsp;<font color=#d000d0>GetCursorPos</font> Pt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Mausposition holen</font><br>&nbsp;&nbsp;<font color=blue>On Error Resume Next</font><br>&nbsp;<br>&nbsp;&nbsp;<font color=blue>Set</font> moCurObj = ActiveWindow.RangeFromPoint(Pt.X, Pt.Y)&nbsp;&nbsp; <font color=#00a000>&nbsp;' Objekt unter Maus</font><br>&nbsp;&nbsp;<font color=blue>If Err</font> &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> Err.Clear: <font color=blue>Exit Sub</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Fehler =&gt; raus</font><br><br>&nbsp;&nbsp;<font color=blue>If TypeOf</font> moCurObj <font color=blue>Is</font> Range <font color=blue>Then</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Ist es eine Range?</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>With</font> moCurObj<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> .MergeArea.Address &lt;&gt; msLastRange <font color=blue>Then</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Maus jetzt auf anderem Range?</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msLastRange = .MergeArea.Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Alte Range-Adresse merken</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> mbAktiv = <font color=blue>True Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Call</font> StopTimer:&nbsp;&nbsp; mbAktiv = <font color=blue>False</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Call</font> ToolTip_Delete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Tooltip l&ouml;schen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> <font color=#5050f0>Len</font>(<font color=#d000d0>csActiveRange</font>) &gt; <font color=#ff6060>1</font> <font color=blue>Then</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Aktiven Bereich setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Set</font> rngBer = Range(<font color=#d000d0>csActiveRange</font>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Else</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Set</font> rngBer = ActiveSheet.UsedRange<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End If</font><br><font color=#00a000>' PopUp anzeigen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If Not</font> Intersect(rngBer, moCurObj) <font color=blue>Is Nothing And</font> mbAktiv = <font color=blue>False</font> _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>And</font> .Value <font color=blue>Like</font> <font color=#d000d0>csSuch</font> <font color=blue>And</font> .Value &lt;&gt; &quot;<font color=red></font>&quot; <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Call</font> StopTimer:&nbsp;&nbsp; mbAktiv = <font color=blue>True</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Call</font> Tooltip_Create(moCurObj)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Tooltip erstellen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Call</font> StartTimer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Timer neu starten</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End With</font><br>&nbsp;&nbsp;<font color=blue>End If</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Sub</font> ToolTip_Delete()</strong><br>&nbsp;&nbsp;<font color=blue>On Error Resume Next</font><br>&nbsp;&nbsp;ActiveSheet.Shapes.Range(&quot;<font color=red>ToolTip</font>&quot;).Delete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Evtl. vorhandene Textbox l&ouml;schen</font><br><strong><font color=blue>End Sub</font></strong><br><br><br><strong><font color=blue>Sub</font> Tooltip_Create(oRng <font color=blue>As</font> Range)</strong><br><font color=#00a000>' Hier das Objekt formatieren oder ggf. etwas anderes programmieren</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> WSh <font color=blue>As</font> Worksheet<br>&nbsp;&nbsp;<font color=blue>Dim</font> sText <font color=blue>As String</font>, sArr() <font color=blue>As String</font>, t <font color=blue>As String</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> Y <font color=blue>As Integer</font>, X <font color=blue>As Integer</font>, B <font color=blue>As Integer</font>, H <font color=blue>As Integer</font>, L <font color=blue>As Currency</font><br>&nbsp;&nbsp;<font color=blue>Dim i As Integer</font>, j <font color=blue>As Integer</font>, iGefunden <font color=blue>As Long</font><br><br>&nbsp;&nbsp;<font color=blue>On Error Resume Next</font><br>&nbsp;&nbsp;<font color=blue>Set</font> WSh = Sheets(<font color=blue>Split</font>(<font color=#d000d0>csDataRange</font>, &quot;<font color=red>!</font>&quot;)(<font color=#ff6060>0</font>))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Datenblatt setzen</font><br>&nbsp;&nbsp;<font color=blue>If</font> WSh <font color=blue>Is Nothing Then Exit Sub</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Datenblatt nicht gefunden =&gt;raus</font><br><br>&nbsp;&nbsp;<font color=blue>With</font> oRng<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sText = .MergeArea.Cells(<font color=#ff6060>1</font>, <font color=#ff6060>1</font>).Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Suchtext holen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> sText = &quot;<font color=red></font>&quot; <font color=blue>Then Exit Sub</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Kein Text=&gt;raus</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iGefunden = Application.<font color=blue>WorksheetFunction</font>.Match(sText, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WSh.Range(<font color=blue>Split</font>(<font color=#d000d0>csDataRange</font>, &quot;<font color=red>!</font>&quot;)(<font color=#ff6060>1</font>)), <font color=#ff6060>0</font>)<font color=#00a000>&nbsp;' Suchbegriff suchen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> iGefunden = <font color=#ff6060>0</font> <font color=blue>Then Exit Sub</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Suchtext nicht gefunden =&gt;raus</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sText = WSh.Cells(iGefunden, ciSpalte).Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Tooltip-Text holen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sText = <font color=#5050f0>Replace</font>(sText, &quot;<font color=red>¶</font>&quot;, <font color=#a000c0>vbLf</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Textumbr&uuml;che setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sArr = <font color=#5050f0>Split</font>(sText, <font color=#a000c0>vbLf</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Text in Array</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>For i</font> = <font color=#ff6060>0</font> <font color=blue>To</font> <font color=#5050f0>UBound</font>(sArr)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> <font color=#d000d0>ciBMax</font> = <font color=#ff6060>0</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L = <font color=#ff6060>0</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>For</font> j = <font color=#ff6060>1</font> <font color=blue>To</font> <font color=#5050f0>Len</font>(sArr(i))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Textbreite je Zeile ermitteln</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t = <font color=#5050f0>Mid&#36;</font>(sArr(i), j, <font color=#ff6060>1</font>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L = L + <font color=#ff6060>2.75</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> <font color=#5050f0>InStr</font>(<font color=#ff6060>1</font>, <font color=#5050f0>Chr&#36;</font>(<font color=#ff6060>34</font>) & &quot;<font color=red> !/()&bsol;''|,;.:1ijl</font>&quot;, t, <font color=#a000c0>vbTextCompare</font>) = <font color=#ff6060>0</font> <font color=blue>Then</font> L = L + <font color=#ff6060>2.5</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> <font color=#5050f0>InStr</font>(<font color=#ff6060>1</font>, <font color=#5050f0>Chr&#36;</font>(<font color=#ff6060>34</font>) & &quot;<font color=red>wm_</font>&quot;, t, <font color=#a000c0>vbTextCompare</font>) &gt; <font color=#ff6060>0</font> <font color=blue>Then</font> L = L + <font color=#ff6060>0.75</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> <font color=#5050f0>Asc</font>(t) &gt; <font color=#ff6060>64</font> <font color=blue>And</font> <font color=#5050f0>Asc</font>(t) &lt; <font color=#ff6060>97</font> <font color=blue>Then</font> L = L + <font color=#ff6060>1.5</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Next</font> j<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> L &gt; B <font color=blue>Then</font> B = L&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Textboxl&auml;nge ermitteln</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;H = H + <font color=#ff6060>12</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Zeilenh&ouml;he</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Next i</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B = B <font color=blue>*</font> <font color=#d000d0>ciFontGross</font> &bsol; <font color=#ff6060>9</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> <font color=#d000d0>ciBMax</font> &gt; <font color=#ff6060>0</font> <font color=blue>Then</font> B = <font color=#d000d0>ciBMax</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Feste Breitenvorgabe</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Call</font> ToolTip_Delete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Evtl. vorhandenes Tooltip l&ouml;schen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y = .Top + <font color=#ff6060>1</font>: X = .Offset(<font color=#ff6060>0</font>, <font color=#ff6060>1</font>).Left + <font color=#ff6060>2</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Box positionieren</font><br><br><font color=#00a000>' Tooltip: Anzeigebox erstellen &lt;&lt;&lt; Parameter ggf. hier anpassen &gt;&gt;&gt;</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>With</font> .Parent.Shapes.AddTextbox(<font color=#ff6060>1</font>, X, Y, B, H)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Name = &quot;<font color=red>ToolTip</font>&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Visible = <font color=#a000c0>msoTrue</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' ToolTip sichtbar</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>With</font> .TextFrame2.TextRange<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Font.Fill.ForeColor.RGB = <font color=#5050f0>RGB</font>(<font color=#ff6060>255</font>, <font color=#ff6060>255</font>, <font color=#ff6060>160</font>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Font.Size = <font color=#d000d0>ciFontGross</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Font.Name = &quot;<font color=red>Arial</font>&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Text = sText<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End With</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>With</font> .Fill<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .ForeColor.RGB = <font color=#5050f0>RGB</font>(<font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>100</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Hintergrundfarbe setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Solid<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End With</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>With</font> .TextFrame2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .AutoSize = <font color=#a000c0>msoAutoSizeShapeToFitText</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Textboxgr&ouml;ße automatisch</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .MarginLeft = <font color=#ff6060>1.5</font>:&nbsp;&nbsp; .MarginTop = <font color=#ff6060>1.5</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Randabst&auml;nde</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .MarginBottom = <font color=#ff6060>1.5</font>: .MarginRight = <font color=#ff6060>1.5</font>&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Randabst&auml;nde</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End With</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End With</font><br>&nbsp;&nbsp;<font color=blue>End With</font><br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></description>
			<content:encoded><![CDATA[Liebe Leserin, lieber Leser,<br /><br />hat man eine umfangreiche Liste und möchte man beim Lesen gerne Zusatzinformationen haben, die sich aber auf einem anderen Blatt befinden, so könnte man diese in einem kleinen PopUp-Fenster temporär neben dem aktuellen Feld anzeigen lassen.<br /><br />Es besteht z.B. die Möglichkeit, für jedes relevante Feld (per VBA) einmalig oder ggf. mit gelegentlichen Updates Notizen anzulegen, die dann automatisch beim Überfahren des Feldes angezeigt werden.<br />Oder man zeigt nach einem <span style="font-weight: bold;" class="mycode_b">Feldwechsel</span> über das Event <span style="font-weight: bold;" class="mycode_b">SelectionChange</span> eine Notiz an oder kreiert eine eigene Textbox. Diese würde nach einem weiteren Feldwechsel wieder verschwinden.<br /><br />Mit diesem Beitrag möchte ich aber eine weitere Möglichkeit zeigen, die mit einem eher echten Mouseover eine selbst gestaltete Textbox für die Dauer des Mausaufenthalts über dem besagten Feld anzeigt.<br /><br />Nicht zu verschweigen sei hierbei, dass diese Methode etwas zeitintensiver ist als die anderen beiden Methoden.<br />Deshalb werden zwei Tickzeiten verwendet.<br /><br />Eine längere Tickzeit von z.B. 800 mSec, wenn kein ToolTip aktiv ist.<br />Es dauert dann 800 mSec bis zur Anzeige. Bei schnellen Mausbewegungen werden dann nicht ständig Textboxen aufgemacht.<br />Und der Rechner ist weniger belastet.<br /><br />Eine kürzere Tickzeit von z.B. 80 mSec. <br />Damit verschwindet bei Verlassen des Textfeldes der Tooltip recht zügig.<br /><br />Über die Events <span style="font-weight: bold;" class="mycode_b">Activate</span> und <span style="font-weight: bold;" class="mycode_b">DeActivate</span> kann die Funktionalität auf beliebige Blätter begrenzt werden.<br /><!--- erstellt am 10.12.2024 15:14:34 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 600px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><!--- VBA-Code ---><div id='VBA151434' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><strong><font color=blue>Private Sub</font> Worksheet_Activate()</strong><br>&nbsp;&nbsp;<font color=blue>Call</font> StartPopUp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' PopUp aktivieren</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Sub</font> Worksheet_Deactivate()</strong><br>&nbsp;&nbsp;<font color=blue>Call</font> StopPopUp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' PopUp deaktivieren</font><br><strong><font color=blue>End Sub</font></strong></div><div style='line-height: 5px;'><br></div></div></div>Außerdem kann zur weiteren Ressourcenschonung ein begrenzter Bereich und/oder ein bestimmtes Suchmuster vorgegeben werden.<br /><br />Wichtig ist das Abschalten des PopPup beim Schließen der Arbeitsmappe mittels des Events <span style="font-weight: bold;" class="mycode_b">BeforeClose</span>.<br /><br /><br /><u>Hinweis</u><br />Der Code ist etwas umfangreicher, weil auch ein Fensterhandling eingebaut wurde.<br />Bei Aktivierung einer anderen Anwendung als Excel wird die Funktionalität bis zur Reaktivierung der Mappe abgeschaltet.<br />Das gilt auch für den VBA-Editor. So kann man auch bequem weiterprogrammieren.  <img src="https://www.clever-excel-forum.de/images/smilies/pack 2/19.gif" alt="19" title="19" class="smilie smilie_27" /> <br /><br />Übrigens, die generierte Textbox kannst Du nach eigenen Vorstellungen anpassen.<br /><br />Hier auch noch eine Datei zum Ausprobieren....<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.clever-excel-forum.de/images/attachtypes/xlsb.png" title="" border="0" alt=".xlsb" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=54169" target="_blank" title="10.12.2024, 16:11">PopUpUeberZelle.xlsb</a> (Größe: 53,73 KB / Downloads: 10)
<!-- end: postbit_attachments_attachment --><br /><br />Und der Mustercode:<br /><!--- erstellt am 10.12.2024 15:09:23 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 1220px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus150923' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA150923' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Option Explicit</font><br><br><font color=#00a000>' ###&nbsp;&nbsp;&nbsp;&nbsp;Einstellungen&nbsp;&nbsp;&nbsp;&nbsp;###</font><br><font color=blue>Private Const</font> <font color=#d000d0>mbTooltip</font>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Boolean</font> = <font color=blue>True</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' An- Abschalten der Funktionalit&auml;t, z.B. f&uuml;r Wartungsarbeiten</font><br><font color=blue>Private Const</font> <font color=#d000d0>csSuch</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As String</font> = &quot;<font color=red>[EI]*</font>&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Suchmuster, * = egal</font><br><font color=blue>Private Const</font> <font color=#d000d0>csActiveRange</font> <font color=blue>As String</font> = &quot;<font color=red>*</font>&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Aktiven Bereich vorgeben, * = alles</font><br><font color=blue>Private Const</font> <font color=#d000d0>csDataRange</font>&nbsp;&nbsp; <font color=blue>As String</font> = &quot;<font color=red>Daten!A:A</font>&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Datenblatt und Bereich mit den PopUp-Daten</font><br><font color=blue>Private Const</font> <font color=#d000d0>ciSpalte</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Integer</font> = <font color=#ff6060>2</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Spalte im Datenblatt mit den PopUp-Texten</font><br><font color=blue>Private Const</font> <font color=#d000d0>ciBMax</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Integer</font> = <font color=#ff6060>0</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Feste K&auml;stchenbreite vorgeben 0=auto</font><br><font color=blue>Private Const</font> <font color=#d000d0>ciFontGross</font>&nbsp;&nbsp; <font color=blue>As Integer</font> = <font color=#ff6060>10</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Schriftgr&ouml;ße, 9 ist normal</font><br><font color=blue>Private Const</font> <font color=#d000d0>ciTickTime</font>&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font> = <font color=#ff6060>800</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Verz&ouml;gerung Box-Anzeige in mSec</font><br><font color=#00a000>' ### Ende Einstellungen ###</font><br><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32.dll</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> uElapse <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpTimerFunc <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>KillTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32.dll</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetCursorPos</font> <font color=blue>Lib</font> &quot;<font color=red>user32.dll</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByRef</font> lpPoint <font color=blue>As POINTAPI</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetWinEventHook</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> eventMin <font color=blue>As Long</font>, <font color=blue>ByVal</font> eventMax <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hmodWinEventProc <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpfnWinEventProc <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> idProcess <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> idThread <font color=blue>As Long</font>, <font color=blue>ByVal</font> dwflags <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>UnhookWinEvent</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hWinEventHook <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetActiveWindow</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; () <font color=blue>As LongPtr</font><br><br><font color=blue>Private Type POINTAPI</font><br>&nbsp;&nbsp;&nbsp;&nbsp;X <font color=blue>As Long</font><br>&nbsp;&nbsp;&nbsp;&nbsp;Y <font color=blue>As Long</font><br><font color=blue>End Type</font><br><br><font color=blue>Dim</font> mhCurWin&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As LongPtr</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Handle de aktiven Fensters</font><br><font color=blue>Dim</font> mhEventHook <font color=blue>As LongPtr</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Handle des Eventhooking</font><br><font color=blue>Dim</font> mhTimer&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As LongPtr</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Handle des Hooking</font><br><font color=blue>Dim</font> moCurObj&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As</font> Range<br><font color=blue>Dim</font> msLastRange <font color=blue>As String</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Letztes PopUp-Feld</font><br><font color=blue>Dim</font> mbAktiv&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Boolean</font><br><br><strong><font color=blue>Public Sub</font> StartPopUp()</strong><br>&nbsp;&nbsp;<font color=blue>If</font> <font color=#d000d0>mbTooltip</font> = <font color=blue>False Then Exit Sub</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Kein PopUp gew&uuml;nscht =&gt;raus</font><br>&nbsp;&nbsp;<font color=blue>Call</font> ToolTip_Delete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Ggf. altes Tooltip l&ouml;schen</font><br>&nbsp;&nbsp;mhCurWin = <font color=#d000d0>GetActiveWindow</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Gerade aktives Fenster</font><br>&nbsp;&nbsp;<font color=blue>If</font> mhEventHook = <font color=#ff6060>0</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp; mhEventHook = <font color=#d000d0>SetWinEventHook</font>(<font color=#ff6060>3</font>, <font color=#ff6060>3</font>, <font color=#ff6060>0</font>, <font color=blue>AddressOf</font> EventProc, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>)<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Call</font> StartTimer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Mausabfragen starten</font><br>&nbsp;&nbsp;<font color=blue>End If</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Public Sub</font> StopPopUp()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Beendet den Eventhook und Timer</font></strong><br>&nbsp;&nbsp;<font color=blue>If</font> mhEventHook &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> <font color=#d000d0>UnhookWinEvent</font> mhEventHook: mhEventHook = <font color=#ff6060>0</font><br>&nbsp;&nbsp;<font color=blue>Call</font> StopTimer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Timer l&ouml;schen</font><br>&nbsp;&nbsp;<font color=blue>Call</font> ToolTip_Delete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Ggf. Tooltip l&ouml;schen</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Sub</font> StartTimer()</strong><br>&nbsp;&nbsp;<font color=blue>If</font> mhTimer = <font color=#ff6060>0</font> <font color=blue>Then</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Timer starten</font><br>&nbsp;&nbsp;&nbsp;&nbsp; mhTimer = <font color=#d000d0>SetTimer</font>(<font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#5050f0>IIf</font>(mbAktiv, <font color=#ff6060>80</font>, <font color=#d000d0>ciTickTime</font>), <font color=blue>AddressOf</font> TimerTick)<br>&nbsp;&nbsp;<font color=blue>End If</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Sub</font> StopTimer()</strong><br>&nbsp;&nbsp;<font color=blue>If</font> mhTimer &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> <font color=#d000d0>KillTimer</font> <font color=#ff6060>0&</font>, mhTimer: mhTimer = <font color=#ff6060>0</font>&nbsp;&nbsp;<font color=#00a000>&nbsp;' Timer l&ouml;schen</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Function</font> EventProc(<font color=blue>ByVal</font> hWinEventHook <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> WinEvent <font color=blue>As Long</font>, _</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> idObject <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> idChild <font color=blue>As Long</font>, <font color=blue>ByVal</font> dwEventThread <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> dwmsEventTime <font color=blue>As Long</font>) <font color=blue>As Long</font><br>&nbsp;&nbsp;<font color=blue>If</font> hwnd = Application.hwnd <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Call</font> StartTimer<br>&nbsp;&nbsp;<font color=blue>Else</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> mhCurWin = Application.hwnd <font color=blue>Then Call</font> StopTimer&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Mausgesten/Timer stoppen</font><br>&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;mhCurWin = <font color=#d000d0>GetActiveWindow</font><br><strong><font color=blue>End Function</font></strong><br><br><strong><font color=blue>Private Sub</font> TimerTick()</strong><br><font color=#00a000>' Diese Sub wird periodisch aufgerufen</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> Pt <font color=blue>As POINTAPI</font>, rngBer <font color=blue>As</font> Range<br>&nbsp;<br>&nbsp;&nbsp;<font color=blue>DoEvents</font><br>&nbsp;&nbsp;<font color=#d000d0>GetCursorPos</font> Pt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Mausposition holen</font><br>&nbsp;&nbsp;<font color=blue>On Error Resume Next</font><br>&nbsp;<br>&nbsp;&nbsp;<font color=blue>Set</font> moCurObj = ActiveWindow.RangeFromPoint(Pt.X, Pt.Y)&nbsp;&nbsp; <font color=#00a000>&nbsp;' Objekt unter Maus</font><br>&nbsp;&nbsp;<font color=blue>If Err</font> &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> Err.Clear: <font color=blue>Exit Sub</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Fehler =&gt; raus</font><br><br>&nbsp;&nbsp;<font color=blue>If TypeOf</font> moCurObj <font color=blue>Is</font> Range <font color=blue>Then</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Ist es eine Range?</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>With</font> moCurObj<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> .MergeArea.Address &lt;&gt; msLastRange <font color=blue>Then</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Maus jetzt auf anderem Range?</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msLastRange = .MergeArea.Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Alte Range-Adresse merken</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> mbAktiv = <font color=blue>True Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Call</font> StopTimer:&nbsp;&nbsp; mbAktiv = <font color=blue>False</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Call</font> ToolTip_Delete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Tooltip l&ouml;schen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> <font color=#5050f0>Len</font>(<font color=#d000d0>csActiveRange</font>) &gt; <font color=#ff6060>1</font> <font color=blue>Then</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Aktiven Bereich setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Set</font> rngBer = Range(<font color=#d000d0>csActiveRange</font>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Else</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Set</font> rngBer = ActiveSheet.UsedRange<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End If</font><br><font color=#00a000>' PopUp anzeigen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If Not</font> Intersect(rngBer, moCurObj) <font color=blue>Is Nothing And</font> mbAktiv = <font color=blue>False</font> _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>And</font> .Value <font color=blue>Like</font> <font color=#d000d0>csSuch</font> <font color=blue>And</font> .Value &lt;&gt; &quot;<font color=red></font>&quot; <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Call</font> StopTimer:&nbsp;&nbsp; mbAktiv = <font color=blue>True</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Call</font> Tooltip_Create(moCurObj)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Tooltip erstellen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Call</font> StartTimer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Timer neu starten</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End With</font><br>&nbsp;&nbsp;<font color=blue>End If</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Sub</font> ToolTip_Delete()</strong><br>&nbsp;&nbsp;<font color=blue>On Error Resume Next</font><br>&nbsp;&nbsp;ActiveSheet.Shapes.Range(&quot;<font color=red>ToolTip</font>&quot;).Delete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Evtl. vorhandene Textbox l&ouml;schen</font><br><strong><font color=blue>End Sub</font></strong><br><br><br><strong><font color=blue>Sub</font> Tooltip_Create(oRng <font color=blue>As</font> Range)</strong><br><font color=#00a000>' Hier das Objekt formatieren oder ggf. etwas anderes programmieren</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> WSh <font color=blue>As</font> Worksheet<br>&nbsp;&nbsp;<font color=blue>Dim</font> sText <font color=blue>As String</font>, sArr() <font color=blue>As String</font>, t <font color=blue>As String</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> Y <font color=blue>As Integer</font>, X <font color=blue>As Integer</font>, B <font color=blue>As Integer</font>, H <font color=blue>As Integer</font>, L <font color=blue>As Currency</font><br>&nbsp;&nbsp;<font color=blue>Dim i As Integer</font>, j <font color=blue>As Integer</font>, iGefunden <font color=blue>As Long</font><br><br>&nbsp;&nbsp;<font color=blue>On Error Resume Next</font><br>&nbsp;&nbsp;<font color=blue>Set</font> WSh = Sheets(<font color=blue>Split</font>(<font color=#d000d0>csDataRange</font>, &quot;<font color=red>!</font>&quot;)(<font color=#ff6060>0</font>))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Datenblatt setzen</font><br>&nbsp;&nbsp;<font color=blue>If</font> WSh <font color=blue>Is Nothing Then Exit Sub</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Datenblatt nicht gefunden =&gt;raus</font><br><br>&nbsp;&nbsp;<font color=blue>With</font> oRng<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sText = .MergeArea.Cells(<font color=#ff6060>1</font>, <font color=#ff6060>1</font>).Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Suchtext holen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> sText = &quot;<font color=red></font>&quot; <font color=blue>Then Exit Sub</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Kein Text=&gt;raus</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iGefunden = Application.<font color=blue>WorksheetFunction</font>.Match(sText, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WSh.Range(<font color=blue>Split</font>(<font color=#d000d0>csDataRange</font>, &quot;<font color=red>!</font>&quot;)(<font color=#ff6060>1</font>)), <font color=#ff6060>0</font>)<font color=#00a000>&nbsp;' Suchbegriff suchen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> iGefunden = <font color=#ff6060>0</font> <font color=blue>Then Exit Sub</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Suchtext nicht gefunden =&gt;raus</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sText = WSh.Cells(iGefunden, ciSpalte).Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Tooltip-Text holen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sText = <font color=#5050f0>Replace</font>(sText, &quot;<font color=red>¶</font>&quot;, <font color=#a000c0>vbLf</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Textumbr&uuml;che setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sArr = <font color=#5050f0>Split</font>(sText, <font color=#a000c0>vbLf</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Text in Array</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>For i</font> = <font color=#ff6060>0</font> <font color=blue>To</font> <font color=#5050f0>UBound</font>(sArr)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> <font color=#d000d0>ciBMax</font> = <font color=#ff6060>0</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L = <font color=#ff6060>0</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>For</font> j = <font color=#ff6060>1</font> <font color=blue>To</font> <font color=#5050f0>Len</font>(sArr(i))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Textbreite je Zeile ermitteln</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t = <font color=#5050f0>Mid&#36;</font>(sArr(i), j, <font color=#ff6060>1</font>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L = L + <font color=#ff6060>2.75</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> <font color=#5050f0>InStr</font>(<font color=#ff6060>1</font>, <font color=#5050f0>Chr&#36;</font>(<font color=#ff6060>34</font>) & &quot;<font color=red> !/()&bsol;''|,;.:1ijl</font>&quot;, t, <font color=#a000c0>vbTextCompare</font>) = <font color=#ff6060>0</font> <font color=blue>Then</font> L = L + <font color=#ff6060>2.5</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> <font color=#5050f0>InStr</font>(<font color=#ff6060>1</font>, <font color=#5050f0>Chr&#36;</font>(<font color=#ff6060>34</font>) & &quot;<font color=red>wm_</font>&quot;, t, <font color=#a000c0>vbTextCompare</font>) &gt; <font color=#ff6060>0</font> <font color=blue>Then</font> L = L + <font color=#ff6060>0.75</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> <font color=#5050f0>Asc</font>(t) &gt; <font color=#ff6060>64</font> <font color=blue>And</font> <font color=#5050f0>Asc</font>(t) &lt; <font color=#ff6060>97</font> <font color=blue>Then</font> L = L + <font color=#ff6060>1.5</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Next</font> j<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> L &gt; B <font color=blue>Then</font> B = L&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Textboxl&auml;nge ermitteln</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;H = H + <font color=#ff6060>12</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Zeilenh&ouml;he</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Next i</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B = B <font color=blue>*</font> <font color=#d000d0>ciFontGross</font> &bsol; <font color=#ff6060>9</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> <font color=#d000d0>ciBMax</font> &gt; <font color=#ff6060>0</font> <font color=blue>Then</font> B = <font color=#d000d0>ciBMax</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Feste Breitenvorgabe</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Call</font> ToolTip_Delete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Evtl. vorhandenes Tooltip l&ouml;schen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y = .Top + <font color=#ff6060>1</font>: X = .Offset(<font color=#ff6060>0</font>, <font color=#ff6060>1</font>).Left + <font color=#ff6060>2</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Box positionieren</font><br><br><font color=#00a000>' Tooltip: Anzeigebox erstellen &lt;&lt;&lt; Parameter ggf. hier anpassen &gt;&gt;&gt;</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>With</font> .Parent.Shapes.AddTextbox(<font color=#ff6060>1</font>, X, Y, B, H)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Name = &quot;<font color=red>ToolTip</font>&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Visible = <font color=#a000c0>msoTrue</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' ToolTip sichtbar</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>With</font> .TextFrame2.TextRange<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Font.Fill.ForeColor.RGB = <font color=#5050f0>RGB</font>(<font color=#ff6060>255</font>, <font color=#ff6060>255</font>, <font color=#ff6060>160</font>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Font.Size = <font color=#d000d0>ciFontGross</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Font.Name = &quot;<font color=red>Arial</font>&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Text = sText<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End With</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>With</font> .Fill<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .ForeColor.RGB = <font color=#5050f0>RGB</font>(<font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>100</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Hintergrundfarbe setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Solid<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End With</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>With</font> .TextFrame2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .AutoSize = <font color=#a000c0>msoAutoSizeShapeToFitText</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Textboxgr&ouml;ße automatisch</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .MarginLeft = <font color=#ff6060>1.5</font>:&nbsp;&nbsp; .MarginTop = <font color=#ff6060>1.5</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Randabst&auml;nde</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .MarginBottom = <font color=#ff6060>1.5</font>: .MarginRight = <font color=#ff6060>1.5</font>&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Randabst&auml;nde</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End With</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>End With</font><br>&nbsp;&nbsp;<font color=blue>End With</font><br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Userform - Titelleiste formatieren]]></title>
			<link>https://www.clever-excel-forum.de/Thread-Userform-Titelleiste-formatieren</link>
			<pubDate>Wed, 09 Oct 2024 14:02:40 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.clever-excel-forum.de/member.php?action=profile&uid=18350">volti</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.clever-excel-forum.de/Thread-Userform-Titelleiste-formatieren</guid>
			<description><![CDATA[Liebe Leserin, lieber Leser,<br /><br />das Formatieren der Titelleiste einer Userform ist eigentlich nicht vorgesehen. Möchte man diese formatieren, blenden viele Programmierer die Titelleiste aus und formatieren die Userform an sich entsprechend.<br />Es entsteht sozusagen eine "Fake"-Titelleiste.<br /><br />Dass es aber trotzdem geht, die Titelleiste zu formatieren, möchte ich mit nachfolgendem Code einmal aufzeigen.<br /><br />Der nachfolgende Code bzw. der Code in der Beispieldatei erstellt formatiert die Titelleiste einer Userform.<br /><br />Hierzu müssen wir uns in die Messageschleife der Userform einhooken und die Message WM_NCPAINT entsprechend bearbeiten, denn das Bemalen der Captionbar ist in Windows standardmäßig nicht vorgesehen.<br /><br />Zum Malen in der Captionbar wird diese und der Rahmen drum herum erst mal von Windows gelöscht. Leider werden auch der Schatten und das Systemkreuz gelöscht und nicht wieder hergestellt.<br />Der Aufwand das Systemkreuz und den Schatten wieder herzustellen, ist mir zu groß. Das Systemkreuz wurde daher abgeschaltet und als Schatten eine kleine Sonderlösung eingebaut.<br /><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.clever-excel-forum.de/images/attachtypes/image.gif" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=53540" target="_blank" title="09.10.2024, 16:00">Userform_Titelleiste.png</a> (Größe: 9,11 KB / Downloads: 71)
<!-- end: postbit_attachments_attachment --> <br /><br />Wen's also nicht stört, der kann dann gerne so eine formatierte Userform bauen. Restliche Erklärungen wie immer im Code....<br /><br />Und nun viel Spaß und Erfolg beim Ausprobieren....<br /><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.clever-excel-forum.de/images/attachtypes/xlsb.png" title="" border="0" alt=".xlsb" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=53541" target="_blank" title="09.10.2024, 16:01">Userform_Titelleiste_Formatieren.xlsb</a> (Größe: 46,78 KB / Downloads: 13)
<!-- end: postbit_attachments_attachment --> <br /><br /><!--- erstellt am 09.10.2024 15:58:35 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 1090px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus155835' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA155835' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Private Const</font> <font color=#d000d0>iPenB</font> <font color=blue>As Long</font> = <font color=#ff6060>2</font>&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Schattenbreite 1 bis 5</font><br><br><font color=#00a000>' Window-Funktionen</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>FindWindowA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpClassName <font color=blue>As String</font>, <font color=blue>ByVal</font> lpWindowName <font color=blue>As String</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetClientRect</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, lpRect <font color=blue>As RECT</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetWindowRect</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, lpRect <font color=blue>As RECT</font>) <font color=blue>As Long</font><br><br><font color=#00a000>' Hooking-Funktionen</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>CallWindowProcA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpPrevWndFunc <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> Msg <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>#If</font> <font color=blue><b>Win64</b></font> <font color=blue>Then</font><br>&nbsp;<font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetWindowLongA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; <font color=blue>Alias</font> &quot;<font color=red>SetWindowLongPtrA</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIndex <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> dwNewLong <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br>&nbsp;<font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetWindowLongA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; <font color=blue>Alias</font> &quot;<font color=red>GetWindowLongPtrA</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIndex <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>#Else</font><br>&nbsp;<font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetWindowLongA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> nIndex <font color=blue>As Long</font>, <font color=blue>ByVal</font> dwNewLong <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br>&nbsp;<font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetWindowLongA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIndex <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>#End If</font><br><font color=blue>Private Const</font> <font color=#d000d0>GWL_WNDPROC</font>&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font> = <font color=#ff6060>-4</font><br><br><font color=#00a000>' GDI-Funktionen</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetWindowDC</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=#00a000>'Private Declare PtrSafe Function GetDC Lib &quot;user32&quot; (ByVal hwnd As LongPtr) As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>ReleaseDC</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> hDC <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>CreatePen</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> nPenStyle <font color=blue>As Long</font>, <font color=blue>ByVal</font> nWidth <font color=blue>As Long</font>, <font color=blue>ByVal</font> crColor <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>CreateSolidBrush</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> crColor <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SelectObject</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hDC <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hObject <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>DeleteObject</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hObject <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>CreateFontA</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32.dll</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> nHeight <font color=blue>As Long</font>, <font color=blue>ByVal</font> nWidth <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> nEscapement <font color=blue>As Long</font>, <font color=blue>ByVal</font> nOrientation <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> fnWeight <font color=blue>As Long</font>, <font color=blue>ByVal</font> fdwItalic <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> fdwUnderline <font color=blue>As Long</font>, <font color=blue>ByVal</font> fdwStrikeOut <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> fdwCharSet <font color=blue>As Long</font>, <font color=blue>ByVal</font> fdwOutputPrecision <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> fdwClipPrecision <font color=blue>As Long</font>, <font color=blue>ByVal</font> fdwQuality <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> fdwPitchAndFamily <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpszFace <font color=blue>As String</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetTextColor</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hDC <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> crColor <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetBkMode</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hDC <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> nBkMode <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>DrawTextA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hDC <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpStr <font color=blue>As String</font>, <font color=blue>ByVal</font> nCount <font color=blue>As Long</font>, lpRect <font color=blue>As RECT</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wFormat <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetStockObject</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> nIndex <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>MoveToEx</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hDC <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> x <font color=blue>As Long</font>, <font color=blue>ByVal</font> y <font color=blue>As Long</font>, lpPoint <font color=blue>As POINTAPI</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>LineTo</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hDC <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> x <font color=blue>As Long</font>, <font color=blue>ByVal</font> y <font color=blue>As Long</font>) <font color=blue>As Long</font><br><br><font color=blue>Type POINTAPI</font><br>&nbsp;&nbsp;&nbsp;&nbsp;x <font color=blue>As Long</font><br>&nbsp;&nbsp;&nbsp;&nbsp;y <font color=blue>As Long</font><br><font color=blue>End Type</font><br><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>OleTranslateColor</font> <font color=blue>Lib</font> &quot;<font color=red>oleaut32.dll</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> clr <font color=blue>As</font> OLE_COLOR, <font color=blue>ByVal</font> palet <font color=blue>As LongPtr</font>, col <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>ColorAdjustLuma</font> <font color=blue>Lib</font> &quot;<font color=red>shlwapi.dll</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> clrRGB <font color=blue>As Long</font>, <font color=blue>ByVal</font> n <font color=blue>As Long</font>, <font color=blue>ByVal</font> fScale <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetRect</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (lpRect <font color=blue>As RECT</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> X1 <font color=blue>As Long</font>, <font color=blue>ByVal</font> Y1 <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> X2 <font color=blue>As Long</font>, <font color=blue>ByVal</font> Y2 <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>FrameRect</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hDC <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpRect <font color=blue>As RECT</font>, <font color=blue>ByVal</font> hBrush <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>FillRect</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hDC <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpRect <font color=blue>As RECT</font>, <font color=blue>ByVal</font> hBrush <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><br><font color=blue>Private Type RECT</font><br>&nbsp;&nbsp; Left&nbsp;&nbsp; <font color=blue>As Long</font><br>&nbsp;&nbsp; Top&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font><br>&nbsp;&nbsp; Right&nbsp;&nbsp;<font color=blue>As Long</font><br>&nbsp;&nbsp; Bottom <font color=blue>As Long</font><br><font color=blue>End Type</font><br><br><font color=blue>Type Userform_Titlebar_STRUCT</font><br>&nbsp;&nbsp; Caption&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As String</font><br>&nbsp;&nbsp; BackFarbe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font><br>&nbsp;&nbsp; Textfarbe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font><br>&nbsp;&nbsp; TextPosition&nbsp;&nbsp; <font color=blue>As Long</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' 0=links, 1=Zentriert</font><br>&nbsp;&nbsp; Schriftgroesse <font color=blue>As Long</font><br>&nbsp;&nbsp; Schriftart&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As String</font><br>&nbsp;&nbsp; Fett&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Boolean</font><br>&nbsp;&nbsp; kursiv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Boolean</font><br>&nbsp;&nbsp; Rand&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Long</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' 0=keiner, 1=weiß, 5=schwarz usw.</font><br>&nbsp;&nbsp; Rahmenfarbe&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font><br><font color=blue>End Type</font><br><font color=blue>Global</font> mtUF <font color=blue>As Userform_Titlebar_STRUCT</font><br><br><font color=blue>Dim</font> mhDlgProc <font color=blue>As LongPtr</font>, mhFont <font color=blue>As LongPtr</font><br><font color=blue>Dim</font> mhPen(<font color=#ff6060>2</font>) <font color=blue>As LongPtr</font>, mhBrush(<font color=#ff6060>2</font>) <font color=blue>As LongPtr</font><br><font color=blue>Dim</font> PT <font color=blue>As POINTAPI</font><br><br><strong><font color=blue>Sub</font> FormatUserform()</strong><br>&nbsp;&nbsp;<font color=blue>Dim</font> hWndUF <font color=blue>As LongPtr</font>, iFarbe <font color=blue>As Long</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>GWL_STYLE</font> <font color=blue>As Long</font> = <font color=#ff6060>-16</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;mhPen(<font color=#ff6060>1</font>) = <font color=#ff6060>0</font>: mhPen(<font color=#ff6060>2</font>) = <font color=#ff6060>0</font>: mhFont = <font color=#ff6060>0</font><br>&nbsp;&nbsp;<font color=blue>With</font> mtUF<br>&nbsp;&nbsp;&nbsp;&nbsp; hWndUF = <font color=#d000d0>FindWindowA</font>(&quot;<font color=red>ThunderDFrame</font>&quot;, .Caption)<br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetWindowLongA</font> hWndUF, <font color=#d000d0>GWL_STYLE</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>GetWindowLongA</font>(hWndUF, <font color=#d000d0>GWL_STYLE</font>) <font color=blue>And Not</font> <font color=#ff6060>&H80000</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' &H80000 = WS_SYSMENU abschalten</font><br><br>&nbsp;&nbsp;&nbsp;&nbsp; mhBrush(<font color=#ff6060>1</font>) = <font color=#d000d0>CreateSolidBrush</font>(.BackFarbe)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Pinsel Caption HG-Farbe erstellen</font><br>&nbsp;&nbsp;&nbsp;&nbsp; iFarbe = <font color=#5050f0>IIf</font>(.Rahmenfarbe &lt;&gt; <font color=#ff6060>0</font>, .Rahmenfarbe, .BackFarbe)<br>&nbsp;&nbsp;&nbsp;&nbsp; mhBrush(<font color=#ff6060>2</font>) = <font color=#d000d0>CreateSolidBrush</font>(iFarbe)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Pinsel Rahmen HG-Farbe erstellen</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> .Schriftgroesse &gt; <font color=#ff6060>0</font> <font color=blue>And</font> .Schriftart &lt;&gt; &quot;<font color=red></font>&quot; <font color=blue>Then</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Neue Schriftart erstellen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mhFont = <font color=#d000d0>CreateFontA</font>(.Schriftgroesse, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#5050f0>IIf</font>(.Fett, <font color=#ff6060>700</font>, <font color=#ff6060>400</font>), <font color=#5050f0>IIf</font>(.kursiv, <font color=#ff6060>1</font>, <font color=#ff6060>0</font>), _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, .Schriftart)<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br><font color=#00a000>' Pens f&uuml;r die Schattenbildung erstellen</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> .Rand &gt; <font color=#ff6060>0</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mhPen(<font color=#ff6060>1</font>) = <font color=#d000d0>CreatePen</font>(<font color=#ff6060>0</font>, <font color=#ff6060>2</font>, <font color=#a000c0>vbWhite</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Weißen Pen erstellen (2 Pixel)</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iFarbe = <font color=#d000d0>ColorAdjustLuma</font>(iFarbe, <font color=#ff6060>-300</font>, <font color=blue>True</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Farbe f&uuml;r Schatten abdunkeln</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mhPen(<font color=#ff6060>2</font>) = <font color=#d000d0>CreatePen</font>(<font color=#ff6060>0</font>, <font color=#d000d0>iPenB</font>, iFarbe)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Farbigen Pen erstellen (2 Pixel)</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;<font color=blue>End With</font><br><font color=#00a000>' Userform hooken, alle Meldungen f&uuml;r die Userform werden umgeleitet</font><br>&nbsp;&nbsp;mhDlgProc = <font color=#d000d0>SetWindowLongA</font>(hWndUF, <font color=#d000d0>GWL_WNDPROC</font>, <font color=blue>AddressOf</font> WindowProc)<br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Function</font> WindowProc(<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> uMsg <font color=blue>As Long</font>, _</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=#00a000>' CallbackProzedur f&uuml;r Meldungen der Userform</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> hDC <font color=blue>As LongPtr</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> B <font color=blue>As Long</font>, H <font color=blue>As Long</font>, <font color=blue>i As Long</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> R <font color=blue>As RECT</font>, RC <font color=blue>As RECT</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>Select Case</font> uMsg<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>Case</font> <font color=#ff6060>&H85</font>, <font color=#ff6060>&H6</font> <font color=#00a000>&nbsp;' WM_NCPAINT, WM_ACTIVATE</font><br><font color=#00a000>' Titelleiste und Rahmen beabeiten</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>GetClientRect</font> hwnd, RC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Userform-Fl&auml;che holen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hDC = <font color=#d000d0>GetWindowDC</font>(hwnd)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Userform-Fl&auml;che incl. Caption/Rahmen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B = RC.Right: H = RC.Bottom + <font color=#ff6060>48</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetRect</font> R, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>9</font>, H:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>FillRect</font> hDC, R, mhBrush(<font color=#ff6060>2</font>)<font color=#00a000>&nbsp;' linker Rahmen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetRect</font> R, B + <font color=#ff6060>9</font>, <font color=#ff6060>0</font>, B + <font color=#ff6060>18</font>, H:&nbsp;&nbsp;<font color=#d000d0>FillRect</font> hDC, R, mhBrush(<font color=#ff6060>2</font>)<font color=#00a000>&nbsp;' rechter Rahmen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetRect</font> R, <font color=#ff6060>0</font>, H - <font color=#ff6060>10</font>, B + <font color=#ff6060>18</font>, H: <font color=#d000d0>FillRect</font> hDC, R, mhBrush(<font color=#ff6060>2</font>)<font color=#00a000>&nbsp;' unterer Rahmen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetRect</font> R, <font color=#ff6060>9</font>, <font color=#ff6060>0</font>, B + <font color=#ff6060>9</font>, <font color=#ff6060>9</font>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>FillRect</font> hDC, R, mhBrush(<font color=#ff6060>2</font>)<font color=#00a000>&nbsp;' oberer Rahmen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetRect</font> R, <font color=#ff6060>9</font>, <font color=#ff6060>9</font>, B + <font color=#ff6060>9</font>, <font color=#ff6060>38</font>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>FillRect</font> hDC, R, mhBrush(<font color=#ff6060>1</font>)<font color=#00a000>&nbsp;' Captionbereich setzen</font><br><font color=#00a000>'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetRect R, 9, 0, B + 9, 38:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FillRect hDC, R, mhBrush(1) ' Captionbereich setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetBkMode</font> hDC, <font color=#ff6060>1</font><font color=#00a000>&nbsp;' 1 = Transparent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Hintergrundmodus transparent setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> mhFont &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> <font color=#d000d0>SelectObject</font> hDC, mhFont&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Font aktivieren</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetTextColor</font> hDC, mtUF.Textfarbe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Schriftfarbe setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>DrawTextA</font> hDC, mtUF.Caption & <font color=#a000c0>vbNullChar</font>, (<font color=#ff6060>-1</font>), R, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#5050f0>IIf</font>(mtUF.TextPosition &gt; <font color=#ff6060>0</font>, <font color=#ff6060>&H25</font>, <font color=#ff6060>&H24</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Jetzt Text erneut ausgeben</font><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> mhPen(<font color=#ff6060>1</font>) &lt;&gt; <font color=#ff6060>0</font> <font color=blue>And</font> mhPen(<font color=#ff6060>2</font>) &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Rand bearbeiten&gt;0</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SelectObject</font> hDC, mhPen(<font color=#ff6060>1</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Weißen Pen aktivieren</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>MoveToEx</font> hDC, <font color=#ff6060>1</font>, H - <font color=#ff6060>1</font>, PT:&nbsp;&nbsp;<font color=#d000d0>LineTo</font> hDC, <font color=#ff6060>1</font>, <font color=#ff6060>1</font>: <font color=#d000d0>LineTo</font> hDC, B + <font color=#ff6060>18</font>, <font color=#ff6060>1</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SelectObject</font> hDC, mhPen(<font color=#ff6060>2</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Farbigen Pen aktivieren</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>MoveToEx</font> hDC, B + <font color=#ff6060>18</font> - <font color=#d000d0>iPenB</font>, <font color=#ff6060>2</font>, PT: <font color=#d000d0>LineTo</font> hDC, B + <font color=#ff6060>18</font> - <font color=#d000d0>iPenB</font>, H - <font color=#d000d0>iPenB</font> - <font color=#ff6060>1</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>LineTo</font> hDC, <font color=#ff6060>2</font>, H - <font color=#d000d0>iPenB</font> - <font color=#ff6060>1</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Else</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SetRect</font> R, <font color=#ff6060>1</font>, <font color=#ff6060>1</font>, RC.Right + <font color=#ff6060>18</font>, RC.Bottom + <font color=#ff6060>47</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Rahmenbereich setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>FrameRect</font> hDC, R, <font color=#d000d0>GetStockObject</font>(<font color=#ff6060>5</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Userform-Umrandung zeichnen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>ReleaseDC</font> hwnd, hDC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Device Context (DC) aufl&ouml;sen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Exit Function</font><br><br>&nbsp;&nbsp;<font color=blue>Case</font> <font color=#ff6060>&H2</font>&nbsp;&nbsp;<font color=#00a000>&nbsp;' WM_DESTROY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Userform beeenden</font><br><font color=#00a000>' Aufr&auml;umen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>For i</font> = <font color=#ff6060>1</font> <font color=blue>To</font> <font color=#ff6060>2</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> mhPen(i) &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> <font color=#d000d0>DeleteObject</font> mhPen(i)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Pens wieder l&ouml;schen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> mhBrush(i) &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> <font color=#d000d0>DeleteObject</font> mhBrush(i)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Pinsel wieder l&ouml;schen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Next i</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> mhFont &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> <font color=#d000d0>DeleteObject</font> mhFont&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Font wieder l&ouml;schen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Call</font> <font color=#d000d0>SetWindowLongA</font>(hwnd, <font color=#d000d0>GWL_WNDPROC</font>, mhDlgProc)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Userform unhooken</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Exit Function</font><br>&nbsp;&nbsp;<font color=blue>End Select</font><br><br><font color=#00a000>' Andere Messages an Urspungsprozedur weiterleiten</font><br>&nbsp;&nbsp;WindowProc = <font color=#d000d0>CallWindowProcA</font>(mhDlgProc, hwnd, uMsg, <font color=blue>ByVal</font> wParam, <font color=blue>ByVal</font> lParam)<br><br><strong><font color=blue>End Function</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></description>
			<content:encoded><![CDATA[Liebe Leserin, lieber Leser,<br /><br />das Formatieren der Titelleiste einer Userform ist eigentlich nicht vorgesehen. Möchte man diese formatieren, blenden viele Programmierer die Titelleiste aus und formatieren die Userform an sich entsprechend.<br />Es entsteht sozusagen eine "Fake"-Titelleiste.<br /><br />Dass es aber trotzdem geht, die Titelleiste zu formatieren, möchte ich mit nachfolgendem Code einmal aufzeigen.<br /><br />Der nachfolgende Code bzw. der Code in der Beispieldatei erstellt formatiert die Titelleiste einer Userform.<br /><br />Hierzu müssen wir uns in die Messageschleife der Userform einhooken und die Message WM_NCPAINT entsprechend bearbeiten, denn das Bemalen der Captionbar ist in Windows standardmäßig nicht vorgesehen.<br /><br />Zum Malen in der Captionbar wird diese und der Rahmen drum herum erst mal von Windows gelöscht. Leider werden auch der Schatten und das Systemkreuz gelöscht und nicht wieder hergestellt.<br />Der Aufwand das Systemkreuz und den Schatten wieder herzustellen, ist mir zu groß. Das Systemkreuz wurde daher abgeschaltet und als Schatten eine kleine Sonderlösung eingebaut.<br /><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.clever-excel-forum.de/images/attachtypes/image.gif" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=53540" target="_blank" title="09.10.2024, 16:00">Userform_Titelleiste.png</a> (Größe: 9,11 KB / Downloads: 71)
<!-- end: postbit_attachments_attachment --> <br /><br />Wen's also nicht stört, der kann dann gerne so eine formatierte Userform bauen. Restliche Erklärungen wie immer im Code....<br /><br />Und nun viel Spaß und Erfolg beim Ausprobieren....<br /><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.clever-excel-forum.de/images/attachtypes/xlsb.png" title="" border="0" alt=".xlsb" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=53541" target="_blank" title="09.10.2024, 16:01">Userform_Titelleiste_Formatieren.xlsb</a> (Größe: 46,78 KB / Downloads: 13)
<!-- end: postbit_attachments_attachment --> <br /><br /><!--- erstellt am 09.10.2024 15:58:35 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 1090px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus155835' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA155835' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Private Const</font> <font color=#d000d0>iPenB</font> <font color=blue>As Long</font> = <font color=#ff6060>2</font>&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Schattenbreite 1 bis 5</font><br><br><font color=#00a000>' Window-Funktionen</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>FindWindowA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpClassName <font color=blue>As String</font>, <font color=blue>ByVal</font> lpWindowName <font color=blue>As String</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetClientRect</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, lpRect <font color=blue>As RECT</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetWindowRect</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, lpRect <font color=blue>As RECT</font>) <font color=blue>As Long</font><br><br><font color=#00a000>' Hooking-Funktionen</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>CallWindowProcA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpPrevWndFunc <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> Msg <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>#If</font> <font color=blue><b>Win64</b></font> <font color=blue>Then</font><br>&nbsp;<font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetWindowLongA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; <font color=blue>Alias</font> &quot;<font color=red>SetWindowLongPtrA</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIndex <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> dwNewLong <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br>&nbsp;<font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetWindowLongA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; <font color=blue>Alias</font> &quot;<font color=red>GetWindowLongPtrA</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIndex <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>#Else</font><br>&nbsp;<font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetWindowLongA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> nIndex <font color=blue>As Long</font>, <font color=blue>ByVal</font> dwNewLong <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br>&nbsp;<font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetWindowLongA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIndex <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>#End If</font><br><font color=blue>Private Const</font> <font color=#d000d0>GWL_WNDPROC</font>&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font> = <font color=#ff6060>-4</font><br><br><font color=#00a000>' GDI-Funktionen</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetWindowDC</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=#00a000>'Private Declare PtrSafe Function GetDC Lib &quot;user32&quot; (ByVal hwnd As LongPtr) As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>ReleaseDC</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> hDC <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>CreatePen</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> nPenStyle <font color=blue>As Long</font>, <font color=blue>ByVal</font> nWidth <font color=blue>As Long</font>, <font color=blue>ByVal</font> crColor <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>CreateSolidBrush</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> crColor <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SelectObject</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hDC <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hObject <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>DeleteObject</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hObject <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>CreateFontA</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32.dll</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> nHeight <font color=blue>As Long</font>, <font color=blue>ByVal</font> nWidth <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> nEscapement <font color=blue>As Long</font>, <font color=blue>ByVal</font> nOrientation <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> fnWeight <font color=blue>As Long</font>, <font color=blue>ByVal</font> fdwItalic <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> fdwUnderline <font color=blue>As Long</font>, <font color=blue>ByVal</font> fdwStrikeOut <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> fdwCharSet <font color=blue>As Long</font>, <font color=blue>ByVal</font> fdwOutputPrecision <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> fdwClipPrecision <font color=blue>As Long</font>, <font color=blue>ByVal</font> fdwQuality <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> fdwPitchAndFamily <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpszFace <font color=blue>As String</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetTextColor</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hDC <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> crColor <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetBkMode</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hDC <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> nBkMode <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>DrawTextA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hDC <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpStr <font color=blue>As String</font>, <font color=blue>ByVal</font> nCount <font color=blue>As Long</font>, lpRect <font color=blue>As RECT</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wFormat <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetStockObject</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> nIndex <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>MoveToEx</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hDC <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> x <font color=blue>As Long</font>, <font color=blue>ByVal</font> y <font color=blue>As Long</font>, lpPoint <font color=blue>As POINTAPI</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>LineTo</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hDC <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> x <font color=blue>As Long</font>, <font color=blue>ByVal</font> y <font color=blue>As Long</font>) <font color=blue>As Long</font><br><br><font color=blue>Type POINTAPI</font><br>&nbsp;&nbsp;&nbsp;&nbsp;x <font color=blue>As Long</font><br>&nbsp;&nbsp;&nbsp;&nbsp;y <font color=blue>As Long</font><br><font color=blue>End Type</font><br><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>OleTranslateColor</font> <font color=blue>Lib</font> &quot;<font color=red>oleaut32.dll</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> clr <font color=blue>As</font> OLE_COLOR, <font color=blue>ByVal</font> palet <font color=blue>As LongPtr</font>, col <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>ColorAdjustLuma</font> <font color=blue>Lib</font> &quot;<font color=red>shlwapi.dll</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> clrRGB <font color=blue>As Long</font>, <font color=blue>ByVal</font> n <font color=blue>As Long</font>, <font color=blue>ByVal</font> fScale <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetRect</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (lpRect <font color=blue>As RECT</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> X1 <font color=blue>As Long</font>, <font color=blue>ByVal</font> Y1 <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> X2 <font color=blue>As Long</font>, <font color=blue>ByVal</font> Y2 <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>FrameRect</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hDC <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpRect <font color=blue>As RECT</font>, <font color=blue>ByVal</font> hBrush <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>FillRect</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hDC <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpRect <font color=blue>As RECT</font>, <font color=blue>ByVal</font> hBrush <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><br><font color=blue>Private Type RECT</font><br>&nbsp;&nbsp; Left&nbsp;&nbsp; <font color=blue>As Long</font><br>&nbsp;&nbsp; Top&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font><br>&nbsp;&nbsp; Right&nbsp;&nbsp;<font color=blue>As Long</font><br>&nbsp;&nbsp; Bottom <font color=blue>As Long</font><br><font color=blue>End Type</font><br><br><font color=blue>Type Userform_Titlebar_STRUCT</font><br>&nbsp;&nbsp; Caption&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As String</font><br>&nbsp;&nbsp; BackFarbe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font><br>&nbsp;&nbsp; Textfarbe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font><br>&nbsp;&nbsp; TextPosition&nbsp;&nbsp; <font color=blue>As Long</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' 0=links, 1=Zentriert</font><br>&nbsp;&nbsp; Schriftgroesse <font color=blue>As Long</font><br>&nbsp;&nbsp; Schriftart&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As String</font><br>&nbsp;&nbsp; Fett&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Boolean</font><br>&nbsp;&nbsp; kursiv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Boolean</font><br>&nbsp;&nbsp; Rand&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Long</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' 0=keiner, 1=weiß, 5=schwarz usw.</font><br>&nbsp;&nbsp; Rahmenfarbe&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font><br><font color=blue>End Type</font><br><font color=blue>Global</font> mtUF <font color=blue>As Userform_Titlebar_STRUCT</font><br><br><font color=blue>Dim</font> mhDlgProc <font color=blue>As LongPtr</font>, mhFont <font color=blue>As LongPtr</font><br><font color=blue>Dim</font> mhPen(<font color=#ff6060>2</font>) <font color=blue>As LongPtr</font>, mhBrush(<font color=#ff6060>2</font>) <font color=blue>As LongPtr</font><br><font color=blue>Dim</font> PT <font color=blue>As POINTAPI</font><br><br><strong><font color=blue>Sub</font> FormatUserform()</strong><br>&nbsp;&nbsp;<font color=blue>Dim</font> hWndUF <font color=blue>As LongPtr</font>, iFarbe <font color=blue>As Long</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>GWL_STYLE</font> <font color=blue>As Long</font> = <font color=#ff6060>-16</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;mhPen(<font color=#ff6060>1</font>) = <font color=#ff6060>0</font>: mhPen(<font color=#ff6060>2</font>) = <font color=#ff6060>0</font>: mhFont = <font color=#ff6060>0</font><br>&nbsp;&nbsp;<font color=blue>With</font> mtUF<br>&nbsp;&nbsp;&nbsp;&nbsp; hWndUF = <font color=#d000d0>FindWindowA</font>(&quot;<font color=red>ThunderDFrame</font>&quot;, .Caption)<br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetWindowLongA</font> hWndUF, <font color=#d000d0>GWL_STYLE</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>GetWindowLongA</font>(hWndUF, <font color=#d000d0>GWL_STYLE</font>) <font color=blue>And Not</font> <font color=#ff6060>&H80000</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' &H80000 = WS_SYSMENU abschalten</font><br><br>&nbsp;&nbsp;&nbsp;&nbsp; mhBrush(<font color=#ff6060>1</font>) = <font color=#d000d0>CreateSolidBrush</font>(.BackFarbe)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Pinsel Caption HG-Farbe erstellen</font><br>&nbsp;&nbsp;&nbsp;&nbsp; iFarbe = <font color=#5050f0>IIf</font>(.Rahmenfarbe &lt;&gt; <font color=#ff6060>0</font>, .Rahmenfarbe, .BackFarbe)<br>&nbsp;&nbsp;&nbsp;&nbsp; mhBrush(<font color=#ff6060>2</font>) = <font color=#d000d0>CreateSolidBrush</font>(iFarbe)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Pinsel Rahmen HG-Farbe erstellen</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> .Schriftgroesse &gt; <font color=#ff6060>0</font> <font color=blue>And</font> .Schriftart &lt;&gt; &quot;<font color=red></font>&quot; <font color=blue>Then</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Neue Schriftart erstellen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mhFont = <font color=#d000d0>CreateFontA</font>(.Schriftgroesse, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#5050f0>IIf</font>(.Fett, <font color=#ff6060>700</font>, <font color=#ff6060>400</font>), <font color=#5050f0>IIf</font>(.kursiv, <font color=#ff6060>1</font>, <font color=#ff6060>0</font>), _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, .Schriftart)<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br><font color=#00a000>' Pens f&uuml;r die Schattenbildung erstellen</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> .Rand &gt; <font color=#ff6060>0</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mhPen(<font color=#ff6060>1</font>) = <font color=#d000d0>CreatePen</font>(<font color=#ff6060>0</font>, <font color=#ff6060>2</font>, <font color=#a000c0>vbWhite</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Weißen Pen erstellen (2 Pixel)</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iFarbe = <font color=#d000d0>ColorAdjustLuma</font>(iFarbe, <font color=#ff6060>-300</font>, <font color=blue>True</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Farbe f&uuml;r Schatten abdunkeln</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mhPen(<font color=#ff6060>2</font>) = <font color=#d000d0>CreatePen</font>(<font color=#ff6060>0</font>, <font color=#d000d0>iPenB</font>, iFarbe)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Farbigen Pen erstellen (2 Pixel)</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;<font color=blue>End With</font><br><font color=#00a000>' Userform hooken, alle Meldungen f&uuml;r die Userform werden umgeleitet</font><br>&nbsp;&nbsp;mhDlgProc = <font color=#d000d0>SetWindowLongA</font>(hWndUF, <font color=#d000d0>GWL_WNDPROC</font>, <font color=blue>AddressOf</font> WindowProc)<br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Function</font> WindowProc(<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> uMsg <font color=blue>As Long</font>, _</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=#00a000>' CallbackProzedur f&uuml;r Meldungen der Userform</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> hDC <font color=blue>As LongPtr</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> B <font color=blue>As Long</font>, H <font color=blue>As Long</font>, <font color=blue>i As Long</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> R <font color=blue>As RECT</font>, RC <font color=blue>As RECT</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>Select Case</font> uMsg<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>Case</font> <font color=#ff6060>&H85</font>, <font color=#ff6060>&H6</font> <font color=#00a000>&nbsp;' WM_NCPAINT, WM_ACTIVATE</font><br><font color=#00a000>' Titelleiste und Rahmen beabeiten</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>GetClientRect</font> hwnd, RC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Userform-Fl&auml;che holen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hDC = <font color=#d000d0>GetWindowDC</font>(hwnd)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Userform-Fl&auml;che incl. Caption/Rahmen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B = RC.Right: H = RC.Bottom + <font color=#ff6060>48</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetRect</font> R, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>9</font>, H:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>FillRect</font> hDC, R, mhBrush(<font color=#ff6060>2</font>)<font color=#00a000>&nbsp;' linker Rahmen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetRect</font> R, B + <font color=#ff6060>9</font>, <font color=#ff6060>0</font>, B + <font color=#ff6060>18</font>, H:&nbsp;&nbsp;<font color=#d000d0>FillRect</font> hDC, R, mhBrush(<font color=#ff6060>2</font>)<font color=#00a000>&nbsp;' rechter Rahmen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetRect</font> R, <font color=#ff6060>0</font>, H - <font color=#ff6060>10</font>, B + <font color=#ff6060>18</font>, H: <font color=#d000d0>FillRect</font> hDC, R, mhBrush(<font color=#ff6060>2</font>)<font color=#00a000>&nbsp;' unterer Rahmen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetRect</font> R, <font color=#ff6060>9</font>, <font color=#ff6060>0</font>, B + <font color=#ff6060>9</font>, <font color=#ff6060>9</font>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>FillRect</font> hDC, R, mhBrush(<font color=#ff6060>2</font>)<font color=#00a000>&nbsp;' oberer Rahmen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetRect</font> R, <font color=#ff6060>9</font>, <font color=#ff6060>9</font>, B + <font color=#ff6060>9</font>, <font color=#ff6060>38</font>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>FillRect</font> hDC, R, mhBrush(<font color=#ff6060>1</font>)<font color=#00a000>&nbsp;' Captionbereich setzen</font><br><font color=#00a000>'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetRect R, 9, 0, B + 9, 38:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FillRect hDC, R, mhBrush(1) ' Captionbereich setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetBkMode</font> hDC, <font color=#ff6060>1</font><font color=#00a000>&nbsp;' 1 = Transparent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Hintergrundmodus transparent setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> mhFont &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> <font color=#d000d0>SelectObject</font> hDC, mhFont&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Font aktivieren</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>SetTextColor</font> hDC, mtUF.Textfarbe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Schriftfarbe setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>DrawTextA</font> hDC, mtUF.Caption & <font color=#a000c0>vbNullChar</font>, (<font color=#ff6060>-1</font>), R, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#5050f0>IIf</font>(mtUF.TextPosition &gt; <font color=#ff6060>0</font>, <font color=#ff6060>&H25</font>, <font color=#ff6060>&H24</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Jetzt Text erneut ausgeben</font><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> mhPen(<font color=#ff6060>1</font>) &lt;&gt; <font color=#ff6060>0</font> <font color=blue>And</font> mhPen(<font color=#ff6060>2</font>) &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Rand bearbeiten&gt;0</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SelectObject</font> hDC, mhPen(<font color=#ff6060>1</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Weißen Pen aktivieren</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>MoveToEx</font> hDC, <font color=#ff6060>1</font>, H - <font color=#ff6060>1</font>, PT:&nbsp;&nbsp;<font color=#d000d0>LineTo</font> hDC, <font color=#ff6060>1</font>, <font color=#ff6060>1</font>: <font color=#d000d0>LineTo</font> hDC, B + <font color=#ff6060>18</font>, <font color=#ff6060>1</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SelectObject</font> hDC, mhPen(<font color=#ff6060>2</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Farbigen Pen aktivieren</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>MoveToEx</font> hDC, B + <font color=#ff6060>18</font> - <font color=#d000d0>iPenB</font>, <font color=#ff6060>2</font>, PT: <font color=#d000d0>LineTo</font> hDC, B + <font color=#ff6060>18</font> - <font color=#d000d0>iPenB</font>, H - <font color=#d000d0>iPenB</font> - <font color=#ff6060>1</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>LineTo</font> hDC, <font color=#ff6060>2</font>, H - <font color=#d000d0>iPenB</font> - <font color=#ff6060>1</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Else</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SetRect</font> R, <font color=#ff6060>1</font>, <font color=#ff6060>1</font>, RC.Right + <font color=#ff6060>18</font>, RC.Bottom + <font color=#ff6060>47</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Rahmenbereich setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>FrameRect</font> hDC, R, <font color=#d000d0>GetStockObject</font>(<font color=#ff6060>5</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Userform-Umrandung zeichnen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>ReleaseDC</font> hwnd, hDC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Device Context (DC) aufl&ouml;sen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Exit Function</font><br><br>&nbsp;&nbsp;<font color=blue>Case</font> <font color=#ff6060>&H2</font>&nbsp;&nbsp;<font color=#00a000>&nbsp;' WM_DESTROY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Userform beeenden</font><br><font color=#00a000>' Aufr&auml;umen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>For i</font> = <font color=#ff6060>1</font> <font color=blue>To</font> <font color=#ff6060>2</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> mhPen(i) &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> <font color=#d000d0>DeleteObject</font> mhPen(i)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Pens wieder l&ouml;schen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> mhBrush(i) &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> <font color=#d000d0>DeleteObject</font> mhBrush(i)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Pinsel wieder l&ouml;schen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Next i</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> mhFont &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> <font color=#d000d0>DeleteObject</font> mhFont&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Font wieder l&ouml;schen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Call</font> <font color=#d000d0>SetWindowLongA</font>(hwnd, <font color=#d000d0>GWL_WNDPROC</font>, mhDlgProc)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Userform unhooken</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Exit Function</font><br>&nbsp;&nbsp;<font color=blue>End Select</font><br><br><font color=#00a000>' Andere Messages an Urspungsprozedur weiterleiten</font><br>&nbsp;&nbsp;WindowProc = <font color=#d000d0>CallWindowProcA</font>(mhDlgProc, hwnd, uMsg, <font color=blue>ByVal</font> wParam, <font color=blue>ByVal</font> lParam)<br><br><strong><font color=blue>End Function</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Msgbox: Schriftfarbe und Hintergrundfarbe ändern]]></title>
			<link>https://www.clever-excel-forum.de/Thread-Msgbox-Schriftfarbe-und-Hintergrundfarbe-aendern</link>
			<pubDate>Mon, 26 Aug 2024 22:10:03 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.clever-excel-forum.de/member.php?action=profile&uid=18350">volti</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.clever-excel-forum.de/Thread-Msgbox-Schriftfarbe-und-Hintergrundfarbe-aendern</guid>
			<description><![CDATA[Hallo liebe Leserin, lieber Leser,<br /><br />immer wieder liest man in den Foren zu Fragen, ob denn die Hintergrundfarbe oder die Textfarbe einer Messagebox nicht geändert werden könne, dass das nicht möglich sei.<br />Nur einer hat es m.E. bei Mr. Excel mit viel Aufwand geschafft, hier eine entsprechende Lösung zu präsentieren.<br /><br />Und ja, es ist (natürlich) möglich, die Hintergrundfarbe einer MsgBox oder weiterer Dialogboxen individuell zu verändern.<br /><br />Eine Möglichkeit wäre, für die gesamte Klasse die Hintergrundfarbe mittels SetClasslong zu setzen. Aber dann hätten ja alle Dialogboxen diesen Hintergrund. Eher nicht so gut.<br />Das Setzen der Hintergrundfarbe einer Dialogbox oder eines Controls ist mit vertretbarem Aufwand nicht so einfach.<br /><br />Aber, warum zeichnen wir die Dialogbox oder das Control nicht einfach neu.<br />Im hier gezeigten Code machen wir genau das. Leider mit ein paar Einschränkungen, aber für den Hausgebrauch könnte es reichen.<br /><br />Als Font holen wir uns den Originalfont des Static der Messagebox. Natürlich könnte man auch einen eigenen Font kreieren, mit abweichender Schriftart, fett oder unterstrichen usw.<br />Hierzu findest Du hier eine entsprechende Anregung....<br /><a href="https://www.clever-excel-forum.de/Thread-MsgBox-Schriftart-und-groesse-aendern" target="_blank" rel="noopener" class="mycode_url">https://www.clever-excel-forum.de/Thread...se-aendern</a><br /><br />Eine Möglichkeit, die Button individuell zu beschriften, findest Du hier.<br /><a href="https://www.clever-excel-forum.de/Thread-Msgbox-mit-vier-Button-und-eigenem-Icon" target="_blank" rel="noopener" class="mycode_url">https://www.clever-excel-forum.de/Thread...genem-Icon</a><br /><br />Leider sind die Icons, die die Msgbox hier verwendet, keine guten Icons. Die Hintergrundfarbe ist nicht transparent, so dass diese nicht so gut aussehen.<br />Ggf. kann man bei Bedarf auch eigene Icons verwenden.<br /><br />PS: Hier wird eine einfache Hintergrundfarbe verwendet. Als Brush könnte man natürlich auch ein Muster hier verwenden....<br /><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.clever-excel-forum.de/images/attachtypes/image.gif" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=53077" target="_blank" title="27.08.2024, 08:02">Msgbox_Backcolor.png</a> (Größe: 4,35 KB / Downloads: 35)
<!-- end: postbit_attachments_attachment --><br /><br />Und nun viel Spaß beim Ausprobieren...<br /><br /><!--- erstellt am 27.08.2024 00:04:51 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 930px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus000451' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA000451' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Option Explicit</font><br><font color=#00a000>' Timerfunktionen</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> uElapse <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpTimerFunc <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>KillTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=#00a000>' Windowsfunktionen</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetActiveWindow</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; () <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>CallWindowProcA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpPrevWndFunc <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> Msg <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>#If</font> <font color=blue><b>Win64</b></font> <font color=blue>Then</font><br>&nbsp;<font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetWindowLongA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; <font color=blue>Alias</font> &quot;<font color=red>SetWindowLongPtrA</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIndex <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> dwNewLong <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>#Else</font><br>&nbsp;<font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetWindowLongA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> nIndex <font color=blue>As Long</font>, <font color=blue>ByVal</font> dwNewLong <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>#End If</font><br><font color=blue>Private Const</font> <font color=#d000d0>GWL_WNDPROC</font> = <font color=#ff6060>-4</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetClientRect</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpRect <font color=blue>As RECT</font>) <font color=blue>As Long</font><br><font color=#00a000>' GDI-Funktionen</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetTextColor</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hdc <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> crColor <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetBkMode</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hdc <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> nBkMode <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>FillRect</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hdc <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpRect <font color=blue>As RECT</font>, <font color=blue>ByVal</font> hBrush <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>BeginPaint</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpPaint <font color=blue>As PAINTSTRUCT</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>EndPaint</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpPaint <font color=blue>As PAINTSTRUCT</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>CreateSolidBrush</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> crColor <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>DeleteObject</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hObject <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SelectObject</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hdc <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hObject <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetDlgItem</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hDlg <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDDlgItem <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetDC</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>ReleaseDC</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> hdc <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>TextOutA</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hdc <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> x <font color=blue>As Long</font>, <font color=blue>ByVal</font> y <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpString <font color=blue>As String</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> nCount <font color=blue>As Long</font>) <font color=blue>As Long</font><br><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SendMessageA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wMsg <font color=blue>As Long</font>, <font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, lParam <font color=blue>As Any</font>) <font color=blue>As LongPtr</font><br><br><font color=blue>Private Type RECT</font><br>&nbsp;&nbsp; Left&nbsp;&nbsp; <font color=blue>As Long</font><br>&nbsp;&nbsp; Top&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font><br>&nbsp;&nbsp; Right&nbsp;&nbsp;<font color=blue>As Long</font><br>&nbsp;&nbsp; Bottom <font color=blue>As Long</font><br><font color=blue>End Type</font><br><br><font color=blue>Private Type PAINTSTRUCT</font><br>&nbsp;&nbsp; hdc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As LongPtr</font><br>&nbsp;&nbsp; fErase&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Long</font><br>&nbsp;&nbsp; rcPaint&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As RECT</font><br>&nbsp;&nbsp; fRestore&nbsp;&nbsp; <font color=blue>As Long</font><br>&nbsp;&nbsp; fIncUpdate <font color=blue>As Long</font><br>&nbsp;&nbsp; rgbReserved(<font color=#ff6060>0&</font> <font color=blue>To</font> <font color=#ff6060>31&</font>) <font color=blue>As Byte</font><br><font color=blue>End Type</font><br><br><font color=blue>Private Type MSGBOXPARAM</font><br>&nbsp;&nbsp; Textfarbe <font color=blue>As Long</font><br>&nbsp;&nbsp; HGFarbe&nbsp;&nbsp; <font color=blue>As Long</font><br><font color=blue>End Type</font><br><font color=blue>Dim</font> mMP <font color=blue>As MSGBOXPARAM</font><br><br><font color=blue>Dim</font> mhTimer <font color=blue>As LongPtr</font>, mlpOldProc <font color=blue>As LongPtr</font>, msText <font color=blue>As String</font><br><br><strong><font color=blue>Private Function</font> MsgboxEx(sText <font color=blue>As String</font>, _</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Optional ByVal</font> iDlgStyle <font color=blue>As Long</font>, <font color=blue>Optional</font> sCaption <font color=blue>As String</font>) <font color=blue>As Long</font><br>&nbsp;&nbsp;msText = sText<br>&nbsp;&nbsp;mhTimer = <font color=#d000d0>SetTimer</font>(<font color=#ff6060>0&</font>, <font color=#ff6060>0&</font>, <font color=#ff6060>25</font>, <font color=blue>AddressOf</font> MsgBoxHookProc)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Timer setzen</font><br>&nbsp;&nbsp;MsgboxEx = <font color=#5050f0>MsgBox</font>(sText, iDlgStyle, sCaption)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' (Excel)-Msgbox starten</font><br><strong><font color=blue>End Function</font></strong><br><br><strong><font color=blue>Sub</font> MsgBoxHookProc()</strong><br><font color=#00a000>' Setzt die Hooking-Prozedur f&uuml;r die MsgBox</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> hwnd <font color=blue>As LongPtr</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=#d000d0>KillTimer</font> <font color=#ff6060>0&</font>, mhTimer: mhTimer = <font color=#ff6060>0</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Timer l&ouml;schen</font><br>&nbsp;&nbsp;hwnd = <font color=#d000d0>GetActiveWindow</font>()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' (Excel)-Msgbox suchen</font><br>&nbsp;&nbsp;<font color=blue>If</font> hwnd &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> _<br>&nbsp;&nbsp;mlpOldProc = <font color=#d000d0>SetWindowLongA</font>(hwnd, <font color=#d000d0>GWL_WNDPROC</font>, <font color=blue>AddressOf</font> WindowProc)<font color=#00a000>&nbsp;' (Excel)-Msgbox hooken</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Function</font> WindowProc(<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> uMsg <font color=blue>As Long</font>, _</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> tPS <font color=blue>As PAINTSTRUCT</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> tR&nbsp;&nbsp;<font color=blue>As RECT</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> hdc <font color=blue>As LongPtr</font>, hBrush <font color=blue>As LongPtr</font>, hStatic <font color=blue>As LongPtr</font>, hFont <font color=blue>As LongPtr</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> i <font color=blue>As Integer</font>, z <font color=blue>As Integer</font>, sArr() <font color=blue>As String</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;<font color=blue>Select Case</font> uMsg<br>&nbsp;&nbsp;<font color=blue>Case</font> <font color=#ff6060>&HF</font> <font color=#00a000>&nbsp;' &HF = WM_PAINT</font><br>&nbsp;&nbsp;&nbsp;&nbsp; hBrush = <font color=#d000d0>CreateSolidBrush</font>(mMP.HGFarbe)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Einen neuen Brush erstellen</font><br>&nbsp;&nbsp;&nbsp;&nbsp; hStatic = <font color=#d000d0>GetDlgItem</font>(hwnd, <font color=#ff6060>65535</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Handle des Textfeldes</font><br>&nbsp;&nbsp;&nbsp;&nbsp; hFont = <font color=#d000d0>SendMessageA</font>(hStatic, <font color=#ff6060>&H31</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Schriftart des Textfeldes</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>For</font> i = <font color=#ff6060>1</font> <font color=blue>To</font> <font color=#ff6060>2</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>BeginPaint</font> <font color=#5050f0>IIf</font>(i = <font color=#ff6060>1</font>, hwnd, hStatic), tPS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> i = <font color=#ff6060>1</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>FillRect</font> tPS.hdc, tPS.rcPaint, hBrush&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Dlgbox mit Farbe f&uuml;llen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Else</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SetBkMode</font> tPS.hdc, <font color=#ff6060>1</font><font color=#00a000>&nbsp;' 1 = Transparent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' Hintergrundmodus setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SelectObject</font> tPS.hdc, hFont&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Font aktivieren</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SetTextColor</font> tPS.hdc, mMP.Textfarbe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Schriftfarbe setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sArr = <font color=#5050f0>Split</font>(msText, <font color=#a000c0>vbLf</font>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>For</font> z = <font color=#ff6060>0</font> <font color=blue>To</font> <font color=#5050f0>UBound</font>(sArr)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>TextOutA</font> tPS.hdc, <font color=#ff6060>1</font>, z <font color=blue>*</font> <font color=#ff6060>18</font> + <font color=#ff6060>1</font>, sArr(z), <font color=#5050f0>Len</font>(sArr(z))<font color=#00a000>&nbsp;' Text ausgeben</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Next</font> z<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>EndPaint</font> hwnd, tPS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Next</font> i<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>DeleteObject</font> hBrush&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Brush l&ouml;schen</font><br>&nbsp;&nbsp; <font color=blue>End Select</font><br>&nbsp;&nbsp;WindowProc = <font color=#d000d0>CallWindowProcA</font>(mlpOldProc, hwnd, uMsg, wParam, lParam)<br><strong><font color=blue>End Function</font></strong><br><br><strong><font color=blue>Private Sub</font> Aufruftest()</strong><br>&nbsp;&nbsp;<font color=blue>Dim</font> sText <font color=blue>As String</font><br>&nbsp;&nbsp;sText = &quot;<font color=red>Dieses hier ist ein Beispieltext,</font>&quot; & <font color=#a000c0>vbLf</font> & &quot;<font color=red>der auch umgebrochen ist</font>&quot; _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& <font color=#a000c0>vbLf</font> & &quot;<font color=red>und zwar mehrfach!</font>&quot; & <font color=#a000c0>vbLf</font> & &quot;<font color=red>Findest Du das gut?</font>&quot;<br>&nbsp;&nbsp;<font color=blue>With</font> mMP<br>&nbsp;&nbsp;&nbsp;&nbsp;.Textfarbe = <font color=#5050f0>RGB</font>(<font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>60</font>)<br>&nbsp;&nbsp;&nbsp;&nbsp;.HGFarbe = <font color=#5050f0>RGB</font>(<font color=#ff6060>255</font>, <font color=#ff6060>210</font>, <font color=#ff6060>255</font>)<br>&nbsp;&nbsp;<font color=blue>End With</font><br>&nbsp;&nbsp;<font color=blue>MsgBox</font> (MsgboxEx(sText, <font color=#a000c0>vbYesNo</font>, &quot;<font color=red>Mein Hintergundtest</font>&quot;))<br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></description>
			<content:encoded><![CDATA[Hallo liebe Leserin, lieber Leser,<br /><br />immer wieder liest man in den Foren zu Fragen, ob denn die Hintergrundfarbe oder die Textfarbe einer Messagebox nicht geändert werden könne, dass das nicht möglich sei.<br />Nur einer hat es m.E. bei Mr. Excel mit viel Aufwand geschafft, hier eine entsprechende Lösung zu präsentieren.<br /><br />Und ja, es ist (natürlich) möglich, die Hintergrundfarbe einer MsgBox oder weiterer Dialogboxen individuell zu verändern.<br /><br />Eine Möglichkeit wäre, für die gesamte Klasse die Hintergrundfarbe mittels SetClasslong zu setzen. Aber dann hätten ja alle Dialogboxen diesen Hintergrund. Eher nicht so gut.<br />Das Setzen der Hintergrundfarbe einer Dialogbox oder eines Controls ist mit vertretbarem Aufwand nicht so einfach.<br /><br />Aber, warum zeichnen wir die Dialogbox oder das Control nicht einfach neu.<br />Im hier gezeigten Code machen wir genau das. Leider mit ein paar Einschränkungen, aber für den Hausgebrauch könnte es reichen.<br /><br />Als Font holen wir uns den Originalfont des Static der Messagebox. Natürlich könnte man auch einen eigenen Font kreieren, mit abweichender Schriftart, fett oder unterstrichen usw.<br />Hierzu findest Du hier eine entsprechende Anregung....<br /><a href="https://www.clever-excel-forum.de/Thread-MsgBox-Schriftart-und-groesse-aendern" target="_blank" rel="noopener" class="mycode_url">https://www.clever-excel-forum.de/Thread...se-aendern</a><br /><br />Eine Möglichkeit, die Button individuell zu beschriften, findest Du hier.<br /><a href="https://www.clever-excel-forum.de/Thread-Msgbox-mit-vier-Button-und-eigenem-Icon" target="_blank" rel="noopener" class="mycode_url">https://www.clever-excel-forum.de/Thread...genem-Icon</a><br /><br />Leider sind die Icons, die die Msgbox hier verwendet, keine guten Icons. Die Hintergrundfarbe ist nicht transparent, so dass diese nicht so gut aussehen.<br />Ggf. kann man bei Bedarf auch eigene Icons verwenden.<br /><br />PS: Hier wird eine einfache Hintergrundfarbe verwendet. Als Brush könnte man natürlich auch ein Muster hier verwenden....<br /><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.clever-excel-forum.de/images/attachtypes/image.gif" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=53077" target="_blank" title="27.08.2024, 08:02">Msgbox_Backcolor.png</a> (Größe: 4,35 KB / Downloads: 35)
<!-- end: postbit_attachments_attachment --><br /><br />Und nun viel Spaß beim Ausprobieren...<br /><br /><!--- erstellt am 27.08.2024 00:04:51 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 930px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus000451' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA000451' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Option Explicit</font><br><font color=#00a000>' Timerfunktionen</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> uElapse <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpTimerFunc <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>KillTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=#00a000>' Windowsfunktionen</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetActiveWindow</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; () <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>CallWindowProcA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpPrevWndFunc <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> Msg <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>#If</font> <font color=blue><b>Win64</b></font> <font color=blue>Then</font><br>&nbsp;<font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetWindowLongA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; <font color=blue>Alias</font> &quot;<font color=red>SetWindowLongPtrA</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIndex <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> dwNewLong <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>#Else</font><br>&nbsp;<font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetWindowLongA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> nIndex <font color=blue>As Long</font>, <font color=blue>ByVal</font> dwNewLong <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>#End If</font><br><font color=blue>Private Const</font> <font color=#d000d0>GWL_WNDPROC</font> = <font color=#ff6060>-4</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetClientRect</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpRect <font color=blue>As RECT</font>) <font color=blue>As Long</font><br><font color=#00a000>' GDI-Funktionen</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetTextColor</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hdc <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> crColor <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetBkMode</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hdc <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> nBkMode <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>FillRect</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hdc <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpRect <font color=blue>As RECT</font>, <font color=blue>ByVal</font> hBrush <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>BeginPaint</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpPaint <font color=blue>As PAINTSTRUCT</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>EndPaint</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpPaint <font color=blue>As PAINTSTRUCT</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>CreateSolidBrush</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> crColor <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>DeleteObject</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hObject <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SelectObject</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hdc <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hObject <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetDlgItem</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hDlg <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDDlgItem <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetDC</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>ReleaseDC</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> hdc <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>TextOutA</font> <font color=blue>Lib</font> &quot;<font color=red>gdi32</font>&quot; (<font color=blue>ByVal</font> hdc <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> x <font color=blue>As Long</font>, <font color=blue>ByVal</font> y <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpString <font color=blue>As String</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> nCount <font color=blue>As Long</font>) <font color=blue>As Long</font><br><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SendMessageA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; (<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wMsg <font color=blue>As Long</font>, <font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, lParam <font color=blue>As Any</font>) <font color=blue>As LongPtr</font><br><br><font color=blue>Private Type RECT</font><br>&nbsp;&nbsp; Left&nbsp;&nbsp; <font color=blue>As Long</font><br>&nbsp;&nbsp; Top&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font><br>&nbsp;&nbsp; Right&nbsp;&nbsp;<font color=blue>As Long</font><br>&nbsp;&nbsp; Bottom <font color=blue>As Long</font><br><font color=blue>End Type</font><br><br><font color=blue>Private Type PAINTSTRUCT</font><br>&nbsp;&nbsp; hdc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As LongPtr</font><br>&nbsp;&nbsp; fErase&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Long</font><br>&nbsp;&nbsp; rcPaint&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As RECT</font><br>&nbsp;&nbsp; fRestore&nbsp;&nbsp; <font color=blue>As Long</font><br>&nbsp;&nbsp; fIncUpdate <font color=blue>As Long</font><br>&nbsp;&nbsp; rgbReserved(<font color=#ff6060>0&</font> <font color=blue>To</font> <font color=#ff6060>31&</font>) <font color=blue>As Byte</font><br><font color=blue>End Type</font><br><br><font color=blue>Private Type MSGBOXPARAM</font><br>&nbsp;&nbsp; Textfarbe <font color=blue>As Long</font><br>&nbsp;&nbsp; HGFarbe&nbsp;&nbsp; <font color=blue>As Long</font><br><font color=blue>End Type</font><br><font color=blue>Dim</font> mMP <font color=blue>As MSGBOXPARAM</font><br><br><font color=blue>Dim</font> mhTimer <font color=blue>As LongPtr</font>, mlpOldProc <font color=blue>As LongPtr</font>, msText <font color=blue>As String</font><br><br><strong><font color=blue>Private Function</font> MsgboxEx(sText <font color=blue>As String</font>, _</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Optional ByVal</font> iDlgStyle <font color=blue>As Long</font>, <font color=blue>Optional</font> sCaption <font color=blue>As String</font>) <font color=blue>As Long</font><br>&nbsp;&nbsp;msText = sText<br>&nbsp;&nbsp;mhTimer = <font color=#d000d0>SetTimer</font>(<font color=#ff6060>0&</font>, <font color=#ff6060>0&</font>, <font color=#ff6060>25</font>, <font color=blue>AddressOf</font> MsgBoxHookProc)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Timer setzen</font><br>&nbsp;&nbsp;MsgboxEx = <font color=#5050f0>MsgBox</font>(sText, iDlgStyle, sCaption)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' (Excel)-Msgbox starten</font><br><strong><font color=blue>End Function</font></strong><br><br><strong><font color=blue>Sub</font> MsgBoxHookProc()</strong><br><font color=#00a000>' Setzt die Hooking-Prozedur f&uuml;r die MsgBox</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> hwnd <font color=blue>As LongPtr</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=#d000d0>KillTimer</font> <font color=#ff6060>0&</font>, mhTimer: mhTimer = <font color=#ff6060>0</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Timer l&ouml;schen</font><br>&nbsp;&nbsp;hwnd = <font color=#d000d0>GetActiveWindow</font>()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' (Excel)-Msgbox suchen</font><br>&nbsp;&nbsp;<font color=blue>If</font> hwnd &lt;&gt; <font color=#ff6060>0</font> <font color=blue>Then</font> _<br>&nbsp;&nbsp;mlpOldProc = <font color=#d000d0>SetWindowLongA</font>(hwnd, <font color=#d000d0>GWL_WNDPROC</font>, <font color=blue>AddressOf</font> WindowProc)<font color=#00a000>&nbsp;' (Excel)-Msgbox hooken</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Function</font> WindowProc(<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> uMsg <font color=blue>As Long</font>, _</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> tPS <font color=blue>As PAINTSTRUCT</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> tR&nbsp;&nbsp;<font color=blue>As RECT</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> hdc <font color=blue>As LongPtr</font>, hBrush <font color=blue>As LongPtr</font>, hStatic <font color=blue>As LongPtr</font>, hFont <font color=blue>As LongPtr</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> i <font color=blue>As Integer</font>, z <font color=blue>As Integer</font>, sArr() <font color=blue>As String</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;<font color=blue>Select Case</font> uMsg<br>&nbsp;&nbsp;<font color=blue>Case</font> <font color=#ff6060>&HF</font> <font color=#00a000>&nbsp;' &HF = WM_PAINT</font><br>&nbsp;&nbsp;&nbsp;&nbsp; hBrush = <font color=#d000d0>CreateSolidBrush</font>(mMP.HGFarbe)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Einen neuen Brush erstellen</font><br>&nbsp;&nbsp;&nbsp;&nbsp; hStatic = <font color=#d000d0>GetDlgItem</font>(hwnd, <font color=#ff6060>65535</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Handle des Textfeldes</font><br>&nbsp;&nbsp;&nbsp;&nbsp; hFont = <font color=#d000d0>SendMessageA</font>(hStatic, <font color=#ff6060>&H31</font>, <font color=#ff6060>0</font>, <font color=#ff6060>0</font>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Schriftart des Textfeldes</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>For</font> i = <font color=#ff6060>1</font> <font color=blue>To</font> <font color=#ff6060>2</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>BeginPaint</font> <font color=#5050f0>IIf</font>(i = <font color=#ff6060>1</font>, hwnd, hStatic), tPS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> i = <font color=#ff6060>1</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>FillRect</font> tPS.hdc, tPS.rcPaint, hBrush&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Dlgbox mit Farbe f&uuml;llen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Else</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SetBkMode</font> tPS.hdc, <font color=#ff6060>1</font><font color=#00a000>&nbsp;' 1 = Transparent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' Hintergrundmodus setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SelectObject</font> tPS.hdc, hFont&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Font aktivieren</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SetTextColor</font> tPS.hdc, mMP.Textfarbe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Schriftfarbe setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sArr = <font color=#5050f0>Split</font>(msText, <font color=#a000c0>vbLf</font>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>For</font> z = <font color=#ff6060>0</font> <font color=blue>To</font> <font color=#5050f0>UBound</font>(sArr)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>TextOutA</font> tPS.hdc, <font color=#ff6060>1</font>, z <font color=blue>*</font> <font color=#ff6060>18</font> + <font color=#ff6060>1</font>, sArr(z), <font color=#5050f0>Len</font>(sArr(z))<font color=#00a000>&nbsp;' Text ausgeben</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Next</font> z<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#d000d0>EndPaint</font> hwnd, tPS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>Next</font> i<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>DeleteObject</font> hBrush&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Brush l&ouml;schen</font><br>&nbsp;&nbsp; <font color=blue>End Select</font><br>&nbsp;&nbsp;WindowProc = <font color=#d000d0>CallWindowProcA</font>(mlpOldProc, hwnd, uMsg, wParam, lParam)<br><strong><font color=blue>End Function</font></strong><br><br><strong><font color=blue>Private Sub</font> Aufruftest()</strong><br>&nbsp;&nbsp;<font color=blue>Dim</font> sText <font color=blue>As String</font><br>&nbsp;&nbsp;sText = &quot;<font color=red>Dieses hier ist ein Beispieltext,</font>&quot; & <font color=#a000c0>vbLf</font> & &quot;<font color=red>der auch umgebrochen ist</font>&quot; _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& <font color=#a000c0>vbLf</font> & &quot;<font color=red>und zwar mehrfach!</font>&quot; & <font color=#a000c0>vbLf</font> & &quot;<font color=red>Findest Du das gut?</font>&quot;<br>&nbsp;&nbsp;<font color=blue>With</font> mMP<br>&nbsp;&nbsp;&nbsp;&nbsp;.Textfarbe = <font color=#5050f0>RGB</font>(<font color=#ff6060>0</font>, <font color=#ff6060>0</font>, <font color=#ff6060>60</font>)<br>&nbsp;&nbsp;&nbsp;&nbsp;.HGFarbe = <font color=#5050f0>RGB</font>(<font color=#ff6060>255</font>, <font color=#ff6060>210</font>, <font color=#ff6060>255</font>)<br>&nbsp;&nbsp;<font color=blue>End With</font><br>&nbsp;&nbsp;<font color=blue>MsgBox</font> (MsgboxEx(sText, <font color=#a000c0>vbYesNo</font>, &quot;<font color=red>Mein Hintergundtest</font>&quot;))<br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Excel schließen nach Timeout mit Countdown]]></title>
			<link>https://www.clever-excel-forum.de/Thread-Excel-schliessen-nach-Timeout-mit-Countdown</link>
			<pubDate>Thu, 22 Aug 2024 15:00:04 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.clever-excel-forum.de/member.php?action=profile&uid=18350">volti</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.clever-excel-forum.de/Thread-Excel-schliessen-nach-Timeout-mit-Countdown</guid>
			<description><![CDATA[Liebe Leserin, liebe Leser,<br /><br />manchmal möchte man Excel nach einer bestimmten Zeit automatisch schließen. Hierbei wäre es schön, wenn der User auch darüber informiert würde und ggf. auch noch die Möglichkeit hätte, den Schließenprozess abzuwenden.<br /><br />Hier mal eine Idee zur Aufgabenstellung...<br /><br />Es wird nach Ablauf einer bestimmten Zeit eine Msgbox angezeigt, in der ein Countdown abläuft. Während des Countdowns hat der User Zeit, die Msgbox zu schließen und Excel weiter aktiv zu lassen.<br />Ansonsten wird Excel bzw. die aktuelle Mappe automatisch beendet.<br /><br /><!--- erstellt am 22.08.2024 16:48:53 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 870px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus164853' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA164853' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Option Explicit</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetActiveWindow</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; () <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>KillTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> uElapse <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpTimerFunc <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>MessageBoxA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lpText <font color=blue>As String</font>, <font color=blue>ByVal</font> lpCaption <font color=blue>As String</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wType <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetDlgItemTextA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hDlg <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDDlgItem <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpString <font color=blue>As String</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetDlgItemTextA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hDlg <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDDlgItem <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpString <font color=blue>As String</font>, <font color=blue>ByVal</font> nMaxCount <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>PostMessageA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> wMsg <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><font color=blue>Private</font> mhTimer <font color=blue>As LongPtr</font>, miRestzeit <font color=blue>As Long</font><br><font color=blue>Private Const</font> <font color=#d000d0>miTimeOut</font> <font color=blue>As Long</font> = <font color=#ff6060>10</font>&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' in Sekunden</font><br><br><strong><font color=blue>Private Sub</font> CloseExcelNow()</strong><br><font color=#00a000>' Anzeigen einer MsgBox mit CountDown</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;mhTimer = <font color=#d000d0>SetTimer</font>(<font color=#ff6060>0&</font>, <font color=#ff6060>0&</font>, <font color=#ff6060>1000</font>, <font color=blue>AddressOf</font> SetMsgText)&nbsp;&nbsp; <font color=#00a000>&nbsp;' Timer setzen</font><br>&nbsp;&nbsp;<font color=#d000d0>MessageBoxA</font> Application.hwnd, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;<font color=red>Das Programm schließt automatisch in </font>&quot; & <font color=#d000d0>miTimeOut</font> & &quot;<font color=red> Sekunden!</font>&quot;, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;<font color=red>Schließen: </font>&quot; & ThisWorkbook.Name, <font color=#a000c0>vbExclamation</font> <font color=blue>Or</font> <font color=#a000c0>vbModeless</font><br>&nbsp;&nbsp;<font color=#d000d0>KillTimer</font> <font color=#ff6060>0&</font>, mhTimer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Timer l&ouml;schen</font><br><br>&nbsp;&nbsp;<font color=blue>If</font> miRestzeit &gt; <font color=#ff6060>1</font> <font color=blue>Then Exit Sub</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' User hat Button geklickt</font><br><font color=#00a000>' Jetzt Excel bzw. Mappe schließen</font><br>&nbsp;&nbsp;<font color=blue>If</font> Workbooks.Count = <font color=#ff6060>1</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> ThisWorkbook.Saved = <font color=blue>False Then</font> ThisWorkbook.Save&nbsp;&nbsp;<font color=#00a000>&nbsp;' Mappe ggf. speichern</font><br>&nbsp;&nbsp;&nbsp;&nbsp; Application.Quit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Excel beenden</font><br>&nbsp;&nbsp;<font color=blue>Else</font><br>&nbsp;&nbsp;&nbsp;&nbsp; ThisWorkbook.Close <font color=blue>True</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Nur Mappe schließen</font><br>&nbsp;&nbsp;<font color=blue>End If</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Sub</font> SetMsgText()</strong><br>&nbsp;&nbsp;<font color=blue>Dim</font> i <font color=blue>As Integer</font>, sArr() <font color=blue>As String</font>, hDlg <font color=blue>As LongPtr</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> sText <font color=blue>As String *</font> <font color=#ff6060>255</font><br><br>&nbsp;&nbsp;hDlg = <font color=#d000d0>GetActiveWindow</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Handle der Dialogbox</font><br>&nbsp;&nbsp;<font color=#d000d0>SetDlgItemTextA</font> hDlg, <font color=#ff6060>2</font>, &quot;<font color=red>Stopp Prozess</font>&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Buttontext setzen</font><br>&nbsp;&nbsp;<font color=#d000d0>GetDlgItemTextA</font> hDlg, <font color=#ff6060>65535</font>, sText, <font color=#ff6060>255</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Messagetext holen</font><br>&nbsp;&nbsp;sArr = <font color=#5050f0>Split</font>(<font color=blue>Left&#36;</font>(sText, <font color=#5050f0>InStr</font>(sText, <font color=#a000c0>vbNullChar</font>) - <font color=#ff6060>1</font>)) <font color=#00a000>&nbsp;' Messagetext splitten</font><br>&nbsp;&nbsp;<font color=blue>For</font> i = <font color=#ff6060>0</font> <font color=blue>To</font> <font color=#5050f0>UBound</font>(sArr)<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> <font color=#5050f0>Val</font>(sArr(i)) &gt; <font color=#ff6060>0</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sArr(i) = sArr(i) - <font color=#ff6060>1</font>: miRestzeit = <font color=#5050f0>Val</font>(sArr(i))&nbsp;&nbsp; <font color=#00a000>&nbsp;' Restzeit anpassen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>DoEvents</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> sArr(i) &lt; <font color=#ff6060>1</font> <font color=blue>Then</font> <font color=#d000d0>PostMessageA</font> hDlg, <font color=#ff6060>&H10</font>, <font color=#ff6060>0&</font>, <font color=#ff6060>0&</font><font color=#00a000>&nbsp;' &H10 = WM_CLOSE</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SetDlgItemTextA</font> hDlg, <font color=#ff6060>65535</font>, <font color=blue>ByVal</font> <font color=#5050f0>Join&#36;</font>(sArr)&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Messagetext neu setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp; <font color=blue>Next</font> i<br><br><strong><font color=blue>End Sub</font></strong><br><br><br><strong><font color=blue>Public Sub</font> CloseExcel()</strong><br><font color=#00a000>' Starte den Schließenprozess, Wartezeit 5 Minuten</font><br>&nbsp;&nbsp;Application.OnTime <font color=blue>Now</font> + <font color=#5050f0>TimeSerial</font>(<font color=#ff6060>0</font>, <font color=#ff6060>5</font>, <font color=#ff6060>0</font>), &quot;<font color=red>CloseExcelNow</font>&quot;<br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></description>
			<content:encoded><![CDATA[Liebe Leserin, liebe Leser,<br /><br />manchmal möchte man Excel nach einer bestimmten Zeit automatisch schließen. Hierbei wäre es schön, wenn der User auch darüber informiert würde und ggf. auch noch die Möglichkeit hätte, den Schließenprozess abzuwenden.<br /><br />Hier mal eine Idee zur Aufgabenstellung...<br /><br />Es wird nach Ablauf einer bestimmten Zeit eine Msgbox angezeigt, in der ein Countdown abläuft. Während des Countdowns hat der User Zeit, die Msgbox zu schließen und Excel weiter aktiv zu lassen.<br />Ansonsten wird Excel bzw. die aktuelle Mappe automatisch beendet.<br /><br /><!--- erstellt am 22.08.2024 16:48:53 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 870px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus164853' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA164853' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Option Explicit</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetActiveWindow</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; () <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>KillTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetTimer</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDEvent <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> uElapse <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpTimerFunc <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>MessageBoxA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lpText <font color=blue>As String</font>, <font color=blue>ByVal</font> lpCaption <font color=blue>As String</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wType <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetDlgItemTextA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hDlg <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDDlgItem <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpString <font color=blue>As String</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>GetDlgItemTextA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hDlg <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nIDDlgItem <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> lpString <font color=blue>As String</font>, <font color=blue>ByVal</font> nMaxCount <font color=blue>As Long</font>) <font color=blue>As Long</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>PostMessageA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hwnd <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> wMsg <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> lParam <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><font color=blue>Private</font> mhTimer <font color=blue>As LongPtr</font>, miRestzeit <font color=blue>As Long</font><br><font color=blue>Private Const</font> <font color=#d000d0>miTimeOut</font> <font color=blue>As Long</font> = <font color=#ff6060>10</font>&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' in Sekunden</font><br><br><strong><font color=blue>Private Sub</font> CloseExcelNow()</strong><br><font color=#00a000>' Anzeigen einer MsgBox mit CountDown</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;mhTimer = <font color=#d000d0>SetTimer</font>(<font color=#ff6060>0&</font>, <font color=#ff6060>0&</font>, <font color=#ff6060>1000</font>, <font color=blue>AddressOf</font> SetMsgText)&nbsp;&nbsp; <font color=#00a000>&nbsp;' Timer setzen</font><br>&nbsp;&nbsp;<font color=#d000d0>MessageBoxA</font> Application.hwnd, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;<font color=red>Das Programm schließt automatisch in </font>&quot; & <font color=#d000d0>miTimeOut</font> & &quot;<font color=red> Sekunden!</font>&quot;, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;<font color=red>Schließen: </font>&quot; & ThisWorkbook.Name, <font color=#a000c0>vbExclamation</font> <font color=blue>Or</font> <font color=#a000c0>vbModeless</font><br>&nbsp;&nbsp;<font color=#d000d0>KillTimer</font> <font color=#ff6060>0&</font>, mhTimer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Timer l&ouml;schen</font><br><br>&nbsp;&nbsp;<font color=blue>If</font> miRestzeit &gt; <font color=#ff6060>1</font> <font color=blue>Then Exit Sub</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' User hat Button geklickt</font><br><font color=#00a000>' Jetzt Excel bzw. Mappe schließen</font><br>&nbsp;&nbsp;<font color=blue>If</font> Workbooks.Count = <font color=#ff6060>1</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> ThisWorkbook.Saved = <font color=blue>False Then</font> ThisWorkbook.Save&nbsp;&nbsp;<font color=#00a000>&nbsp;' Mappe ggf. speichern</font><br>&nbsp;&nbsp;&nbsp;&nbsp; Application.Quit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Excel beenden</font><br>&nbsp;&nbsp;<font color=blue>Else</font><br>&nbsp;&nbsp;&nbsp;&nbsp; ThisWorkbook.Close <font color=blue>True</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Nur Mappe schließen</font><br>&nbsp;&nbsp;<font color=blue>End If</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Sub</font> SetMsgText()</strong><br>&nbsp;&nbsp;<font color=blue>Dim</font> i <font color=blue>As Integer</font>, sArr() <font color=blue>As String</font>, hDlg <font color=blue>As LongPtr</font><br>&nbsp;&nbsp;<font color=blue>Dim</font> sText <font color=blue>As String *</font> <font color=#ff6060>255</font><br><br>&nbsp;&nbsp;hDlg = <font color=#d000d0>GetActiveWindow</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Handle der Dialogbox</font><br>&nbsp;&nbsp;<font color=#d000d0>SetDlgItemTextA</font> hDlg, <font color=#ff6060>2</font>, &quot;<font color=red>Stopp Prozess</font>&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Buttontext setzen</font><br>&nbsp;&nbsp;<font color=#d000d0>GetDlgItemTextA</font> hDlg, <font color=#ff6060>65535</font>, sText, <font color=#ff6060>255</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' Messagetext holen</font><br>&nbsp;&nbsp;sArr = <font color=#5050f0>Split</font>(<font color=blue>Left&#36;</font>(sText, <font color=#5050f0>InStr</font>(sText, <font color=#a000c0>vbNullChar</font>) - <font color=#ff6060>1</font>)) <font color=#00a000>&nbsp;' Messagetext splitten</font><br>&nbsp;&nbsp;<font color=blue>For</font> i = <font color=#ff6060>0</font> <font color=blue>To</font> <font color=#5050f0>UBound</font>(sArr)<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>If</font> <font color=#5050f0>Val</font>(sArr(i)) &gt; <font color=#ff6060>0</font> <font color=blue>Then</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sArr(i) = sArr(i) - <font color=#ff6060>1</font>: miRestzeit = <font color=#5050f0>Val</font>(sArr(i))&nbsp;&nbsp; <font color=#00a000>&nbsp;' Restzeit anpassen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>DoEvents</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>If</font> sArr(i) &lt; <font color=#ff6060>1</font> <font color=blue>Then</font> <font color=#d000d0>PostMessageA</font> hDlg, <font color=#ff6060>&H10</font>, <font color=#ff6060>0&</font>, <font color=#ff6060>0&</font><font color=#00a000>&nbsp;' &H10 = WM_CLOSE</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#d000d0>SetDlgItemTextA</font> hDlg, <font color=#ff6060>65535</font>, <font color=blue>ByVal</font> <font color=#5050f0>Join&#36;</font>(sArr)&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Messagetext neu setzen</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End If</font><br>&nbsp;&nbsp; <font color=blue>Next</font> i<br><br><strong><font color=blue>End Sub</font></strong><br><br><br><strong><font color=blue>Public Sub</font> CloseExcel()</strong><br><font color=#00a000>' Starte den Schließenprozess, Wartezeit 5 Minuten</font><br>&nbsp;&nbsp;Application.OnTime <font color=blue>Now</font> + <font color=#5050f0>TimeSerial</font>(<font color=#ff6060>0</font>, <font color=#ff6060>5</font>, <font color=#ff6060>0</font>), &quot;<font color=red>CloseExcelNow</font>&quot;<br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Datei in den Papierkorb verschieben]]></title>
			<link>https://www.clever-excel-forum.de/Thread-Datei-in-den-Papierkorb-verschieben</link>
			<pubDate>Tue, 20 Aug 2024 17:44:39 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.clever-excel-forum.de/member.php?action=profile&uid=18350">volti</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.clever-excel-forum.de/Thread-Datei-in-den-Papierkorb-verschieben</guid>
			<description><![CDATA[Hallo,<br /><br />der VBA-Befehl <span style="font-weight: bold;" class="mycode_b">Kill </span>löscht ja eine Datei unwiderruflich.<br /><br />Wer Dateien lediglich in den Papierkorb schicken möchte, um sie später vielleicht doch wieder dort raus zu kramen, kann folgenden Code dafür nutzen.<br /><br /><!--- erstellt am 20.08.2024 19:43:35 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 830px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus194335' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA194335' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SHFileOperationA</font> <font color=blue>Lib</font> &quot;<font color=red>Shell32.dll</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpFileOp <font color=blue>As SHFILEOPSTRUCT</font>) <font color=blue>As Long</font><br><br><font color=blue>Private Type SHFILEOPSTRUCT</font><br>&nbsp;&nbsp; hwnd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As LongPtr</font><br>&nbsp;&nbsp; wFunc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Long</font><br>&nbsp;&nbsp; pFrom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As String</font><br>&nbsp;&nbsp; pTo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As String</font><br>&nbsp;&nbsp; fFlags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Integer</font><br>&nbsp;&nbsp; fAnyOperationsAborted <font color=blue>As Long</font><br>&nbsp;&nbsp; hNameMappings&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As LongPtr</font><br>&nbsp;&nbsp; lpszProgressTitle&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As String</font><br><font color=blue>End Type</font><br><br><strong><font color=blue>Private Sub</font> VerschiebeDateiIndenPapierkorb(sDateiname <font color=blue>As String</font>)</strong><br>&nbsp;&nbsp;<font color=blue>Dim</font> tStruct <font color=blue>As SHFILEOPSTRUCT</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>FOF_ALLOWUNDO</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Long</font> = <font color=#ff6060>&H40</font> <font color=#00a000>&nbsp;' Datei wird in den Papierkorb verschoben</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>FOF_FILESONLY</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Long</font> = <font color=#ff6060>&H80</font> <font color=#00a000>&nbsp;' L&ouml;scht nur Dateien, keine Verzeichnisse</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>FOF_NOCONFIRMATION</font>&nbsp;&nbsp;<font color=blue>As Long</font> = <font color=#ff6060>&H10</font> <font color=#00a000>&nbsp;' L&ouml;scht ohne R&uuml;ckfrage</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>FOF_SILENT</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font> = <font color=#ff6060>&H4</font>&nbsp;&nbsp;<font color=#00a000>&nbsp;' Zeigt keinen Fortschrittsbalken an.</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;tStruct.wFunc = <font color=#ff6060>&H3</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' &H3& = FO_DELETE</font><br>&nbsp;&nbsp;tStruct.pFrom = sDateiname<br>&nbsp;&nbsp;tStruct.fFlags = <font color=#d000d0>FOF_ALLOWUNDO</font> <font color=blue>Or</font> <font color=#d000d0>FOF_SILENT</font> <font color=blue>Or</font> <font color=#d000d0>FOF_NOCONFIRMATION</font><br>&nbsp;&nbsp;<font color=#d000d0>SHFileOperationA</font> tStruct&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Jetzt l&ouml;schen</font><br><strong><font color=blue>End Sub</font></strong><br><br><font color=#00a000>' ##### Test ####</font><br><strong><font color=blue>Sub</font> Test()</strong><br>&nbsp;&nbsp;VerschiebeDateiIndenPapierkorb &quot;<font color=red>D:&bsol;Freigericht.png</font>&quot;<br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></description>
			<content:encoded><![CDATA[Hallo,<br /><br />der VBA-Befehl <span style="font-weight: bold;" class="mycode_b">Kill </span>löscht ja eine Datei unwiderruflich.<br /><br />Wer Dateien lediglich in den Papierkorb schicken möchte, um sie später vielleicht doch wieder dort raus zu kramen, kann folgenden Code dafür nutzen.<br /><br /><!--- erstellt am 20.08.2024 19:43:35 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 830px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus194335' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA194335' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SHFileOperationA</font> <font color=blue>Lib</font> &quot;<font color=red>Shell32.dll</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpFileOp <font color=blue>As SHFILEOPSTRUCT</font>) <font color=blue>As Long</font><br><br><font color=blue>Private Type SHFILEOPSTRUCT</font><br>&nbsp;&nbsp; hwnd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As LongPtr</font><br>&nbsp;&nbsp; wFunc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Long</font><br>&nbsp;&nbsp; pFrom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As String</font><br>&nbsp;&nbsp; pTo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As String</font><br>&nbsp;&nbsp; fFlags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Integer</font><br>&nbsp;&nbsp; fAnyOperationsAborted <font color=blue>As Long</font><br>&nbsp;&nbsp; hNameMappings&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As LongPtr</font><br>&nbsp;&nbsp; lpszProgressTitle&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As String</font><br><font color=blue>End Type</font><br><br><strong><font color=blue>Private Sub</font> VerschiebeDateiIndenPapierkorb(sDateiname <font color=blue>As String</font>)</strong><br>&nbsp;&nbsp;<font color=blue>Dim</font> tStruct <font color=blue>As SHFILEOPSTRUCT</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>FOF_ALLOWUNDO</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Long</font> = <font color=#ff6060>&H40</font> <font color=#00a000>&nbsp;' Datei wird in den Papierkorb verschoben</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>FOF_FILESONLY</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>As Long</font> = <font color=#ff6060>&H80</font> <font color=#00a000>&nbsp;' L&ouml;scht nur Dateien, keine Verzeichnisse</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>FOF_NOCONFIRMATION</font>&nbsp;&nbsp;<font color=blue>As Long</font> = <font color=#ff6060>&H10</font> <font color=#00a000>&nbsp;' L&ouml;scht ohne R&uuml;ckfrage</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>FOF_SILENT</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>As Long</font> = <font color=#ff6060>&H4</font>&nbsp;&nbsp;<font color=#00a000>&nbsp;' Zeigt keinen Fortschrittsbalken an.</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;tStruct.wFunc = <font color=#ff6060>&H3</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#00a000>&nbsp;' &H3& = FO_DELETE</font><br>&nbsp;&nbsp;tStruct.pFrom = sDateiname<br>&nbsp;&nbsp;tStruct.fFlags = <font color=#d000d0>FOF_ALLOWUNDO</font> <font color=blue>Or</font> <font color=#d000d0>FOF_SILENT</font> <font color=blue>Or</font> <font color=#d000d0>FOF_NOCONFIRMATION</font><br>&nbsp;&nbsp;<font color=#d000d0>SHFileOperationA</font> tStruct&nbsp;&nbsp;&nbsp;&nbsp; <font color=#00a000>&nbsp;' Jetzt l&ouml;schen</font><br><strong><font color=blue>End Sub</font></strong><br><br><font color=#00a000>' ##### Test ####</font><br><strong><font color=blue>Sub</font> Test()</strong><br>&nbsp;&nbsp;VerschiebeDateiIndenPapierkorb &quot;<font color=red>D:&bsol;Freigericht.png</font>&quot;<br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Scrollen mit dem Mausrad und Mittelbuttonklick abschalten]]></title>
			<link>https://www.clever-excel-forum.de/Thread-Scrollen-mit-dem-Mausrad-und-Mittelbuttonklick-abschalten</link>
			<pubDate>Sun, 18 Aug 2024 08:21:33 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://www.clever-excel-forum.de/member.php?action=profile&uid=18350">volti</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.clever-excel-forum.de/Thread-Scrollen-mit-dem-Mausrad-und-Mittelbuttonklick-abschalten</guid>
			<description><![CDATA[Hallo,<br /><br />in bestimmten Fällen möchte man das Mousewheeling, also das Scrollen mit der Maus unterbinden oder das Klicken mit dem Mittelbutton abschalten.<br /><br />Anliegend mal ein Beispiel, wie das erreicht werden kann.<br /><br />PS: Das gilt bei Bedarf natürlich auch analog für die übrigen Mausfunktionen.<br /><br /><!--- erstellt am 18.08.2024 10:20:13 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 740px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus102013' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA102013' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetWindowsHookExA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> idHook <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpfn <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hmod <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> dwThreadId <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>CallNextHookEx</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hHook <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nCode <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, lParam <font color=blue>As Any</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>UnhookWindowsHookEx</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hHook <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Dim</font> hHook <font color=blue>As LongPtr</font><br><br><strong><font color=blue>Sub</font> MausRadAn()</strong><br>&nbsp;&nbsp;<font color=#d000d0>UnhookWindowsHookEx</font> hHook: hHook = <font color=#ff6060>0</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Sub</font> MausRadAus()</strong><br><font color=#00a000>' Baut den Mousehook auf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14 = WH_MOUSE_LL</font><br>&nbsp;&nbsp;<font color=blue>If</font> hHook = <font color=#ff6060>0</font> <font color=blue>Then</font> hHook = <font color=#d000d0>SetWindowsHookExA</font>(<font color=#ff6060>14</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>AddressOf</font> MouseProc, Application.HinstancePtr, <font color=#ff6060>0</font>)<br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Function</font> MouseProc(<font color=blue>ByVal</font> nCode <font color=blue>As Long</font>, <font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, _</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=#00a000>' F&auml;ngt Mausrad und MittelButton ab</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>WM_MOUSEWHEEL</font>&nbsp;&nbsp;<font color=blue>As Long</font> = <font color=#ff6060>&H20A</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>WM_MBUTTONDOWN</font> <font color=blue>As Long</font> = <font color=#ff6060>&H207</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>WM_MBUTTONUP</font>&nbsp;&nbsp; <font color=blue>As Long</font> = <font color=#ff6060>&H208</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>If</font> nCode = <font color=#ff6060>0</font> <font color=blue>Then</font><font color=#00a000>&nbsp;' 0 = HC_ACTION</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Select Case</font> wParam<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Case</font> <font color=#d000d0>WM_MOUSEWHEEL</font>, <font color=#d000d0>WM_MBUTTONDOWN</font>, <font color=#d000d0>WM_MBUTTONUP</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MouseProc = <font color=#ff6060>1</font>: <font color=blue>Exit Function</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End Select</font><br>&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;MouseProc = <font color=#d000d0>CallNextHookEx</font>(<font color=#ff6060>0</font>, nCode, wParam, <font color=blue>ByVal</font> lParam)<br><strong><font color=blue>End Function</font></strong><br><br><br><font color=#00a000>'########### In das gew&uuml;nschte Tabellenmodul #############</font><br><strong><font color=blue>Private Sub</font> Worksheet_Activate()</strong><br>&nbsp;&nbsp;<font color=blue>Call</font> MausRadAus<br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Sub</font> Worksheet_Deactivate()</strong><br>&nbsp;&nbsp;<font color=blue>Call</font> MausRadAn<br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></description>
			<content:encoded><![CDATA[Hallo,<br /><br />in bestimmten Fällen möchte man das Mousewheeling, also das Scrollen mit der Maus unterbinden oder das Klicken mit dem Mittelbutton abschalten.<br /><br />Anliegend mal ein Beispiel, wie das erreicht werden kann.<br /><br />PS: Das gilt bei Bedarf natürlich auch analog für die übrigen Mausfunktionen.<br /><br /><!--- erstellt am 18.08.2024 10:20:13 (CEF-Forum) von volti's VBA2HTML ---><div class="codeblock"><div class="title">Code:</div><div style='position: relative; width: 740px; font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; border-width: 2px; border-style: groove; border-color: #ff9966; padding-left: 5px; margin-left: 2px;'><div style='line-height: 5px;'><br></div><div id='PlusMinus102013' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee; height: 400px; width: 99.6%; overflow: auto;&nbsp;&nbsp;position: relative; top:-10px;'><!--- VBA-Code ---><div id='VBA102013' style='font-family: Courier New, Arial; font-size: 10pt; color: #800000; line-height: 16px; font-weight: normal; background-color: #ffffee;'><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>SetWindowsHookExA</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> idHook <font color=blue>As Long</font>, <font color=blue>ByVal</font> lpfn <font color=blue>As LongPtr</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hmod <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> dwThreadId <font color=blue>As Long</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>CallNextHookEx</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hHook <font color=blue>As LongPtr</font>, <font color=blue>ByVal</font> nCode <font color=blue>As Long</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, lParam <font color=blue>As Any</font>) <font color=blue>As LongPtr</font><br><font color=blue>Private Declare PtrSafe Function</font> <font color=#d000d0>UnhookWindowsHookEx</font> <font color=blue>Lib</font> &quot;<font color=red>user32</font>&quot; ( _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>ByVal</font> hHook <font color=blue>As LongPtr</font>) <font color=blue>As Long</font><br><font color=blue>Dim</font> hHook <font color=blue>As LongPtr</font><br><br><strong><font color=blue>Sub</font> MausRadAn()</strong><br>&nbsp;&nbsp;<font color=#d000d0>UnhookWindowsHookEx</font> hHook: hHook = <font color=#ff6060>0</font><br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Sub</font> MausRadAus()</strong><br><font color=#00a000>' Baut den Mousehook auf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14 = WH_MOUSE_LL</font><br>&nbsp;&nbsp;<font color=blue>If</font> hHook = <font color=#ff6060>0</font> <font color=blue>Then</font> hHook = <font color=#d000d0>SetWindowsHookExA</font>(<font color=#ff6060>14</font>, _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=blue>AddressOf</font> MouseProc, Application.HinstancePtr, <font color=#ff6060>0</font>)<br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Function</font> MouseProc(<font color=blue>ByVal</font> nCode <font color=blue>As Long</font>, <font color=blue>ByVal</font> wParam <font color=blue>As LongPtr</font>, _</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lParam <font color=blue>As LongPtr</font>) <font color=blue>As LongPtr</font><br><font color=#00a000>' F&auml;ngt Mausrad und MittelButton ab</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>WM_MOUSEWHEEL</font>&nbsp;&nbsp;<font color=blue>As Long</font> = <font color=#ff6060>&H20A</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>WM_MBUTTONDOWN</font> <font color=blue>As Long</font> = <font color=#ff6060>&H207</font><br>&nbsp;&nbsp;<font color=blue>Const</font> <font color=#d000d0>WM_MBUTTONUP</font>&nbsp;&nbsp; <font color=blue>As Long</font> = <font color=#ff6060>&H208</font><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<font color=blue>If</font> nCode = <font color=#ff6060>0</font> <font color=blue>Then</font><font color=#00a000>&nbsp;' 0 = HC_ACTION</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Select Case</font> wParam<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>Case</font> <font color=#d000d0>WM_MOUSEWHEEL</font>, <font color=#d000d0>WM_MBUTTONDOWN</font>, <font color=#d000d0>WM_MBUTTONUP</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MouseProc = <font color=#ff6060>1</font>: <font color=blue>Exit Function</font><br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=blue>End Select</font><br>&nbsp;&nbsp;<font color=blue>End If</font><br>&nbsp;&nbsp;MouseProc = <font color=#d000d0>CallNextHookEx</font>(<font color=#ff6060>0</font>, nCode, wParam, <font color=blue>ByVal</font> lParam)<br><strong><font color=blue>End Function</font></strong><br><br><br><font color=#00a000>'########### In das gew&uuml;nschte Tabellenmodul #############</font><br><strong><font color=blue>Private Sub</font> Worksheet_Activate()</strong><br>&nbsp;&nbsp;<font color=blue>Call</font> MausRadAus<br><strong><font color=blue>End Sub</font></strong><br><br><strong><font color=blue>Private Sub</font> Worksheet_Deactivate()</strong><br>&nbsp;&nbsp;<font color=blue>Call</font> MausRadAn<br><strong><font color=blue>End Sub</font></strong></div></div><div style='line-height: 5px;'><br></div></div></div><!--- Signatur ---><div><font size=2 face=Arial>_________<br>viele Gr&uuml;&szlig;e<br><b><span style='font-family: Lucida Calligraphy; color: #802000'>Karl-Heinz</span></b></font></div>]]></content:encoded>
		</item>
	</channel>
</rss>