私は、combBox と textBox を含むフォームを持っています。コンボ ボックスはテーブル ウィッチからデータを取得していますが、値は 3 つしかありません (JED、RUH、DMM)。私が望むのは、ユーザーがコンボ ボックスの 3 つの値のいずれかを選択すると、テキスト ボックスが autoNumbering の特別な形式で自動的に入力されることです。たとえば、ユーザーが JED を選択した場合、形式は j0000a になります (「j」: 静的で JED のショットカット、「0000」: 順次増加する通常の数字、「a」: 変更されないアルファベット文字) 0000 が限界に達しない限り、魔女は 9999 です)。コンボ ボックスの各値には、autoNumbering の特別な形式があり、一意であることに注意してください。
どうすればできますか?
前もって感謝します。
質問する
729 次
1 に答える
0
値をテーブルに格納している場合は、ドロップダウンの afterupdate() イベントの一部の VBA コードがそれを行います。
あなたの正確な構造がわからないので、ここでいくつかの自由を取ります。
Table_ABRV
ID | ABRV
1 | JED
2 | RUH
3 | DMM
そして別のテーブル。
Table_Auto
ID | CustomID | ABRVID
1 | j0000a | 1
そして、これを機能させるコードは
Private Sub cmbABRV_AfterUpdate()
Dim seed, autoVal, autoRemainder, autoAlpha
'[ABRV][####][a]
seed = DCount("ID", "Table_Auto", "ABRVID = " & DLookup("ID", "Table_ABRV", "ABRV = '" & cmbABRV.Text & "'"))
autoVal = Round(seed / 10000, 0) + 1 'this will be used for the alpha character
autoRemainder = seed Mod 10000 'this will be used for numeric value
autoRemainder = Format(autoRemainder, "000#") 'Add preceeding 0's
autoAlpha = ConvertToLetter(autoVal) 'convert the autoVal to Alpha
txtAuto.Value = Left(cmbABRV.Text, 1) & autoRemainder & autoAlpha 'Create string
End Sub
Function ConvertToLetter(Val) As String
'Convert a letter to a numeric equivalent
Dim iAlpha As Integer
Dim iRemainder As Integer
iAlpha = Int(Val / 27)
iRemainder = Val - (iAlpha * 26)
If iAlpha > 0 Then
ConvertToLetter = Chr(iAlpha + 64)
End If
If iRemainder > 0 Then
ConvertToLetter = ConvertToLetter & Chr(iRemainder + 64)
End If
End Function
ドロップダウンから値を選択すると、フォームのテキスト ボックスに自動番号が表示されます。
于 2012-08-31T17:46:28.073 に答える