4个带参数的5个语句该怎样写?
sub 排序(cansu1,cansu2,cansu3,cansu4 AS STRING)
Sheets("工作").Select: Cells.Select    '选择总个表作为排序的区间 cansu1,cansu2,cansu3,为列名 cansu4为xlAscending 或xlDescending
   Selection.Sort Key1:=Range("cansu1"), Order1:=cansu4, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin, DataOption1:=xlSortNormal  '按 E列长警值有标题行升序排序
        Range("B1:B120").Select:  Selection.copy              '选择拷贝对应的物品名称
     Sheets("有关结果").Select:    Columns("cansu2:cansu2").Select     '选择对应的物品名称的粘贴位置
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False  '将长警值的名称数值性粘贴有关结果的E列
    Sheets("工作").Select: Range("cansu11:cansu1120").Select:  Selection.copy  '选择拷贝对应的排序值
    Sheets("有关结果").Select:    Columns("cansu3:cansu3").Select          '选择拷贝对应的排序值的粘贴位置
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False  '将长警值的排序值 数值性粘贴有关结果的F列
 end sub   
这个子程序是供调用的 但我只会按照通常的规则写 在同一个工作簿同一个模块内 call排序(D,C,D,xlAscending) 不能运行 ,查来查去是 带参数的语句写法不对 我实在找不到规则 盼请高人指教 

解决方案 »

  1.   


    sub 排序(cansu1,cansu2,cansu3,cansu4 AS STRING) 
        Sheets("工作").Select: Cells.Select    
        '选择总个表作为排序的区间 cansu1,cansu2,cansu3,为列名 cansu4为xlAscending 或xlDescending 
        '上面参数中: cansu4 AS STRING /表示 cansu4 为字符串,
        '但是你上面注解中说 cansu4为xlAscending 或xlDescending  有问题.
        Selection.Sort Key1:=Range("cansu1"), Order1:=cansu4, Header:=xlYes, _  
        'cansu1为参数,此处不能用 "cansu1" 这表示字符串.
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom,  _
        SortMethod:=xlPinYin, DataOption1:=xlSortNormal  
         '按 E列长警值有标题行升序排序 
          Range("B1:B120").Select:  Selection.copy             
         '选择拷贝对应的物品名称 
          Sheets("有关结果").Select:    Columns("cansu2:cansu2").Select    
         '选择对应的物品名称的粘贴位置
          '此处也是一样.  "cansu2:cansu2" 表示字符串,应该除去引号. cansu2 & ":" & cansu2
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False  
         '将长警值的名称数值性粘贴有关结果的E列 
        Sheets("工作").Select: Range("cansu11:cansu1120").Select:  Selection.copy  '选择拷贝对应的排序值 
        Sheets("有关结果").Select:    Columns("cansu3:cansu3").Select          '
         '选择拷贝对应的排序值的粘贴位置 
        '此处也是一样.  "cansu3:cansu3" 表示字符串,应该除去引号. cansu3 & ":" & cansu3
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False  '将长警值的排序值 数值性粘贴有关结果的F列 
    end sub  以上做了部分修改:
    主要LZ要弄清楚以下二个问题点:
    1.参数说明数据类型的,传入数据与参数的类型必须一致.
    2.在子程序中,参数的引用就象变量的引用是一样的,不用再加上引号.
      

  2.   

    谢谢 5句帮改了2句 还有3句具体该怎么该 请帮改正
    1. Selection.Sort Key1:=Range("cansu1"),
    2. Order1:=
    3.Range("cansu1 1:cansu1 120").Select: 
    还有cansu4(为xlAscending 或xlDescending) 要怎么定义?
     
      

  3.   

    谢谢2楼 5句帮改了2句 还有3句具体该怎么该 请帮改正 
    1. Selection.Sort Key1:=Range("cansu1"), 
    2. Order1:= cansu4
    3.Range("cansu1 1:cansu1 120").Select: 
    还有cansu4(为xlAscending 或xlDescending) 要怎么定义?