0
私は、ユーザーフォームを介して大量のデータを記録するために使用されるスプレッドシートを作成しました。このユーザーフォームでは、初期データは常にスプレッドシート内のマスターデータタブに移動します。しかし私の問題は、別の3つのワークシート、ws2、ws3、ws4があることです。userformを使用して異なるタブにデータを送信する方法は?
ユーザーフォーム内の4つのフィールドに基づいて、このデータがws2 & ws3、またはws3、ws2、ws2、ws4に含まれる必要があるかどうかを判断する16の異なる結果があります。次のようにWS 4など....
のルールは以下のとおりです。
は、誰かが私には必要なシートの間で、この情報を取得する方法を教えてくださいすることができます。以下はユーザーフォームのコードです
Dim iRow As Long
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Dim ws4 As Worksheet
Dim Nextnum As Long
Dim Xnum As Long
Set ws1 = Worksheets("MasterData")
Set ws2 = Worksheets("X")
Set ws3 = Worksheets("A")
Set ws4 = Worksheets("C")
Nextnum = Sheets("MasterData").Range("A2").End(xlDown).Value + 1
Xnum = Sheets("X").Range("A2").End(xlDown).Value + 1
ANum = Sheets("A").Range("A2").End(xlDown).Value + 1
CNum = Sheets("C").Range("A2").End(xlDown).Value + 1
'find first empty row in database
mrow = ws1.Cells.Find(what:="*", SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
'copy the data to the database
ws1.Cells(mrow, 1).Value = Nextnum
ws1.Cells(mrow, 2).Value = Format(Date, "DD/MM/YYYY")
ws1.Cells(mrow, 3).Value = Format(Time, "HH:MM:SS")
ws1.Cells(mrow, 4).Value = CInt(Format(Date, "WW"))
ws1.Cells(mrow, 5).Value = Format(Date, "MMM-YY")
ws1.Cells(mrow, 6).Value = CInt(Format(Date, "YYYY"))
ws1.Cells(mrow, 7).Value = 1
ws1.Cells(mrow, 8).Value = TxtWeight.Value * (1300/1000)
ws1.Cells(mrow, 9).Value = Application.WorksheetFunction.VLookup(ComboBrd.Value, Sheets("Lookup Vals").Range("G:H"), 2, False)
ws1.Cells(mrow, 10).Value = Application.UserName
If ComboBrd.Value = "Mn" Then ws1.Cells(mrow, 11).Value = Application.WorksheetFunction.VLookup(ComboCom.Value, Sheets("Lookup Vals").Range("L:N"), 2, False) Else
If ComboBrd.Value = "Pr" Then ws1.Cells(mrow, 11).Value = Application.WorksheetFunction.VLookup(ComboCom.Value, Sheets("Lookup Vals").Range("P:R"), 2, False) Else
If ComboBrd.Value = "Vot" Then ws1.Cells(mrow, 11).Value = Application.WorksheetFunction.VLookup(ComboCom.Value, Sheets("Lookup Vals").Range("P:R"), 2, False)
ws1.Cells(mrow, 12).Value = TxtRecDate.Value
ws1.Cells(mrow, 13).Value = ComboPD.Value
ws1.Cells(mrow, 14).Value = ComboNP.Value
ws1.Cells(mrow, 15).Value = ComboBrd.Value
ws1.Cells(mrow, 16).Value = ComboCom.Value
ws1.Cells(mrow, 17).Value = TxtAdditional.Value
ws1.Cells(mrow, 18).Value = TxtDOD.Value
ws1.Cells(mrow, 19).Value = TxtBn.Value
ws1.Cells(mrow, 20).Value = TxtFS.Value
ws1.Cells(mrow, 21).Value = ComboPrdG.Value
ws1.Cells(mrow, 22).Value = ComboIss.Value
ws1.Cells(mrow, 23).Value = TxtUni.Value
ws1.Cells(mrow, 24).Value = TxtWet.Value
ws1.Cells(mrow, 25).Value = TxtInc.Value
ws1.Cells(mrow, 26).Value = TxtDet.Value
ws1.Cells(mrow, 27).Value = TxtShr.Value
誰でも助けていただければ幸いです。
おかげで、
トライaddineすべてのユーザーフォームのオブジェクトの前に 'Me.'(このコードは、ユーザーフォームでの内側に位置している場合)。 'ws1.Cells(mrow、8).Value = Me.TxtWeight.Value *(1300/1000)'のように 'ws1.Cells(mrow、8).Value = TxtWeight.Value *(1300/1000) –