|
本帖最后由 wajour 于 2012-10-21 12:32 编辑
在Excel的使用中,我们在临时的查看表格是,可能会用到以下操作,选中一个单元格区域或者是分散的单元格区域或者是筛选后的某个区域,查看状态栏,求和,计数,平均,最大值,最小值等信息,而状态栏信息在Excel是无法直接复制的,(往往都是手工抄下来先,或者是嘴巴上顺口记一下,自言自语呃{:soso_e100:})更有时候可能由于金额大无法完整显示数值的问题。
今天特此分享一个小窗体控件,可以将选定的内容对应的结果导直接导进单元格
本控件包含一个模块一个窗体:在此分享给大家
模块一:主要用于计算("平均值", "计数", "计数值", "最大值", "最小值", "求和")
Public ARR2(1 To 6) ' 定义一个数组,分别存放("平均值", "计数", "计数值", "最大值", "最小值", "求和")的结果
Dim arr
Sub 状态栏信息()
On Error Resume Next
ReDim arr(1 To Selection.Count) '定义一个数组用于存放当前选定内容
For Each CELL In Selection '循环读取选定内容,写进数组,并记录空白单元格数量
If Not IsEmpty(CELL) Then
arr(i + 1) = CELL
Else
空白 = 空白 + 1
End If
i = i + 1
Next
With Application.WorksheetFunction '调用工作表函数
ARR2(1) = .Round(.Average(arr), 4) '取得平均值
ARR2(2) = .CountA(arr) - 空白 '取得计数
ARR2(3) = .Count(arr) '取得计数值
ARR2(4) = .Max(arr) '取得最大值
ARR2(5) = .Min(arr) '取得最小值
ARR2(6) = .Sum(arr) '取得求和
End With
UserForm1.Show (0) '显示窗体控件
End Sub
窗体代码:
初始化
Private Sub UserForm_Initialize()
With UserForm1
.Caption = "状态栏信息" '设置窗体标题
.CommandButton1.Caption = "导出" '设置按钮1Caption属性
arr = Array("平均值", "计数", "计数值", "最大值", "最小值", "求和") '静态定义数值
For i = 1 To 6 '循环调用数组,设置窗体对应标签,文本框属性
Me.Controls("Label" & i).Caption = arr(i - 1)
Me.Controls("TextBox" & i).Text = ARR2(i)
Next
End With
End Sub
导出按钮:
Private Sub CommandButton1_Click() '"导出"按钮单击触发执行
Dim rng As Range
On Error Resume Next
Dim arr(1 To 6, 1 To 2) '定义6*2的数组,用于存放6个统计指标,结果
With UserForm1
For i = 1 To 6 '循环读取控件标签与文本框值写入数组
arr(i, 1) = Me.Controls("Label" & i).Caption
arr(i, 2) = Me.Controls("TextBox" & i).Text
Next
.Hide '隐藏窗体
Set rng = Application.InputBox("请选择输出单元格", "请选择", Default:=Selection(1).Address, Type:=8) '显示inputbox提示用户选择单元格
If Not rng Is Nothing Then '如果选择单元格
Unload Me '将窗体从内存卸载
rng(1).Resize(6, 2) = arr '将数组写入单元格
Else '否则,即用户未选择单元格
.Show '显示窗体
End If
End With
End Sub
窗体布局
在计算上大区域可能速度可能会慢,初学VBA,希望各位老师能够指导一下,提升一下速率
|
评分
-
2
查看全部评分
-
|