多行复选框在1行中传输而不重叠

时间:2017-03-03 14:41:17

标签: vba excel-formula

我目前正在创建报告工具我在将详细信息从用户表单导出到我的数据库(Sheet1)时遇到问题。

方案: 如果用户在用户表单中选中了多个复选框,它将如何将数据从多个复选框传输到1行" G2"没有重叠?我使用命令按钮将数据传输到空单元格

示例用户窗体:

snapshot

@ Mike

Sample WorkSheet of Userform

1 个答案:

答案 0 :(得分:0)

可能有用的东西是:

Private Sub CommandButton4_Click()

    RowCount = Worksheets("Sheet1").Range("A1").CurrentRegion.Rows.count
    With Worksheets("Sheet1").Range("A1")
        If CheckBox1.Value = True Then
            .Offset(RowCount, 6).Value = .Offset(RowCount, 6).Value & vbCrLf & "Unable to remove footer"
        Else:
            .Offset(RowCount, 6).Value = ""
        End If
        If CheckBox2.Value = True Then
            .Offset(RowCount, 6).Value = .Offset(RowCount, 6).Value & vbCrLf & "Unable to use PMSectionHead as First Level header/section"
        Else:
            .Offset(RowCount, 6).Value = ""
        End If
    End With
End Sub

我将它添加到单元格中已有的值,并在添加的每个新值之前添加换行符。然后,您可能必须为每个If添加checkbox,因为您手动添加字符串。

您需要检查每一个以查看是否选中了多个checkbox。如果你在If ... ElseIf语句中有它们,它将在第一个真实语句之后停止,而不是检查所有其余语句。

修改

Private Sub CommandButton4_Click()
    Dim RowCounter
    RowCounter = 0

    RowCount = Worksheets("Sheet1").Range("A1").CurrentRegion.Rows.count
    With Worksheets("Sheet1").Range("A1")
        If CheckBox1.Value = True Then
            .Offset(RowCount + RowCounter, 6).Value = .Offset(RowCount + RowCounter, 6).Value & vbCrLf & "Unable to remove footer"
            RowCounter = RowCounter + 1
        Else:
            .Offset(RowCount, 6).Value = ""
        End If
        If CheckBox2.Value = True Then
            .Offset(RowCount + RowCounter, 6).Value = .Offset(RowCount + RowCounter, 6).Value & vbCrLf & "Unable to use PMSectionHead as First Level header/section"
            RowCounter = RowCounter + 1
        Else:
            .Offset(RowCount, 6).Value = ""
        End If
    End With
End Sub 

我在sub上添加了一个计数器,如果检查了任何一个复选框,它将计数,然后从0行开始往下走多行,检查1个复选框。不完全确定这是你想要的,但我认为它对你有用。