使用变量代替列

时间:2018-04-27 15:19:36

标签: vba variables

我正在编辑我录制的这段代码,我想知道如何用变量i替换列(" A:A")

代码是依次选择每个列并从最大到最小排序。

我使用i迭代列。问题是,我不确定如何转换当前引用范围A1的代码,或范围A:A代替使用列i。

    var $ = go.GraphObject.make;  
  myDiagram =
    $(go.Diagram, "myDiagramDiv",        {
        initialContentAlignment: go.Spot.Center,  // center the content
        "textEditingTool.starting": go.TextEditingTool.SingleClick,
        "textEditingTool.textValidation": isValidScore,
        layout: $(go.TreeLayout, { angle: 180 }),
        "undoManager.isEnabled": true
      });

  // validation function for editing text
  function isValidScore(textblock, oldstr, newstr) {
    if (newstr === "") return true;
    var num = parseInt(newstr, 10);
    return !isNaN(num) && num >= 0 && num <= 1;
  }

1 个答案:

答案 0 :(得分:0)

这里使用您的变量而不是硬编码范围进行快速重写:

Sub sort_largest()

    Dim i As Long

    i = 2
    Do Until Cells(1, i) = ""

        ActiveWorkbook.Worksheets("Pivot Tables").Sort.SortFields.clear
        ActiveWorkbook.Worksheets("Pivot Tables").Sort.SortFields.Add Key:=Cells(1, i), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Pivot Tables").Sort
            .SetRange Columns(i)
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With

        i = i + 1
    Loop

End Sub 

最棘手的一点是切换Range("A1"),因为循环中的列(变量i)是数字。相反,您可以使用非常方便的Cells()对象引用该范围,该对象采用两个参数:数字行和数字列。因此Range("A1")Cells(1, 1)相同,然后我们可以用变量替换第二个1

P.S。我没有测试这个,所以可能不是100%,但我认为它会正常工作。