Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1932to1936
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel VBA Bits And

Excel VBA Bits And
29.05.2023 10:14:15
Joschi Witchcraft

Hallo Forum.
Ich möchte in einer Variablen verschiedene Infos als Bits speichern, um sie in einer Funktion auswerten zu können.

Mein Test-Code:

Sub BitsAnd()

Dim Status As Integer
Const Opt1 As Integer = 1
Const Opt2 As Integer = 2
Const Opt3 As Integer = 4
Const Opt4 As Integer = 8
Status = Opt1 + Opt4
Debug.Print Status
If (Status And Opt1) = Opt1 Then Debug.Print "Opt1 gesetzt"
If (Status And Opt2) = Opt2 Then Debug.Print "Opt2 gesetzt"
If (Status And Opt3) = Opt3 Then Debug.Print "Opt3 gesetzt"
If (Status And Opt4) = Opt4 Then Debug.Print "Opt4 gesetzt"
Status = Status + Opt1
Debug.Print Status
If (Status And Opt1) = Opt1 Then Debug.Print "Opt1 gesetzt"
If (Status And Opt2) = Opt2 Then Debug.Print "Opt2 gesetzt"
If (Status And Opt3) = Opt3 Then Debug.Print "Opt3 gesetzt"
If (Status And Opt4) = Opt4 Then Debug.Print "Opt4 gesetzt"
End Sub

Meine Frage:

Wie kann ich zu einem späteren Zeitpunkt den Opt1 setzen, ohne zu prüfen, ob er bereits gesetzt ist?

Mit dem oben genannten Beispiel ist der Wert 9 gespeichert, als Bits also 1001.

Wenn ich jetzt

Status = Status + Opt1

setze, habe ich nun den Wert 10, und das ist in Bits 1010. So geht es also nicht.

Doch wie geht es?

Gruß Joschi

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA Bits And
29.05.2023 10:25:17
Yal
Hallo Joschi,

Setzen ist Imperativ. D.h. Du musst nicht den Stand zuerst prüfen, um den bit zu setzen.
Einfach setzen, fertig.

Da Rechner inzwischen alle mindestens 4GB RAM haben, ist das Thema bit-array nicht mehr so relevant. Aber als Übungszweck weiterhin.

VG
Yal


AW: Excel VBA Bits And
29.05.2023 10:36:13
Joschi Witchcraft
Hallo Yal.

Danke für Deine Antwort. Das Problem ist nicht der Speicher. In einer Integer-Variablen kann ich 32 Informationen speichern. Wenn ich das anders mache. muss ich einer aufgerufenen Funktion statt dessen 32 Parameter mitgeben. Das ist der Grund.

Du hast geschrieben: Einfach setzen, fertig., hast aber nicht erwähnt wie.
Mit Status = Status + Opt1 funktioniert es nicht.

Gruß Joschi


Anzeige
AW: Excel VBA Bits And
29.05.2023 11:01:29
Joschi Witchcraft
Hallo Yal.

in meinem Alter (70+) fängt mich nicht mehr an, sich mit einer anderen Programmiersprache zu beschäftigen. Ich habe über 40 Jahre mit Bits gearbeitet.

Das. was der bereitgestellte Link beschreibt, ist eine ganz andere Technik. Da ist es wesentlich einfacher, vorher zu prüfen, ob der zu setzende Wert bereits gesetzt ist. Ich kann mir aber nicht vorstellen, dass es in VBA nicht dafür eine Technik gibt, ähnlich der Technik, mit "AND" zu prüfen, ob das entsprechende Bit gesetzt ist. Allerdings war meine Internetsuche nicht erfolgreich, Das liegt möglicherweise auch daran, den richtigen Suchbegriff zu verwenden. Doch welchen?

Gruß Joschi


Anzeige
AW: Excel VBA Bits And
29.05.2023 18:50:30
onur
" Ich habe über 40 Jahre mit Bits gearbeitet. " Dann solltest du doch "ODER" kennen - oder ?


AW: Excel VBA Bits And
29.05.2023 11:47:20
Nepumuk
Hallo Joschi,

so:

Sub BitsAnd()

Dim Status As Integer
Const Opt1 As Integer = 1
Const Opt2 As Integer = 2
Const Opt3 As Integer = 4
Const Opt4 As Integer = 8
Status = Opt1 Or Opt4
Debug.Print Status
If (Status And Opt1) = Opt1 Then Debug.Print "Opt1 gesetzt"
If (Status And Opt2) = Opt2 Then Debug.Print "Opt2 gesetzt"
If (Status And Opt3) = Opt3 Then Debug.Print "Opt3 gesetzt"
If (Status And Opt4) = Opt4 Then Debug.Print "Opt4 gesetzt"
Status = Status Or Opt1
Debug.Print Status
If (Status And Opt1) = Opt1 Then Debug.Print "Opt1 gesetzt"
If (Status And Opt2) = Opt2 Then Debug.Print "Opt2 gesetzt"
If (Status And Opt3) = Opt3 Then Debug.Print "Opt3 gesetzt"
If (Status And Opt4) = Opt4 Then Debug.Print "Opt4 gesetzt"
End Sub
Gruß
Nepumuk


Anzeige
AW: Excel VBA Bits And
29.05.2023 12:48:38
Joschi Witchcraft
Hallo Nepomuk.

Auch Dir herzlichen Dank für Deine Antwort. Ja, es kann so einfach sein, wenn man weiß, wie es funktioniert.
Ich hatte das "OR" schon irgendwie vermutet. Aber eine Internetsuche mit den Begriffen "EXCEL VBA AND OR" bringt nicht das erwartete Ergebnis.

Problem gelöst. Danke.

Gruß Joschi


AW: Excel VBA Bits And
29.05.2023 12:18:02
Pappawinni
wo ist das Problem ?
Status = (Status or Opt1)
oder hab ich es wieder nicht verstanden?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige