使用userform单选按钮在组更改后添加空行/分页符

时间:2018-06-18 07:58:02

标签: excel vba excel-vba

我搜索了其他问题,但遗憾的是,我找不到合适的答案。

我的用户形式:

enter image description here

我的代码:

Private Sub cancel_button_Click()
Unload Me
End Sub

Private Sub ok_button_Click()
If empty_row_radio = True Then
    MsgBox ThisRng.Address
    For i = ThisRng.Rows.Count To 2 Step -1
        If ThisRng.Cells(i, 1).Value <> ThisRng.Cells(i - 1, 1).Value Then
            ThisRng.Cells(i, 1).EntireRow.Insert
        End If
    Next
    Application.ScreenUpdating = True
    Unload Me
ElseIf page_break_radio_Click = True Then
    Dim j As Long
    For j = Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Row To 3 Step -1
        If Range("A" & j).Value <> Range("A" & j - 1).Value Then
                ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Range("A" & j)
        End If
    Next j
    Unload Me
End If
End Sub

Private Sub inputRange()
Dim ThisRng As Excel.Range
Set ThisRng = Application.InputBox("Select a range", "Get Range", Type:=8)
range_textbox = ThisRng.Address
End Sub

Private Sub UserForm_Initialize()
    Call inputRange
End Sub

在初始化用户表单时,我调用inputRange()子进行范围选择。之后,范围地址显示在textbox中。然后用户选择其中一个单选按钮,单击确定按钮,相应的代码将运行以插入空行或分页符。
我的问题是,它没有拿起选择范围,因此没有任何反应。

任何帮助?

1 个答案:

答案 0 :(得分:1)

有了免责声明,您可能永远不应该像这样编程,但是遵循VBA中的一些优秀做法,这是可行的:

  1. 从代码中删除行Dim ThisRng As Excel.Range
  2. 在表单顶部写下该行。
  3. 良好处理用户表单的一些示例: