0
我對編碼和vba相當陌生,而且我很難嘗試將值分配給下一個空單元格,而沒有在宏結束之前覆蓋第一個值。如何在宏未結束前將值賦給下一個空單元格?
我有一個帶有48個複選框的用戶窗體(標記爲複選框49-106)。根據用戶選擇的複選框,我希望與該複選框關聯的值打印在工作表故障模式的列中。代碼將值打印到正確的列,但是如果勾選了多個複選框,則僅顯示最後一個複選框的值。
Dim wsDataTable As Worksheet
Dim wsFM As Worksheet
Dim text1 As String
text1 = TextBox1.Value
Set wsDataTable = Worksheets("Data Table")
Set wsFM = Worksheets("Failure Modes")
iRow = wsDataTable.Cells.Find(What:=text1, SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Row
hRow = Worksheets("Failure Modes").Cells(Rows.Count, 1).End(xlUp).Row
If CheckBox49.Value = True Then
wsDataTable.Cells(iRow, 59).Value = "A1 "
wsFM.Cells(hRow, 3).End(xlUp).Offset(1, 0) = "A1 "
Else
wsDataTable.Cells(iRow, 59).Value = ""
End If
If CheckBox50.Value = True Then
wsDataTable.Cells(iRow, 60).Value = "B1 "
wsFM.Cells(hRow, 3).End(xlUp).Offset(1, 0) = "B1 "
Else
wsDataTable.Cells(iRow, 60).Value = ""
End If
If CheckBox51.Value = True Then
wsDataTable.Cells(iRow, 61).Value = "C1 "
wsFM.Cells(hRow, 3).End(xlUp).Offset(1, 0) = "C1 "
Else
wsDataTable.Cells(iRow, 61).Value = ""
End If
If CheckBox52.Value = True Then
wsDataTable.Cells(iRow, 62).Value = "D1 "
wsFM.Cells(hRow, 3).End(xlUp).Offset(1, 0) = "D1 "
Else
wsDataTable.Cells(iRow, 62).Value = ""
End If
如果複選框49被選中,在工作表中故障模式列3將顯示:
A1
如果複選框49,50,51,52被選中,在工作表中故障模式列3將顯示:
D1
我想如果當複選框49,50,51,52被選中,在工作表中故障模式列3將顯示:
A1
B1
C1
D1
我最初認爲在這裏使用循環會有所幫助,但由於我希望該值也存儲在工作表數據表中,所以我很難執行該循環。
任何幫助將不勝感激!
謝謝!代碼現在可用。我會盡量簡化它,但我認爲我需要更多練習。再次感謝你!!! – ducky
@ducky不客氣。當它解決你的問題時,請[標記答案](https://stackoverflow.com/help/someone-answers)(將複選標記爲綠色)。謝謝。 –