这可以如下完成。
1)转到Excel功能区中的“开发人员”选项卡。单击插入,选择一个命令按钮(ActiveX控件),并将其放在您想要它的工作表上。
2)双击按钮,这将打开编辑器。您应该看到:
Private Sub CommandButton1_Click()
End Sub
3)添加行UserForm1.Show
的代码块内。这应该看起来像:
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
4)现在我们将创建用户窗体。在编辑器的左边你会看到一个名为“Projects - VBA Project”的部分,在这个列表中你应该看到你的工作簿。右键单击工作簿的名称,然后单击插入 - >用户窗体。
5)使用工具箱将正确的组件拖到用户窗体中。您可以自由定制此表单,因为您认为可以根据您的需求添加或删除功能。我看起来像这样:
6)在项目选项卡中,您将看到名为UserForm1的用户表单。右键单击此用户窗体并单击“查看代码”。粘贴以下代码:
Private Sub CommandButton1_Click()
Unload UserForm1
End Sub
Private Sub UserForm_Initialize()
Dim lastColumn As Long
lastColumn = Worksheets("Sheet1").Cells(1,Columns.Count).End(xlToLeft).Column
For i = 1 To lastColumn
UserForm1.ComboBox1.AddItem (Worksheets("Sheet1").Cells(1, i))
Next
End Sub
Private Sub CommandButton2_Click()
Dim columnName As String
Dim columnIndex As Integer
Dim min As Double
Dim max As Double
If Not (ComboBox1.SelText = "" And TextBox1.Text = "" And TextBox2.Text = "") Then
columnName = ComboBox1.SelText
min = TextBox1.Text
max = TextBox2.Text
Dim lastColumn As Long
lastColumn = Worksheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Column
For i = 1 To lastColumn
If Worksheets("Sheet1").Cells(1, i).Value = columnName Then
columnIndex = i
End If
Next
Dim cellValue As Double
Dim lastRow As Long
lastRow = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
cellValue = Worksheets("Sheet1").Cells(i, columnIndex).Value
' MsgBox CStr(cellValue) + "--" + CStr(cellValue > min) + "--" + CStr(cellValue < max)
If Not (cellValue >= min And cellValue <= max) Then
Worksheets("Sheet1").Cells(i, columnIndex).Value = 0
End If
Next
End If
Unload UserForm1
End Sub
7)更改组件名称(如CommandButton,ComboBox1等)以匹配您的UserForm。
代码是做什么的?
初始化:只要调用UserForm,它就会通过方法UserForm_Initialize()
。此方法查看您的工作表并确定所有列的名称。然后它将这些添加到组合框。
命令按钮1:“取消”,不做任何事情就退出UserForm。
命令按钮2:“确认”,此方法将转到您选择的列,并在所需的范围内进行检查。如果一个值超出该范围,那么它会将其设置为0.
我希望这可以帮到你!
通过'排序'你的意思是'纠正'? –