Dim s, s1, s2, s3
Select Case Len(cbo_sort1.Text) <> 0
Case Trim(cbo_sort1.Text) = "类别"
     s = "item_clsno"
Case Trim(cbo_sort1.Text) = "店内码"
     s = "item_no"
Case Trim(cbo_sort1.Text) = "商品名称"
     s = "item_name"
Case Trim(cbo_sort1.Text) = "账面数"
     s = "stock_qty"
Case Trim(cbo_sort1.Text) = "实盘数"
     s = "check_qty"
Case Trim(cbo_sort1.Text) = "盈亏数"
     s = "balance_qty"
 Case Trim(cbo_sort1.Text) = "进价"
     s = "in_price"
Case Trim(cbo_sort1.Text) = "售价"
     s = "sale_price"
Case Trim(cbo_sort1.Text) = "进价金额"
     s = "in_amount"
Case Trim(cbo_sort1.Text) = "售价金额"
     s = "sale_amount"
End Select
NextSelect Case Len(cbo_sort2.Text) <> 0
Case Trim(cbo_sort2.Text) = "类别"
     s1 = "item_clsno"
Case Trim(cbo_sort2.Text) = "店内码"
     s1 = "item_no"
Case Trim(cbo_sort2.Text) = "商品名称"
     s1 = "item_name"
Case Trim(cbo_sort2.Text) = "账面数"
     s1 = "stock_qty"
Case Trim(cbo_sort2.Text) = "实盘数"
     s1 = "check_qty"
Case Trim(cbo_sort2.Text) = "盈亏数"
     s1 = "balance_qty"
Case Trim(cbo_sort2.Text) = "进价"
     s1 = "in_price"
Case Trim(cbo_sort2.Text) = "售价"
     s = "sale_price"
Case Trim(cbo_sort2.Text) = "进价金额"
     s1 = "in_amount"
Case Trim(cbo_sort2.Text) = "售价金额"
     s1 = "sale_amount"
End SelectSelect Case Len(cbo_sort3.Text) <> 0
Case Trim(cbo_sort3.Text) = "类别"
     s2 = "item_clsno"
Case Trim(cbo_sort3.Text) = "店内码"
     s2 = "item_no"
Case Trim(cbo_sort3.Text) = "商品名称"
     s2 = "item_name"
Case Trim(cbo_sort3.Text) = "账面数"
     s2 = "stock_qty"
Case Trim(cbo_sort3.Text) = "实盘数"
     s2 = "check_qty"
Case Trim(cbo_sort3.Text) = "盈亏数"
     s2 = "balance_qty"
Case Trim(cbo_sort3.Text) = "进价"
     s2 = "in_price"
Case Trim(cbo_sort3.Text) = "售价"
     s2 = "sale_price"
Case Trim(cbo_sort3.Text) = "进价金额"
     s2 = "in_amount"
Case Trim(cbo_sort3.Text) = "售价金额"
    s2 = "sale_amount"
End SelectSelect Case Len(cbo_sort4.Text) <> 0
Case Trim(cbo_sort4.Text) = "类别"
     s3 = "item_clsno"
Case Trim(cbo_sort4.Text) = "店内码"
     s3 = "item_no"
Case Trim(cbo_sort4.Text) = "商品名称"
     s3 = "item_name"
Case Trim(cbo_sort4.Text) = "账面数"
     s3 = "stock_qty"
Case Trim(cbo_sort4.Text) = "实盘数"
     s3 = "check_qty"
Case Trim(cbo_sort4.Text) = "盈亏数"
     s3 = "balance_qty"
Case Trim(cbo_sort4.Text) = "进价"
     s3 = "in_price"
Case Trim(cbo_sort4.Text) = "售价"
     s3 = "sale_price"
Case Trim(cbo_sort4.Text) = "进价金额"
     s3 = "in_amount"
Case Trim(cbo_sort4.Text) = "售价金额"
     s3 = "sale_amount"
End SelectMsgBox s + "," + s1 + "," + s2 + "," + s31、如何通过数组及FOR语句简化以上代码?
2、如何使 combbox 无选项时 变量值也为空?
3、如何不通过反复的IF 语句实现,当其中一个变量值为空时,有以下可能的结果:
  当 S  为空 ,显示结果为 MsgBox  s1 + "," + s2 + "," + s3
  当 S1 为空, 显示结果为 MsgBox  s + "," + s2 + "," + s3
  当 S2 为空, 显示结果为 MsgBox  s + "," + s1 + "," + s3
  当 S3 为空, 显示结果为 MsgBox  s + "," + s1 + "," + s2
  当都有值时, 显示结果为 MsgBox s + "," + s1 + "," + s2 + "," + s3

