Office - Word, Excel und Co. 9.736 Themen, 41.351 Beiträge

Excel - diemal gleich 3 Fragen auf einmal *g*

Olaf19 / 49 Antworten / Flachansicht Nickles

Hallo zusammen!

Heute habe ich gleich 3 Fragen auf einmal zu Excel - das geht nun wirklich nicht *g*...
  • "Einmal Makro - immer Makro"? Wenn ich ein Makro nicht mehr benötige und es im Visual-Basic-Editor allergründlichst mit Strunk und Stiel entferne, so erscheint trotzdem in Zukunft immer bei jedem Öffnen des Excel-Sheets die Frage "Diese Datei enthält Makros, sollen diese aktiviert werden?" - ist das normal so? Muss man erst ein neues Sheet aufmachen und die Daten aus dem alten dort hineinkopieren? Oder wo setzt Excel dieses "Makro-Flag"?

  • Um die Nachkommastellen einer Zahl zu berechnen, nehme ich immer die Formel =A1-GANZZAHL(A1) - aber gibt es da keine elegantere Methode? In der Excel-Hilfe konnte ich jedenfalls keinen eigenen Befehl dafür finden.

  • Zahlen aus Zeichenketten auslesen - auch hier wieder die Frage, ginge es auch eleganter? Z.B. Wenn ich eine Zeichenkette habe wie "10:12:15" und die - übrigens nicht zwangsläufig immer *zwei*stelligen! - Zahlen dort auslesen möchte, um sie auf jeweils eine eigene Zelle zu verteilen, geht das nur mit den String-Befehlen LINKS, RECHTS und FINDEN (=> nämlich den ":" als Trennzeichen?) Ich vermute stark "ja", aber fragen kostet ja nichts.
Ihr wisst bestimmt wie immer gut Bescheid, deswegen gleich im Vorwege:

THX
Olaf
Die Welt ist ein Jammertal ohne Musik. Doch zum Glueck gab es Bach, Beethoven, Haendel und Goethe (Helge Schneider)
bei Antwort benachrichtigen
neanderix Olaf19 „Excel - diemal gleich 3 Fragen auf einmal *g*“
Optionen
ahlen aus Zeichenketten auslesen - auch hier wieder die Frage, ginge es auch eleganter? Z.B. Wenn ich eine Zeichenkette habe wie "10:12:15" und die - übrigens nicht zwangsläufig immer *zwei*stelligen! - Zahlen dort auslesen möchte, um sie auf jeweils eine eigene Zelle zu verteilen, geht das nur mit den String-Befehlen LINKS, RECHTS und FINDEN (=> nämlich den ":" als Trennzeichen?) Ich vermute stark "ja", aber fragen kostet ja nichts.

Mir fällt dazu noch die VBA-Funktion "Split" ein; Split trennt einen String beliebiger Länge am angegebenen Trennzeichen auf und schreibt die entstehenden Teile in ein Array; du musst daher die Ergebnisvariable als nichtdimensioniertes Array vorab deklarieren.

Aus der Hüfte geschossen, da ich hier kein Excel habe:

Dim A() as String
Dim B as String

B="10:12:15"
A=Split(B,":")

Debug.print A(0)
Debug.print A(1)
Debug.Print A(2)

Obiges sollte dir von oben nach unten 10, 12, 15 in das Direktfenster des VBA-Editiors schreiben.

Das Problem ist, dass du dir damit keine benutzerdefinierte Funktion erstellen kannst, denn die darf nur exakt einen Wert zurückgeben.

Oder doch; du musst halt nur die Möglichkeit einbauen, selber anzugeben, welche Zahl dir die Funktion zurückgeben soll; wieder aus der Hüfte geschossen, wie du das für eine benutzerdefinierte funktion genau machen musst, musst du selber herausfinden (alternativ schaue ich das für dich am Montag nach ;) )

Public Function ZahlAusString(string, zahlposition)

Dim A() as String

A=Split(string,":")

ZahlAusString=a(zahlposition-1) 'so kannst du oben als Position "3" eingeben


beachte: Arrays fangen immer mit Index 0 an.
Aufgerufen mit deinem Beispiel sähe das z.B. so aus:

ZahlAusString("10:12:15",3)

Rückgabe sollte "15" sein

Teste das mal durch, bei Fragen: immer zu, ich lese auch in der 4ma hier mit ;)

Volker
Computers are like airconditioners - they stop working properly when you open Windows Ich bin unschuldig, ich habe sie nicht gewählt!
bei Antwort benachrichtigen