Zahlensysteme konvertieren
Einfaches Konvertieren von Binären, Hexa, Dezimal, Binäry und Ascii Nummern
https://www.binaryhexconverter.com/
http://www.arndt-bruenner.de/mathe/scripts/Zahlensysteme.htm
Zahlensysteme konvertieren
Einfaches Konvertieren von Binären, Hexa, Dezimal, Binäry und Ascii Nummern
https://www.binaryhexconverter.com/
http://www.arndt-bruenner.de/mathe/scripts/Zahlensysteme.htm
Es kommt in der Makro Programmierung immer mal wieder vor, dass das Makro nicht in dem Excel Workbook läuft, mit dem der User arbeitet.
Zwei Beispiele:
1. Ich ‚öffne‘ eine Dokumentation in einem neuen Worksheet.
2. Speichern unter einem anderen Namen. 
Man muss wissen, wie die verschiedenen geöffneten Tabellenblätter angesteuert werden. Für die Unterscheidung wichtig:
| 1 | Thisworkbook.Name | 
Ist das Workbook, in dem das Makro läuft.
| 1 | Activeworkbook.Name | 
Ist das Aktive Workbook.
Für die konkreten Beispiele:
Ich benutze für meinen Arbeitsalltag ein eigenes Addin, das die gängisten Makros enthält. In diesem befindet sich auch ein (verstecktes) Tabellenblatt „Doku“. Mittels Makrobutton erstellt das Makro ein neues Tabellenblatt und kopiert das Blatt „Doku“ in dieses.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Sub doku(control As IRibbonControl) On Error GoTo Fehler Application.ScreenUpdating = False Application.DisplayAlerts = False     Workbooks.Add     ThisWorkbook.Sheets("Doku").Copy Before:=ActiveWorkbook.Sheets(1)     ActiveWorkbook.Sheets(4).Delete     ActiveWorkbook.Sheets(3).Delete     ActiveWorkbook.Sheets(2).Delete Fehler: Exit Sub End Sub | 
Bemerkungen zum Code:
| 1 | (control AS iRibbonControl)  | 
wird verwendet, wenn man mit einem eigenen Ribbon arbeitet. Das Makro wird dann über einen Makrobutton angesteuert.
| 1 2 | On Error Go To Fehler  Fehler: Exit Sub | 
Normales Fehlerhandling. Falls etwas nicht klappt, bricht das Makro ab.
| 1 2 | Application.Screenupdating = False Application.DisplayAlerts = False | 
Mit der ersten Zeile wird die Bildschirmaktualisierung ausgeschaltet, das heisst erst wenn das Makro fertig ist, sieht man was wechselt. Hier zwar marginal, aber das beschleunigt rechenintensive Makros. Mit der zweiten Zeile unterdrückt man „Are You Sure“ Fragen…
| 1 2 | Workbooks.Add ThisWorkbook.Sheets("Doku").Copy Before:=ActiveWorkbook.Sheets(1) | 
Hier jetzt das eigentliche Thema: Zuerst wird ein neues Workbook hinzugefügt, dann Kopiere das Blatt „Doku“ aus ThisWorkbook (das Workbook wo das Makro läuft) zum ActiveWorkbook (das Workbook, das am Bildschirm eben erstellt wurde und deshalb aktiv ist).
| 1 2 3 | ActiveWorkbook.Sheets(4).Delete ActiveWorkbook.Sheets(3).Delete ActiveWorkbook.Sheets(2).Delete | 
Löscht die drei Tabellenblätter, die es ebenfalls im neuen Workbook hat. Sind leer und deshalb unnütz. Könnte man natürlich auch mit einer Schleife oder sonstwie löschen.
H
Welche ist die letzte Benutze Zeile und Spalte in einer Tabelle?
Eine Frage die sich insbesondere beim VBA programmieren ständig stellt. In meinen Excel mit Makros sind diese beiden Einzeiler deshalb standardmässig in einem „Funktionen“ Modul enthalten:

Lastrow(2) gibt als Resultat die letzte, in der Spalte 2 verwendete Zeile zurück.

Lastcol(2) gibt als Resultat die letzte, in der Reihe 2 verwendete Spalte zurück. 
Wie gesagt, das brauche ich in der VBA Programmierung als Grundlage für weitere Makros. Dann muss ich diesen Code nicht ständig wiederholen (und nachschauen).
| 1 2 3 4 5 | Function lastrow(usedrow As Variant) As Variant lastrow = ActiveSheet.Cells(Rows.Count, usedrow).End(xlUp).Row              'letzte Reihe End Function | 
| 1 2 3 4 5 | Function lastcol(usedcol As Variant) As Variant lastcol = ActiveSheet.Cells(usedcol, Columns.Count).End(xlToLeft).Column    'letzte Spalte End Function | 
Ein Nachteil von Sverweis ist, man kriegt immer nur ein Resultat. Meist das Erste:
Excel sucht in der definierten Tabelle und liefert das erste Resultat (auf jeden Fall wenn am Schluss die 0 steht, andere Varianten benutze ich kaum).
Was aber, wenn die Zieltabelle mehrere Resultate hätte? Wie kriege ich alle Treffer?
Die Lösung bietet die Funktion SVERWEIS2:
Als Resultat werden semikolongetrennt sämtliche Suchtreffer geliefert. Die Eingabe der Formel funktioniert gleich wie SVERWEIS, mit dem Unterschied, dass die 0 am Schluss nicht notwendig ist. Mit Dank an Gwe, der diese Funktion bei uns implementiert hat.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | Public Function SVERWEIS2(ByVal Suchkriterium As Variant, _ ByVal Bereich As Range, ByVal Spaltenindex As Integer) As String Dim arr() As Variant Dim ws As Worksheet Dim rng As Range Dim str As String Debug.Print Application.Caller.Worksheet.Index Set ws = Bereich.Parent Set rng = ws.UsedRange Debug.Print rng.Address Set Bereich = Intersect(Bereich, rng) Debug.Print Bereich.Address arr = ws.Range(Bereich.Address) str = "" For i = LBound(arr) To UBound(arr) If Suchkriterium = arr(i, 1) And Suchkriterium <> "" And Not (IsEmpty(Suchkriterium)) And arr(i, 1) <> "" And Not (IsEmpty(arr(i, 1))) And Not (IsEmpty(arr(i, Spaltenindex))) Then Debug.Print arr(i, Spaltenindex) If str <> "" Then str = str & ";" & arr(i, Spaltenindex) Else str = arr(i, Spaltenindex) End If End If Next i If str <> "" Then SVERWEIS2 = str Else SVERWEIS2 = "#NV" End If End Function |