PDA

Vollständige Version anzeigen : Hilfe bei Excel Makro


Daniela1982
26.02.2008, 18:24
Hallo ihr,

bräuchte dringend die Hilfe eines erfahrenen Excel Makro Programmierers.

Ich habe eine Tabelle in welcher ich die Dezimalzahlen der Spalten "B, E, F, G, H, I, J, K und L" in Hexadezimaler Schreibweise anzeigen lassen möchte. Das möglichst mit einem Tastendruck durch ein Makro.

Kann mir jemand helfen? Bin für jede Hilfe dankbar. :rolleyes:

Gruß, Daniela

Berti_S
27.02.2008, 11:02
Hallo Daniela,

verwende doch die Excel-Funktion DEZInHex zum Anzeigen der Hex-Werte in der Tabelle.


Berti

jinx
27.02.2008, 17:48
<font size="2" face="Century Gothic">Moin, Berti,

magst Du uns bitte ein Beispiel für den Automatismus dieser Vorgehensweise geben? Danke. </font>

Berti_S
28.02.2008, 08:16
Hallo jinxs,

ich wollte nur den Hinweis auf die Nutzung der eingebauten Funktion geben.
Sicher kann man dies auch per Makro machen - aber warum kompliziert, wenns auch einfacher geht ?

Berti

jinx
28.02.2008, 18:26
<font size="2" face="Century Gothic">Moin, Berti,

weil genau dies explizit vom User angefordert wurde?</font>

Berti_S
29.02.2008, 07:48
Hallo jinxs,

bisher hat sich Daniela ja gar nicht weiter geäußert.
Vielleicht kennt sie ja die Formel überhaupt nicht.

Und "explizit angefordert" und "möglichst" sind für mich immer noch zwei unterschiedliche Dinge...


Berti

jinx
01.03.2008, 06:55
<font size="2" face="Century Gothic">Moin, Berti,

wie auch zwischen "normalen" Tabellenfunktionen und solchen aus dem Analyse-AddIn ein Unterschied besteht: Dec2Hex gehört zu den Analysefunktionen, die zuerst installiert und dann aktiviert werden müssen, bevor sie zur Verfügung stehen (auf jedem Rechner, auf dem die Mappe geöffnet werden soll).

@Daniela:
Der Beitrag wurde von Stefan aufgrund der hier praktizierten Vorgehensweisen aus dem VB-Forum verschoben - VBA-Probleme werden in den sie betreffenden Anwendungen behandelt.

Eine mögliche Vorgehensweise: Anlage einer Schaltfläche aus der Symbolleiste Formular, nachdem der Code für die Funktion und die Umwandlung eingegeben wurden. Beides gehört in ein Standardmodul:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Public Function</span> DecToHex(Dec <span class="TOKEN">As</span> <span class="TOKEN">Double</span>) <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="REM">' nach DRJ aka Jacob Hilderbrand</span>
<span class="TOKEN">Dim</span> i <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> n <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> PlaceValHex <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Dim</span> Hex(1 <span class="TOKEN">To</span> 256) <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Dim</span> HexTemp <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Dim</span> Divisor <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
&nbsp;
Dec = Int(Dec)
&nbsp;
<span class="TOKEN">For</span> i = 256 <span class="TOKEN">To</span> 2 <span class="TOKEN">Step</span> -1
<span class="TOKEN">If</span> Dec &gt;= 16 ^ (i - 1) <span class="TOKEN">And</span> Dec &gt; 15 <span class="TOKEN">Then</span>
PlaceValHex = Int(Dec / (16 ^ (i - 1)))
Dec = Dec - (16 ^ (i - 1)) * PlaceValHex
Select Case PlaceValHex
Case 0 <span class="TOKEN">To</span> 9
Hex(i) = <span class="TOKEN">CStr</span>(PlaceValHex)
Case <span class="TOKEN">Is</span> = 10
Hex(i) = &quot;A&quot;
Case <span class="TOKEN">Is</span> = 11
Hex(i) = &quot;B&quot;
Case <span class="TOKEN">Is</span> = 12
Hex(i) = &quot;C&quot;
Case <span class="TOKEN">Is</span> = 13
Hex(i) = &quot;D&quot;
Case <span class="TOKEN">Is</span> = 14
Hex(i) = &quot;E&quot;
Case <span class="TOKEN">Is</span> = 15
Hex(i) = &quot;F&quot;
<span class="TOKEN">End</span> Select
<span class="TOKEN">Else</span>
Hex(i) = &quot;0&quot;
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">Next</span> i
PlaceValHex = Dec
Select Case PlaceValHex
Case 0 <span class="TOKEN">To</span> 9
Hex(1) = <span class="TOKEN">CStr</span>(PlaceValHex)
Case <span class="TOKEN">Is</span> = 10
Hex(1) = &quot;A&quot;
Case <span class="TOKEN">Is</span> = 11
Hex(1) = &quot;B&quot;
Case <span class="TOKEN">Is</span> = 12
Hex(1) = &quot;C&quot;
Case <span class="TOKEN">Is</span> = 13
Hex(1) = &quot;D&quot;
Case <span class="TOKEN">Is</span> = 14
Hex(1) = &quot;E&quot;
Case <span class="TOKEN">Is</span> = 15
Hex(1) = &quot;F&quot;
<span class="TOKEN">End</span> Select
<span class="TOKEN">For</span> i = 256 <span class="TOKEN">To</span> 1 <span class="TOKEN">Step</span> -1
<span class="TOKEN">If</span> Hex(i) = &quot;0&quot; <span class="TOKEN">Then</span>
<span class="TOKEN">Else</span>
n = i
<span class="TOKEN">Exit For</span>
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">Next</span> i
<span class="TOKEN">For</span> i = n <span class="TOKEN">To</span> 1 <span class="TOKEN">Step</span> -1
HexTemp = HexTemp &amp; Hex(i)
<span class="TOKEN">Next</span> i
DecToHex = HexTemp
&nbsp;
<span class="TOKEN">End</span> <span class="TOKEN">Function</span><hr>&nbsp;
<span class="TOKEN">Sub</span> UmschreibenDecToHex()
<span class="TOKEN">Dim</span> rngCell <span class="TOKEN">As</span> Range
Application.ScreenUpdating = <span class="TOKEN">False</span>
<span class="TOKEN">For</span> <span class="TOKEN">Each</span> rngCell <span class="TOKEN">In</span> ActiveSheet.Range(&quot;B2:B100,E2:E100,F2:F100&quot;).Cells
<span class="TOKEN">If</span> <span class="TOKEN">Not</span> IsEmpty(rngCell) <span class="TOKEN">And</span> IsNumeric(rngCell) <span class="TOKEN">Then</span>
rngCell.Value = DecToHex(rngCell.Value)
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">Next</span> rngCell
Application.ScreenUpdating = <span class="TOKEN">True</span>
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

Die Bereiche müssen noch angepasst werden, sie wurden hier nur exemplarisch aufgezeigt.</font>

Berti_S
03.03.2008, 08:06
Hallo jinxs,

danke für den Hinweis !


Berti