输入a,b,c三个数,按照从大到小次序排序 用VBA编程做

输入a,b,c三个数,按照从大到小次序排序 用VBA编程做,第1张

其一:你的程序小于号"<"要全都变成大于号">"或者大于号">"全改成小于号"<"这样你羡茄的逻辑和结果才正确

其二:不知道你的

a = Val(TextBox1.Text)

b = Val(TextBox2.Text)

c = Val(TextBox3.Text)

是否有问题,我vba中,我没见过这种写法,我是基于excel中的vba,当然这个写法在vb中成立

三游宽:建议你把Private Sub UserForm_Activate()改兄磨察掉,基本上问题出在这

写个private sub aa()

写上上面的逻辑

end sub

再用command_click控件执行

有些特殊排序要求,对于EXCEL标准功能是无法解决的。这时就可以用VBA来对应。例如:有一张原始数据表,如陆樱芹图:

根据此原始数据建立了一张分类汇总数据表,如图:

要求是,当明细表数据发生变更时,希望汇总表能自动排序。这样的要求,用手工排序就无法自动了。这样的要求只能依赖于VBA。首先编制一个排序的程序,代码如下:

Sub 排序()

Dim mYsheet As String

Dim arr(1 To 3, 1 To 2)

Dim I, J, K As Integer

Dim M_S1 As String '存放交换地区名

Dim M_S2 As Double '存放交换销售额

mYsheet = "汇总排名"

Sheets(mYsheet).Select

'将数值读取到数组中

For I = 1 To 3

  For J = 1 To 2

      arr(I, J) = Cells(I + 1, J + 1)

  Next J

Next I

'排序

For I = 1 To 2

 For J = I + 1 To 3

     If arr(I, 2) <arr(J, 2) Then

        M_S1 = arr(I, 1)

       颂族 M_S2 = arr(I, 2)

        arr(I, 1) = arr(J, 1)

        arr(I, 2) = arr(J, 2)

        arr(J, 1) = M_S1

        arr(J, 2) = M_S2

     End If

 Next J

Next I

'将数组的排序结果存放到单元格中

For I = 1 To 3

 Cells((I + 1), 2) = arr(I, 1)

Next I

End Sub

再编制一个单元格内容变更的事件触发程序,代码如下:(注:这个代码要放在原始数据表中)

Private Sub worksheet_change(ByVal target As Range)

If target.Column <= 4 Then

 早毕  排序

End If

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12439773.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存