解决方案 »

  1.   

    使用控件数组,代码修改如下:
        Dim i As Long
        Dim strText(3) As String
        
        For i = 0 To 3
            Select Case Trim(cbo_sort(i).Text)
                Case "类别"
                    strText(i) = "item_clsno"
                Case "店内码"
                    strText(i) = "item_no"
                Case "商品名称"
                    strText(i) = "item_name"
                Case "账面数"
                    strText(i) = "stock_qty"
                Case "实盘数"
                    strText(i) = "check_qty"
                Case "盈亏数"
                    strText(i) = "balance_qty"
                Case "进价"
                    strText(i) = "in_price"
                Case "售价"
                    strText(i) = "sale_price"
                Case "进价金额"
                    strText(i) = "in_amount"
                Case "售价金额"
                    strText(i) = "sale_amount"
            End Select
        Next
        MsgBox strText(0) + "," + strText(1) + "," + strText(2) + "," + strText(3)
      

  2.   

    Select Case Trim(cbo_sort(i).Text)提示 cbo_sort 子程序或函数未定义  目前情况如下: 共有四个 COMBBOX 分别名为 cbo_sort1,cbo_sort2,cbo_sort3,cbo_sort4 这四个COMBBOX 分别跟一组 optionbutton于不同的容器之中.此程序目的是制作排序程序,反馈的结果赋值给 SQL 语句,要求 如果其中一个变量的结果为空,就不能有返回值
      

  3.   


    '所有combobox的sorted都“不要”设置为true
    '注意itm元素与s1元素的对应关系
    '因为我用combobox的listindex组结果,
    '所有注意listindex与itm元素位置的对应关系Private Sub Command1_Click()
        Dim s, s1(9), i%
        
        s1(0) = "item_clsno": s1(1) = "item_no":
        s1(2) = "item_name":  s1(3) = "stock_qty":
        s1(4) = "check_qty":  s1(5) = "balance_qty":
        s1(6) = "in_price":   s1(7) = "sale_price"
        s1(8) = "in_amount":  s1(9) = "sale_amount"
        
        For i = 1 To 4
            If Me("cbo_sort" & i).Text <> "" Then
               s = s & s1(Me("cbo_sort" & i).ListIndex) & ","
            End If
        Next
        If s <> "" Then s = Left(s, Len(s) - 1)
        MsgBox s
    End SubPrivate Sub Form_Load()
        Dim i%, j%, itm$(9)
        
        itm(0) = "类别":     itm(1) = "店内码"
        itm(2) = "商品名称": itm(3) = "账面数"
        itm(4) = "实盘数":   itm(5) = "盈亏数"
        itm(6) = "进价":     itm(7) = "售价"
        itm(8) = "进价金额": itm(9) = "售价金额"
        
        For i = 0 To 9
            If i > 0 And i <= 4 Then Me("cbo_sort" & i).Text = ""
            For j = 1 To 4
                Me("cbo_sort" & j).AddItem itm(i)
        Next j, i
       
    End Sub
      

  4.   

    3楼的答案非常精彩,多谢,但还有一个疑问没有解答,如图 这四个COMBBOX 分别跟一组 optionbutton于不同的容器之中. 每个都有一个升序与降序的选择,如何跟你的程序相结合???
      

  5.   

    图片上传不了,详细说一下: 我想实现的其实就想EXECL 里面的排序界面,其中 每一个COMBBOX 都与两个Optionbutton 相结合,Optionbutton 主要目的是作为升降序排列的选项。 最终目的结果想实现如下语句:
    select * 
    from pd_check 
    order by item_no desc,item_name, item_clno desc也就是每个Combbox 后面都跟一个升降序的判断。
      

  6.   


    '默认每组option应该选中升序,
    '假设option1-option8
    'option1和option2一组,
    'option3和option4一组
    '......Private Sub Command1_Click()
        Dim s, s1(9), s2, i%
        
        s1(0) = "item_clsno": s1(1) = "item_no":
        s1(2) = "item_name":  s1(3) = "stock_qty":
        s1(4) = "check_qty":  s1(5) = "balance_qty":
        s1(6) = "in_price":   s1(7) = "sale_price"
        s1(8) = "in_amount":  s1(9) = "sale_amount"
        
        For i = 1 To 4
            If Me("cbo_sort" & i).Text <> "" Then
               If Me("option" & (2 * i - 1)).Value Then
                  s2 = s1(Me("cbo_sort" & i).ListIndex) & " " & "asc"
               Else
                  s2 = s1(Me("cbo_sort" & i).ListIndex) & " " & "desc"
               End If
               s = s & s2 & ","
            End If
        Next
        If s <> "" Then s = Left(s, Len(s) - 1)
        MsgBox s
    End SubPrivate Sub Form_Load()
        Dim i%, j%, itm$(9)
        
        itm(0) = "类别":     itm(1) = "店内码"
        itm(2) = "商品名称": itm(3) = "账面数"
        itm(4) = "实盘数":   itm(5) = "盈亏数"
        itm(6) = "进价":     itm(7) = "售价"
        itm(8) = "进价金额": itm(9) = "售价金额"
        
        For i = 0 To 9
            If i > 0 And i <= 4 Then
               Me("cbo_sort" & i).Text = ""
               Me("option" & (2 * i - 1)).Value = True
            End If
            For j = 1 To 4
                Me("cbo_sort" & j).AddItem itm(i)
        Next j, i
       
    End Sub
      

  7.   

    发现新问题: 1、在每一个 cbo_sort" & i 中 均重复显示  itm(i) ,显示结果如下:类别
    店内码
    商品名称
    账面数
    实盘数
    盈亏数
    进价
    售价
    进价金额
    售价金额
    类别
    店内码
    商品名称
    账面数
    实盘数
    盈亏数
    进价
    售价
    进价金额
    售价金额2、添加一新项目 该如何添加