2017-01-08 6 views
0

このコードを使用して、フォームのExcUIDテキストボックスからカンマ区切り番号を選択し、tblExcIndivListテーブルに入力しようとしています。フォームからマルチテーブルのアクセステーブルにテキストを入力する

しかし、私はそれをex:123,1213を行に分割し、それらをtblExcIndivListテーブルのUID列の別々の行に配置しようとしていますが、同じセルに1231213として保存されます。

Sub Upd_UID() 
Dim var As Variant 
Dim i As Long 

var = Split(Forms.Agen_Report.ExcUID.Value, vbNewLine) 
CurrentDb.Execute "DELETE * FROM tblExcIndivList;", dbFailOnError 
For i = 0 To UBound(var) 
    CurrentDb.Execute Replace("INSERT INTO tblExcIndivList (UID) VALUES ('@V');", "@V", var(i)), dbFailOnError 
Next i 
End Sub 

助けてください。

答えて

0

文字列が正しく分割されていない場合は、コンマで区切って(123,1213)、vbNewLineで分割しようとしています。区切り文字としてカンマを指定する必要があります。

var = Split(Forms.Agen_Report.ExcUID.Value, ",") 

これで、このエラーが発生し、正しく入力が分割されます。しかし、私は質問がうまく形成されているかどうかを確認することはできません。

+0

私が作った、しかし、あなたは私を救っ何愚かな間違いA.S.H @おかげで、 。 –

0

私はこのようなものが必要だと思います。

Option Explicit 

Dim aCell As Range 

Private Sub UserForm_Initialize() 
    '~~> Change Sheet1 to the relevant sheet name 
    '~~> Change A1:E1 to the relevant range 
    For Each aCell In ThisWorkbook.Sheets("Sheet1").Range("A1:E1") 
     If InStr(1, aCell.Value, ",") Then _ 
     ComboBox1.AddItem Split(aCell.Value, ",")(0) 
    Next aCell 

    '~~> Remove duplicates 
    RemoveDuplicates ComboBox1 
End Sub 

Private Sub ComboBox1_Click() 
    Dim tmpStr As String 

    ComboBox2.Clear 

    For Each aCell In ThisWorkbook.Sheets("Sheet1").Range("A1:E1") 
     If InStr(1, aCell.Value, ",") Then _ 
     tmpStr = Split(aCell.Value, ",")(0) 

     If Trim(ComboBox1.Value) = Trim(tmpStr) Then _ 
     ComboBox2.AddItem aCell.Value 
    Next aCell 
End Sub 

'~~> Procedure to remove duplicates 
Private Sub RemoveDuplicates(cmb As ComboBox) 
    Dim a As Integer, b As Integer, c As Integer 

    a = cmb.ListCount - 1 
    Do While a >= 0 
     For b = a - 1 To 0 Step -1 
      If cmb.List(b) = cmb.List(a) Then 
       cmb.RemoveItem b 
       a = a - 1 
      End If 
     Next b 
     a = a - 1 
    Loop 
End Sub 
関連する問題