Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Passwort aus Zahlen und Buchstaben
#21
@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
Antworten Top
#22
(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.
[-] Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:
  • HKindler
Antworten Top
#23
15 "...nterfahren, und ab zum Bier"  Jawoll! Herr Leutnant!! 23

Schönen Abend noch!
Antworten Top
#24
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!

d`r Bastler von den VBAsteleien.de
Win 10 & 11, Office 2019 & 2021 & macOS X.15, XL 2019
Antworten Top
#25
(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.
Antworten Top
#26
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
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  •
Antworten Top
#27
(09.09.2022, 08:53)Elex schrieb: Prüfe direkt.
Autsch, das tat weh! Danke für den Klapps auf die Stirn :D
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste