Option Explicit
'Patterns måste vara baserade på potensen av 2 lägsta möjliga är 2 (tror jag)
Public Enum Patterns
ZeroToNine = 2
AtoZ = 4
ÅÄÖ = 8
MathSigns = 16
End Enum
'enkelt test
Private Sub Command1_Click()
'Unika värden är 2 och 16 tillsammans är de 18
Text1.Text = ShowPattern(MathSigns Or ZeroToNine)
End Sub
'Enkelt test
Public Function ShowPattern(MyPatterns As Patterns) As String
ShowPattern = GetEnums(MyPatterns)
End Function
'Räkna ut vilka värden som är möjliga värden baserade på potensen av 2 av det insända värdet
Private Function GetEnums(ByVal Value As Integer) As String
Dim X As Integer, strRet As String
X = 1
While X < Value
X = X * 2
If X > Value Then
X = X / 2
Value = Value - X
strRet = strRet & GetPattern(X)
X = 1
End If
If X = Value Then strRet = strRet & GetPattern(X)
Wend
GetEnums = strRet
End Function
'Returnera det som det unika värdet står för.
Private Function GetPattern(ByVal Id As Integer) As String
Dim strRet As String
Dim VarId As Variant
Select Case Id
Case 2 'ZeroToNine
strRet = "0123456789"
Case 4 'AtoZ
strRet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Case 8 'ÅÄÖ
strRet = "ÅÄÖ"
Case 16 'MathSigns
strRet = "+-*/\^=<>%"
End Select
GetPattern = strRet
End Function