Seite 1 von 2
zellformat mac-adresse
Verfasst: Di 30. Okt 2018, 14:30
von berndk
Hi,
ich bin kein scriptprofi und versuche trotzdem eines zu erstellen.
Mein Ziel ist in einer bestimmten zelle einen 12-stelligen String in eine MAC-Adresse zu wandeln.
mein Versuch bisher:
Code: Alles auswählen
Sub macAdresse_formatieren
with thisComponent.sheets(0)
for zi = 5 to 34 'für diese Zeilen soll das Script gültig sein
if .getcellbyposition(11,zi).string = "1" then 'Auswahl Prügkriterium in Spalte E
'mycell = mysheet.getCellByPosition(4,zi)
.getcellbyposition(4,zi).string = CONCATENATE(Mid((.getcellbyposition(4,zi).string), 1, 2)&":"&Mid((.getcellbyposition(4,zi).string), 3, 2)&":"&Mid((.getcellbyposition(4,zi).string), 5, 2)&":"& Mid((.getcellbyposition(4,zi).string), 7, 2)&":"& Mid((.getcellbyposition(4,zi).string), 9, 2)&":"& Mid((.getcellbyposition(4,zi).string), 11, 2))
else
.rows(zi).isvisible = false 'nicht benötigte Zeilen auswählen und ausblenden
end if
next
end with
End Sub
führte noch nicht zum Erfolg.
Spalte 11 ist eine Hilfsspalte von der ich dachte, dass sie hilfreich ist. Muss aber nicht.
Vielleicht kann mir jemand helfen.
Beste Grüße
berndk
Re: zellformat mac-adresse
Verfasst: Di 30. Okt 2018, 14:37
von Lupo
=TEXT(Zahlenstring*1;"#.##0") oder, falls mit leading zero:
=TEXT(Zahlenstring*1;"000.000.000.000")
lässt sich auch in VBA oder BASIC verwenden. In VBA heißt das Äquivalent "Format".
Re: zellformat mac-adresse
Verfasst: Di 30. Okt 2018, 14:48
von berndk
ertmal danke Lupo,
aber eine Mac-Adresse besteht ja aus Ziffern und Buchstaben. Bsp: 1b:2c:3d:44:55:66. So sollte es auch in der Zelle formatiert werden. Wenn ich Deine Lösungen unter Zelle > Formatieren eingebe, habe ich kein Erfolg.
Re: zellformat mac-adresse
Verfasst: Di 30. Okt 2018, 15:11
von Lupo
Stimmt ... ich habe statt MAC falsch IP gelesen/verstanden. Ist immer gut, in der Frage die Antworter gleich richtig hinzustupsen mit einem Beispiel.
Dann hast Du keine Zahlenformat-Chance, da HEX kein TEXT()-kompatibles numerisches Format ist. Aber:
{=VERBINDEN(":";;TEIL("2D3E5A9E5676";SPALTE($A2:$F2)*2-1;2))} ist gleich mit dem vorher noch in HEX umzuwandelnden
{=VERBINDEN(":";;DEZINHEX(CODE((TEIL("->ZžVv";SPALTE($A2:$F2);1)))))}
Re: zellformat mac-adresse
Verfasst: Di 30. Okt 2018, 16:09
von berndk
Hallo Lupo,
ich bin mir jetzt nicht ganz klar ob ich das verstanden habe.
a) es sind Matrixformeln, richtig.
Gültig soll das Format für den Zellbereich von E5:E34 sein. Wie könnte ich da Deine Matrixformel anpassen?
b) die MAC-Adresse: deswegen dachte ich an verketten mit
Code: Alles auswählen
CONCATENATE(Mid((.getcellbyposition(4,zi).string), 1, 2)&":"&Mid((.getcellbyposition(4,zi).string), 3, 2)&":"&Mid((.getcellbyposition(4,zi).string), 5, 2)&":"& Mid((.getcellbyposition(4,zi).string), 7, 2)&":"& Mid((.getcellbyposition(4,zi).string), 9, 2)&":"& Mid((.getcellbyposition(4,zi).string), 11, 2))
Klappt nur eben nicht. 4 steht hier für Spalte und zi für reihe.
heißt für mich:
immer wenn ich in dieser Spalte einen 12-stelligen String eingebe, soll sich die jeweilige Zelle nach dem betätigen der Entertaste aktualisieren.
Oder verstehe ich bei Deinem Bsp. irgend etwas falsch?
Re: zellformat mac-adresse
Verfasst: Di 30. Okt 2018, 16:35
von Lupo
Ich kenne mich mit CALC-Basic nicht aus und habe daher die Tabellenformel genommen.
Diese musst Du nun selbst verwenden. In Excel ist die Verwendung von Tabellenformeln in VBA kein Problem. Das ist dort ein erheblicher Punkt für weiter verwendbares Humankapital.
Re: zellformat mac-adresse
Verfasst: Di 30. Okt 2018, 17:12
von mikele
Hallo,
das Verketten In Basic übernimmt doch schon & ...
Code: Alles auswählen
Sub macAdresse_formatieren
with thisComponent.sheets(0)
for zi = 5 to 34 'für diese Zeilen soll das Script gültig sein
if .getcellbyposition(11,zi).string = "1" then 'Auswahl Prügkriterium in Spalte E
oCell= .getCellByPosition(4,zi)
sAlt=oCell.String
sNeu=Mid(sAlt,1,2) & ":" & Mid(sAlt,3,2) & ":" & Mid(sAlt,5,2) & ":" & Mid(sAlt,7,2) & ":" & Mid(sAlt,9,2) & ":" & Mid(sAlt,11,2)
oCell.string = sNeu
else
.rows(zi).isvisible = false 'nicht benötigte Zeilen auswählen und ausblenden
end if
next
end with
End Sub
Re: zellformat mac-adresse
Verfasst: Di 30. Okt 2018, 18:46
von Lupo
mikele hat geschrieben: ↑Di 30. Okt 2018, 17:12
sNeu=Mid(sAlt,1,2) & ":" & Mid(sAlt,3,2) & ":" & Mid(sAlt,5,2) & ":" & Mid(sAlt,7,2) & ":" & Mid(sAlt,9,2) & ":" & Mid(sAlt,11,2)
For i = 1 to 6: sNeu = sNeu & Mid(sAlt, i * 2 - 1, 2) & " ": Next: sNeu = Replace(Trim(sNeu, " ", ":"))
als vielleicht vom TE beabsichtigte Alternative. Replace und Trim sind die VBA-Funktionen; heißen hier ja vielleicht genauso.
Re: zellformat mac-adresse
Verfasst: Di 30. Okt 2018, 20:15
von berndk
@ Mikele,
Danke, das Script läuft. Aber ich habe in meiner Erstausführung wohl einen Fehler begangen.
Das Script soll generell für den Bereich $E4:$E34 gültig sein. Mein Gedanke war, wenn ich in der jeweilgen Zeile in Spalte E den eingegebenen Wert durch betätigen der Entertaste neu formatiere, dann eben nur in dieser Zelle - nicht aber im ganzen Spaltenbereich. Momentan formatiert( oder wandelt ) er ja in dem ganzen Bereich den Wert, sofern die Prüfspalte den Wert 1 enthält. Egal ob schon einmal neu formatiert oder nicht, er fügt immer weitere ":" hinzu. War so nicht beabsichtigt.
Der Wert 1 in der Prüf( hilfs )spalte ergibt sich aus einer hinterlegten Formel und bildet sich, wenn ein Wert in Spalte E eingetragen wird. Und genau dann soll ja das Makro ausgelöst werden. So mein Gedanke.
Für Fragen bin ich dankbar.
@Lupo,
Danke. Das Script führt schon zur richtigen Schreibweise. Optimal wäre nur, wenn die Buchstaben dann in GROSS angezeigt werden könnten. Ucase führt hier aber zum teilweisen entziehen der Ziffern. Muss man wohl mit leben.
Re: zellformat mac-adresse
Verfasst: Di 30. Okt 2018, 21:20
von mikele
Hallo,
verstehe ich dich richtig: Wenn du in der Spalte E einen Ausdruck (12 Zeichen) eingibst, dass er dann automatisch in eine Mac-Adresse gewandelt wird (mit Großbuchstaben)?
Gibt es noch eine andere Bedingung? Die Hilfsspalte mit Formel deutet ja an, dass da vielleicht noch mehr geprüft wird.
Wie passt das Ausblenden der Zeilen hier dazu?