bumbum
Goto Top

Access Reihefolge ergänzen per VBA

Hallo liebe VBA-Freunde,

ich habe folgendes Problem:
ich habe 6 Felder (a1,a2,a3,b1,b2,b3), in einige von ihnen gebe ich Zahlen ein(von 1-6)
Beispiel: a1 = 2
a2 = 3
a3 = 1
b1 = 5
b2 = 4
b3 = leer
nach der eingabe der Werte betätige ich einen Buttom, dann soll das leere Feld (b3) ergänzt werden mit dem fehlenden Wert (6).

Kennt jemand einen VBA-Code dazu???

LG bumbum

Content-Key: 128800

Url: https://administrator.de/contentid/128800

Printed on: April 25, 2024 at 23:04 o'clock

Member: jhinrichs
jhinrichs Nov 06, 2009 at 10:50:47 (UTC)
Goto Top
Hallo,
zur Präzisierung der Frage:
- sind die Felder in einem Formular?
- kommt jede der Zahlen von 1 bis 6 genau einmal vor?
- ist immer b3 das leergelassene Feld, oder wechselt das?
- was heißt "leer" (Wert dann 0 oder undefiniert)

Um zu ermitteln, welche Zahl fehlt, kann man (unter der Voraussetzung, dass jede Zahl von 1 bis 6 genau einmal vorkommt, y die fehlende Zahl ist und x1-x5 die vorhandenen Zahlen), folgende Formel verwenden:
y=21-x1-x2-x3-x4-x5
Das jetzt nur noch mit dem VB-Editor für das Formular (?) in VB umsetzen.

Wenn man es dann ausbaut, gehört natürlich noch die Überprüfung, dass nur 1 Feld frei ist und die Zahlen im Bereich von 1-6 und höchsten einmal vorkommen, dazu.

Rein interessehalber: Wozu das Ganze?
Member: bumbum
bumbum Nov 06, 2009 at 11:01:10 (UTC)
Goto Top
hey,

sorry für die schlechte Beschreibung face-smile
1. die Felder a1;a2;a3;b1;b2;b3 sind Felder in einem Formular.
2. die Zahlen 1-6 kommen jeweils nur einmal vor.
3. jedes der Felder könnte das leere Feld sein.
4. mit "leer" meine ich undefiniert..
5. es ist nur ein Feld "leer" (undefiniert)

... so, ich hoffe du kannst mit meiner Frage jetzt mehr anfangen. face-big-smile

LG bumbum
Member: jhinrichs
jhinrichs Nov 09, 2009 at 14:16:31 (UTC)
Goto Top
Hallo,
nach dem Wochenende hier ein Lösungsvorschlag:
(Die Felder im Formular heißen a1,...,a3,b1,...,b3; der Button heißt cmdButton)
Private Sub cmdButton_Click()
Dim Summe As Integer
Dim Wert As Variant
Dim FeldLeer As String
Dim Feld As Control
Dim Feldliste As Collection

Set Feldliste = New Collection

Rem Erstellung der Liste der Feldnamen
With Feldliste
  .Add Me.Controls("a1")  
  .Add Me.Controls("a2")  
  .Add Me.Controls("a3")  
  .Add Me.Controls("b1")  
  .Add Me.Controls("b2")  
  .Add Me.Controls("b3")  
End With

Rem Initialisierung der Summe
Summe = 0

For Each Feld In Feldliste
  Wert = Feld.Value
Rem Wenn Feld leer ist: Namen merken; wenn nicht: Summe erhöhen
  If IsNull(Wert) Or Wert = 0 Or Wert = "" Then  
    FeldLeer = Feld.Name
  Else
    Summe = Summe + Wert
  End If
Next

Rem Berechnung und Einsetzen in das Formular
Me.Controls(FeldLeer).Value = 21 - Summe

End Sub
Was noch fehlt, ist ein Test, ob genau ein Feld leer gelassen wurde, die Zahlen im Bereich von 1-6 sind und genau einmal vorkommen. Aber ein bisschen solltest Du ja auch tun... face-wink
Viele Grüße