如何解决如何以正确的方式将 VBA 中的 For 循环转换为 Typescript
我正在尝试将宏 VBA 转换为 Office 脚本(Typescript)以在 Excel Web 中运行
Sub process()
On Error GoTo Error_Handler
' concatenate Macro
Dim var As String
Dim row As Integer
Dim column As Integer
Dim concatened As String
Dim hours() As String
Dim cursor As Integer
Dim person As Integer
Dim sum As Double
' zeroing columns
For column = Sheets("Parameters").Cells(2,4) To Sheets("Parameters").Cells(2,5)
For row = Sheets("Parameters").Cells(2,2) To Sheets("Parameters").Cells(2,3)
Sheets("Projects").Cells(row,column) = ""
Next row
Sheets("Projects").Cells(3,column) = ""
Next column
上下文是:我有一个名为 Projects 的主工作表,然后这个循环扫描由名为 Parameters 的工作表确定的列和行并删除其中的数据
细胞 2,4; 2,5; 2,2; 2,3 告诉他们从哪里开始,从哪里停止,按列和行
起初我是这样做的:
//catch active worksheet
let selectedWorksheet = workbook.getActiveWorksheet();
// select range to scan
let range = selectedWorksheet.getRange("EK3:HL3");
// zeroing columns
range.setValue("");
但我想像 VBA 代码一样自动化“EK3:HL3”,通过参数工作表进行编辑,而不是在代码中手动更改,以防 EK3:HL3 范围变大....
如果你们能点亮我的心,我会很高兴
解决方法
您可以尝试使用 getRangeByIndexes
。
const wsParameters = Workbook.getWorksheet("Parameters")
const wsProjects = Workbook.getWorksheet("Projects")
const startRow = wsParameters.getRange("B2").getValue()
const startCol = wsParameters.getRange("D2").getValue()
const noRow = wsParameters.getRange("C2").getValue() - startRow + 1
const noCols = wsParameters.getRange("E2").getValue() - startCol + 1
let rng = wsProjects.getRangeByIndexes(startRow,startCol,noRow,noCols)
rng.setValue("")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。