Seifenblasen... 

Beschreibung


Eine Entdeckung der Möglichkeit zum Schreiben von "Zettelchen" für mich und andere
.....

"A blog a day keeps the blogger to stay." ^^ (Tamaro)

05.01.2018

Tabellenarbeit und ein Excel-Makro

Heute habe ich mir für weitere Tabellenarbeiten ein schnuckeliges, kleines Excel-Makro programmiert, mit dem sich die Übertragung der Werte der letzten Jahrestabelle in die aktuelle Jahrestabelle wesentlich vereinfachen lässt.

Es geht dabei darum, unterhalb der aktuellen Zelle zwölf Zellen mit einem Textinhalt mit einem Punkt am Anfang auszuwählen, sie in Formelinhalte umzuwandeln und in die Zwi­schen­ab­lage zu kopieren, sie in die Spalte links daneben als reine Zahlenwerte ein­zu­tra­gen und anschließend an den Anfang der zwölf Formeln vor dem Zeichen "=" wieder einen Punkt einzufügen.

Der Sinn davon ist, dass durch den Punkt vor dem Gleichheitszeichen (".=") aus dem For­mel­inhalt, der aus einem Bezug zu einer anderen Tabelle, also einer Verknüpfung, be­steht, wieder ein reiner String, d. h. ein Textinhalt, gemacht wird.
In der Spalte links davon stehen jetzt die reinen Zahlenwerte einer anderen Tabelle, so dass damit weitergerechnet werden kann, ohne dass diese Werte aus einer verknüpften Tabelle ausgelesen werden müssen.

Nun ja, ich weiß nicht, inwieweit das anderen verständlich ist.^^

Bisher musste ich (1) die zwölf Zellen markieren, (2) ein selbstgeschriebenes Makro auf­ru­fen, was die Punkte entfernt, (3) die markierten Formelinhalte in die Zwi­schen­ab­lage kopieren, (4) Cursor nach links setzen und die Zwischenablage in die Spalte links davon mit einem ebenfalls selbstgeschriebenen Makro als Werte eintragen, (5) die zwölf Zellen der Spalte rechts davon wieder markieren, (6) das Makro aufrufen, mit dem wie­der ein Punkt "." vor das Gleichheitszeichen gesetzt wird, und (7) die Mar­kie­rung wieder entfernen.

Jetzt genügt ein einziger Klick auf ein Symbol in der Symbolleiste, um das alles zu er­le­digen.
Das bedeutet auch, dass die Anfälligkeit, einen Fehler bei der Bedienung zu machen, be­deu­tend abgenommen hat.
(Das Symbol und die Verknüpfung zu dem Makro hatte ich heute auch eingebaut.)

Wen es interessiert,- hier ist das Makro:

----------
Sub WerteHolen()

If Workbooks.Count <= 1 Then Exit Sub
On Error GoTo Aussprung

' Inhalt der aktuellen Zelle holen
Zellinhalt = ActiveCell.FormulaLocal
' die ersten beiden Zeichen prüfen, wenn nicht ".=" und nicht "=", dann Ende
If Left$(Zellinhalt, 2) <> ".=" And Left$(Zellinhalt, 1) <> "=" Then Exit Sub

  ' aktuelle Zeile holen
  Zeile = ActiveCell.Row
  ' akuelle Spalte holen
  Spalte = ActiveCell.Column
  Anzahl = 12 - 1

    ' 12 Zellen in aktueller Spalte markieren
    Range(Cells(Zeile, Spalte), Cells(Zeile + Anzahl, Spalte)).Select
 
    ' Punkte am Formelanfang entfernen und Formelinhalte holen und anzeigen
    ' aber nur, wenn die ersten beiden Zeichen ".=" sind
    If Left$(Zellinhalt, 2) = ".=" Then
        Application.Run "Personl.xls!InhaltAktivieren"
    End If
    ' sonst hier, falls bereits umgewandelt und Beginn mit "="
 
    ' die Formelinhalte in Zwischenablage kopieren
    Selection.Copy
 
    ' Cursor auf gleicher Zeile eine Spalte weiter nach links setzen
    Range(Cells(Zeile, Spalte - 1), Cells(Zeile, Spalte - 1)).Select
 
    ' Formelinhalte als reine Zahlenwerte einfügen
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
 
    ' 12 Zellen in aktueller Spalte erneut markieren
    Range(Cells(Zeile, Spalte), Cells(Zeile + Anzahl, Spalte)).Select
 
    ' Punkte am Formelanfang wieder einfügen
    Application.CutCopyMode = False
    Application.Run "Personl.xls!InhaltAktivieren"
 
    ' Cursor wieder auf Anfangszeile setzen (Markierung entfernen)
    Range(Cells(Zeile, Spalte), Cells(Zeile, Spalte)).Select

Aussprung:
End Sub
----------

Es könnte sicher ein bisschen 'eleganter' sein. Es ist ein bisschen wie im 'Drahtverhau' zusammengestrickt.^^
Allerdings musste ich mich auch erst ein wenig in die Makroprogrammierung wieder ein­arbeiten.

Aber es funktioniert gut. Das ist zunächst die Hauptsache.

Das Abfangen der Fehler habe ich übrigens erst heute Abend noch eingebaut.

Keine Kommentare:

Kommentar veröffentlichen

Danke für den Kommentar! :)

...