2017-12-21 21 views
0

Excel VBAで小さなキャッシャープログラムを実行しようとしています。しかし、私は追加の注文を追加したい部分に固執しています。私のフォームには、4つのコンボボックスがあります。ドリンク、サイド、スペシャリティー、個人。私が達成したいのは、コンボボックスの値をフォーム内のリストボックスに追加し、追加ボタンをクリックすると、自分が持っているシート(「表1」)に追加することです。値がない場合、そのコンボボックスは無視され、次のチェックボックスがチェックされます。ここでVBA Excelを使用してデータを保存できません

は私のコードです:何が起こっている、私は値「SMBのBUCKET」と「ナチョス」を選択したと仮定すると、

Private Sub cmdadd_Click() 

Range("A2").Select 

If MsgBox("ADD ORDERS?", vbYesNo, "CONFIRMATION") = vbYes Then 
Application.ScreenUpdating = False 

Dim ws As Worksheet 
Dim ws1 As Worksheet 
Dim lo As ListObject 
Dim lr As ListRow 
Set ws = Sheets("TABLE 1") 
Set ws1 = Sheets("Overview") 
ws.Unprotect "321321" 
Set lo = ws.ListObjects(1) 
Set lr = lo.ListRows.Add 

lr.Range(1, 1).Value = Date 

If cmbdrinks.Value = "SMB BUCKET" Then 
lr.Range(1, 2).Value = cmbdrinks.Value 
ListBox1.AddItem (cmbdrinks.Value) 
txtbill.Value = txtbill.Value + 258 
lr.Range(1, 3).Value = 258 
lr.Range(1, 4).Value = Time 
lr.Range(1, 4).NumberFormat = "h:mm:ss AM/PM" 
lr.Range(1, 5).Value = ws1.Range("I4").Value 

ElseIf cmbdrinks.Value = "SMB TOWER" Then 
lr.Range(1, 2).Value = cmbdrinks.Value 
ListBox1.AddItem (cmbdrinks.Value) 
txtbill.Value = txtbill.Value + 288 
lr.Range(1, 3).Value = 288 
lr.Range(1, 4).Value = Time 
lr.Range(1, 4).NumberFormat = "h:mm:ss AM/PM" 
lr.Range(1, 5).Value = ws1.Range("I4").Value 

If cmbside.Value = "NACHOS" Then 
    lr.Range(1, 2).Value = cmbside.Value 
    ListBox1.AddItem (cmbside.Value) 
    txtbill.Value = txtbill.Value + 58 
    lr.Range(1, 3).Value = 58 
    lr.Range(1, 4).Value = Time 
    lr.Range(1, 4).NumberFormat = "h:mm:ss AM/PM" 
    lr.Range(1, 5).Value = ws1.Range("I4").Value 

ElseIf cmbside.Value = "FRENCH FRIES" Then 
    lr.Range(1, 2).Value = cmbside.Value 
    ListBox1.AddItem (cmbside.Value) 
    txtbill.Value = txtbill.Value + 48 
    lr.Range(1, 3).Value = 48 
    lr.Range(1, 4).Value = Time 
    lr.Range(1, 4).NumberFormat = "h:mm:ss AM/PM" 
    lr.Range(1, 5).Value = ws1.Range("I4").Value 

Else 
End If 


Else 
End If 

は、私が「CMDADD」ボタンをクリックしたときに、それが格納されていることです私のリストボックスのデータには問題はなく、SMBバケットとNACHOSがリストされています。「TXTBILL」に表示されている価格も正しいです。しかし、私の最初のコンボボックスで「SMBバケット」を選択したにもかかわらず、私のシート「テーブル1」に保存されているデータには、この例では「NACHOS」という最後に追加したアイテムしか含まれていません。

私はステートメントを間違って入れ子にしていると思いますが、ループステートメントを使用する必要がありますか?誰かが私のこの小さなプロジェクトを通じて私を導くことができれば幸いです。私が望むことを達成するための簡単な方法があれば、私は非常に助けを感謝します!

ありがとうございます。

答えて

0

結果を格納する行が1つしか作成されていないという問題があります。そのたびに値を上書きしています。各アイテムに新しいリスト行が必要です。これは、ナチョスやフライドポテトの行を追加します

Set lr = lo.ListRows.Add 
lr.Range(1, 1).Value = Date 

:あなたのElseIf cmbdrinks.Value = "SMB TOWER" Then書の下で

は、次の2行を追加します。

また、Elseブロックに何もない場合は、それを含める必要はありません。次のように

あなたIf…Thenステートメントが使用できます

If <test condition> Then 
ElseIf <test condition> Then 
End If 
関連する問題