Excel vba用户表单设置单元格内部不会转到下一行

时间:2017-02-05 13:33:59

标签: excel vba checkbox colors

我正在尝试制作用户表单,我希望它能够改变下一个单元格的颜色。它每次我只使用字符串时工作,但每次我尝试更改单元格内部时,它都会停留在同一行而不是像它应该的那样向下一行。 当我在没有颜色部分的情况下运行它时,一切正常并且每次我想要时字符串都会进入下一行。但是当我插入单元格颜色的内部部件时,它不会向下移动1。 我想说,如果选中该复选框,则该行的第一列为绿色,如果未选中,则为红色。

以下是代码:

Private Sub btnEnter_Click()
Dim ssheet As Worksheet

If Me.tbTitle.Value = "" Or Me.tbDate.Value = "" Or Me.cmbGenre = "" Or Me.tbKeywords = "" Or Me.tbDirector = "" Or Me.tbCast = "" Then
    If MsgBox("Not all forms are completed. Do you want to continue?", vbQuestion + vbYesNo) <> vbYes Then
    Exit Sub
    End If
End If

Set ssheet = ThisWorkbook.Sheets("MovieList")

nr = ssheet.Cells(Rows.Count, 1).End(xlUp).Row + 1

If CheckBox1.Value = True Then
    ssheet.Cells(nr, 1).Interior.ColorIndex = 4
    Else: ssheet.Cells(nr, 1).Interior.ColorIndex = 3
End If

ssheet.Cells(nr, 2) = Me.tbTitle
ssheet.Cells(nr, 3) = Me.tbDate
ssheet.Cells(nr, 4) = Me.cmbGenre
ssheet.Cells(nr, 5) = Me.tbKeywords
ssheet.Cells(nr, 6) = Me.tbDirector
ssheet.Cells(nr, 7) = Me.tbCast
ssheet.Cells(nr, 8) = Me.tbComments

Call resetForm

End Sub

Sub resetForm()

Me.tbTitle = ""
Me.tbDate = ""
Me.cmbGenre = ""
Me.tbKeywords = ""
Me.tbDirector = ""
Me.tbCast = ""
Me.tbComments = ""
Me.tbTitle.SetFocus

End Sub

Private Sub CheckBox1_Click()

End Sub

Private Sub UserForm_Initialize()

'fill combobox
For Each cell In [ListGenre]
    Me.cmbGenre.AddItem
Next cell


End Sub
如果你能帮助我,我会很高兴的。谢谢。

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的上述代码,则您会遇到空单元格问题。

如果您的1列中没有任何字符串,则需要添加一些字符串,但如果您不想使用#34;清空#34;细胞,同时着色,你可以这样做。

好的,在代码的这两部分之间:

If CheckBox1.Value = True Then
     ssheet.Cells(nr, 1).Interior.ColorIndex = 4
  Else: ssheet.Cells(nr, 1).Interior.ColorIndex = 3 
End If

和这一个:

ssheet.Cells(nr, 2) = Me.tbTitle 
ssheet.Cells(nr, 3) = Me.tbDate
ssheet.Cells(nr, 4) = Me.cmbGenre 
ssheet.Cells(nr, 5) = Me.tbKeywords 
ssheet.Cells(nr, 6) = Me.tbDirector 
ssheet.Cells(nr, 7) = Me.tbCast 
ssheet.Cells(nr, 8) = Me.tbComments

你需要把这一行:

ssheet.Cells(nr, 1) = " "

你会得到你想要的东西!