我正在编辑我录制的这段代码,我想知道如何用变量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;
}
答案 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%,但我认为它会正常工作。