Clever-Excel-Forum

Normale Version: Passwort aus Zahlen und Buchstaben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
@HKindler

Danke für deine Erklärung, ich glaube der Grosche liegt schon auf der Tischkante ^^

@d‘r Bastler

Die Autokorrektur findet zum Glück nur hier im Forum statt XD ansonsten wäre es schlimm ^^
„Der Editor schreibt Pub, da dies ein Befehl ist, muss ich dem Folge leisten. PC herunterfahren, und ab zum Bier“ XD

26865

(08.09.2022, 20:06)HKindler schrieb: [ -> ]Wenn man denn unbedingt auf Function verzichten will, dann könnte man auch globale Variablen verwenden. Aber beides (ByRef und globale Variablen) trägt mMn. nicht wirklich zu übersichtlichem Code bei.
Bei globalen Variablen sind wir d’accord. Ein Verzicht auf Funktionen stand aber garnicht zur Debatte. 

Die Rückgabe von Werten innerhalb der Argumente ist hingegen Gang und Gäbe z. B. bei APIs. Lässt man das Dogma der Unübersichtlichkeit außen vor, bieten sich einige sehr gute Möglichkeiten, die bei entsprechend sauberer Dokumentation auch nicht zur Verwunderung über das Ergebnis führen müssen.
15 "...nterfahren, und ab zum Bier"  Jawoll! Herr Leutnant!! 23

Schönen Abend noch!
Moin allerseits,
um das Stichwort Globale Variablen noch einmal aufzunehmen.

Sie können unzuverlässig sein, weil vielleicht unkontrollierbar an jeder beliebigen Stelle des Codes manipulierbar. Stimmt. Allerdings können sie den Code auch -trotzdem übersichtlich- deutlich vereinfachen. Mal so als Gedankenspiel:
Ich habe eine Mappe mit x Tabellen in einem bestimmten, flexiblen Verzeichnis: Dazu hier ein Array, das immer wieder abgefragt wird. Also deklariere ich im Modul modSystem:


Code:
Option Explicit

Public wb As Workbook, wsE As Worksheet, wsV As Worksheet, wsA As Worksheet, sPath As String
Public aArr


Der Pfad und die Tabellen werden sich zur Laufzeit nicht verändern. Und falls da doch Änderungen/Ergänzungen notwendig werden, deklariere ich gezielt nach. Der geübte Profi wird in den Namen der Worksheets das EVA-Prinzip erkennen.
Dann kommt sie Sub System(), die bereits beim WorkBook_Open aufgerufen werden muss, und ein kleiner Test:


Code:
Sub System()
    Set wb = ThisWorkbook
    Set wsE = wb.Sheets("Tabelle1")
    Set wsV = wb.Sheets("Tabelle2")
    Set wsA = wb.Sheets("Tabelle3")

    sPath = wb.Path
    aArr = Array("Wert 0", "Wert 1", "blöder Wert")
End Sub

Sub KleinerTest()
    MsgBox _
    "Pfad: " & sPath & vbNewLine & _
    "wsE: " & wsE.Name & vbNewLine & _
    "aArr: " & aArr(2) & vbNewLine _
    , , "Kleiner Test"
End Sub


Beim Testen einzelner Prozeduren wird man immer wieder über Laufzeitfehler 91 stolpern. Einfache Lösung: Während der Programmierung/den Tests die System einfach in jeder Sub als erstes aufrufen. Danach genügt der einmalige Aufruf über WorkBook_Open (System als ganzes Wort aus dem kompletten Projekt ersatzlos ersetzen), um nicht jedes Mal wieder bei Null anzufangen. Zum Testen: den Call System in KleinerTest() einbauen und schon klappt's auch nach einem VBA- Reset mit den Nachbarn...

Übersichtlicher? Ja, denn das ganze Zeugs, das so wieso in jeder Sub braucht, muss jetzt nicht mehr in jedem Header einer Sub stehen und bei jedem Tippfehler korrigiert zu werden.

Wie gesagt: als Gedankenspiel - aber in vielen meiner Proj ... Verzeihung Basteleien erfolgreich im Einsatz.

Schönen Abend noch!

26865

(09.09.2022, 00:35)d'r Bastler schrieb: [ -> ]um das Stichwort Globale Variablen noch einmal aufzunehmen.
„Selbstinitialisierende“ Variable sind das Spielfeld von Property-Prozeduren. Weder muss man dafür das Open-Ereignis (oder andere) belasten noch braucht man globale Variablen.

Globale Konstanten sind hingegen ein brauchbares Instrument.
Hallo


Zitat:Hm, mir fällt da noch ein Szenario ein, in dem der Nutzer irgendwelche (Unicode-)Sonderzeichen bewusst oder unbewusst im Passwort verwendet. Gibt er also z. B. ein Zeichen mit dem Unicodewert 0x2658 (dezimal 9816) ein, so gibt asc den Wert 63 zurück (Ersatzzeichen), also ein ggf. gültiges Zeichen. Man könnte vorsichtshalber mit CharW und AscW arbeiten.


Hier noch mal weitere Möglichkeiten.
Verzichte bei der Prüfung auf die Umwandlung in den Zeichencode und Prüfe direkt.

 Case "A" To "Z"
 Case "a" To "z"
 Case 0 To 9


Schau Dir auch mal "Like" an.

Gruß Elex

26865

(09.09.2022, 08:53)Elex schrieb: [ -> ]Prüfe direkt.
Autsch, das tat weh! Danke für den Klapps auf die Stirn :D
Seiten: 1 2 3