欢迎光临散文网 会员登陆 & 注册

实例27-指定区域数字排序,实例28-拆分工作表为工作簿 Excel表格VBA编程实例 代码分享

2023-03-07 11:40 作者:凌霄百科_Excel办公程序  | 我要投稿

实例27-指定区域数字排序

Private Sub CommandButton排序_Click()

Dim sortrange As String

If ThisWorkbook.Worksheets("操作界面").Cells(2, "C").Value <> "" Then

sortrange = ThisWorkbook.Worksheets("操作界面").Cells(2, "C").Value

Else

MsgBox "对比区域地址不能为空"

Exit Sub

End If

'存储到变量(判断为数字)

Dim cellitem1

Dim data_array() As Double

Dim datacount As Long

For Each cellitem1 In ThisWorkbook.Worksheets("原数据").Range(sortrange)

If cellitem1.Value <> "" And IsNumeric(cellitem1.Value) = True Then

ReDim Preserve data_array(datacount)

data_array(datacount) = cellitem1.Value

datacount = datacount + 1

End If

Next cellitem1

If datacount <= 1 Then

Exit Sub '没有数据

End If

'排序数组

Call sortdata_asc(data_array)

'显示结果

With ThisWorkbook.Worksheets("排序结果")

.Columns(1).ClearFormats

.Columns(1).ClearContents

Dim i

For i = 0 To UBound(data_array)

.Cells(i + 1, 1).Value = data_array(i)

Next i

.Activate

End With

End Sub

Public Sub sortdata_asc(ByRef dataarray) '升序

Dim data1 As Double

Dim data2 As Double

Dim i, j

For i = 0 To UBound(dataarray) - 1

For j = i To UBound(dataarray)

If dataarray(i) > dataarray(j) Then

data1 = dataarray(i)

data2 = dataarray(j)

dataarray(i) = data2

dataarray(j) = data1

End If

Next j

Next i

End Sub

Public Sub sortdata_desc(ByRef dataarray) '降序

Dim data1 As Double

Dim data2 As Double

Dim i, j

For i = 0 To UBound(dataarray) - 1

For j = i To UBound(dataarray)

If dataarray(i) < dataarray(j) Then

data1 = dataarray(i)

data2 = dataarray(j)

dataarray(i) = data2

dataarray(j) = data1

End If

Next j

Next i

End Sub

Private Sub CommandButton排序2_Click()

Dim sortrange As String

If ThisWorkbook.Worksheets("操作界面").Cells(2, "C").Value <> "" Then

sortrange = ThisWorkbook.Worksheets("操作界面").Cells(2, "C").Value

Else

MsgBox "对比区域地址不能为空"

Exit Sub

End If

'存储到变量(判断为数字)

Dim cellitem1

Dim data_array() As Double

Dim datacount As Long

For Each cellitem1 In ThisWorkbook.Worksheets("原数据").Range(sortrange)

If cellitem1.Value <> "" And IsNumeric(cellitem1.Value) = True Then

ReDim Preserve data_array(datacount)

data_array(datacount) = cellitem1.Value

datacount = datacount + 1

End If

Next cellitem1

If datacount <= 1 Then

Exit Sub '没有数据

End If

'排序数组

Call sortdata_desc(data_array)

'显示结果

With ThisWorkbook.Worksheets("排序结果")

.Columns(1).ClearFormats

.Columns(1).ClearContents

Dim i

For i = 0 To UBound(data_array)

.Cells(i + 1, 1).Value = data_array(i)

Next i

.Activate

End With

End Sub

实例28-拆分工作表为工作簿


Private Sub CommandButton拆分_Click()

'判断工作簿名,文件夹地址不为空

With ThisWorkbook.Worksheets("操作界面")

If Trim(.Cells(2, "C").Value) = "" Or Trim(.Cells(6, "C").Value) = "" Then

MsgBox "参数不能为空"

Exit Sub

End If

'On Error GoTo 处理出错

'定义变量

Dim wbname As String

wbname = Trim(.Cells(2, "C").Value)

Dim savefolder As String

savefolder = Trim(.Cells(6, "C").Value)

End With

'处理表格

With Workbooks(wbname)

'循环判断

Dim i

For i = 1 To .Worksheets.Count

.Worksheets(i).Copy

ActiveWorkbook.SaveAs Filename:=savefolder & "\" & .Worksheets(i).Name & ".xlsx"

ActiveWorkbook.Worksheets(1).Name = .Worksheets(i).Name

ActiveWorkbook.Close savechanges:=True

Next i

End With

MsgBox "处理完成"

Exit Sub

处理出错:

MsgBox Err.Description

End Sub



实例27-指定区域数字排序,实例28-拆分工作表为工作簿 Excel表格VBA编程实例 代码分享的评论 (共 条)

分享到微博请遵守国家法律