3

在编写我的 VBA 宏时,我经常使用“GoTo”以便在不离开 Sub 的情况下跳转到宏的前一部分。现在我正在将所有宏转换为 Google Apps 脚本,我正在尝试找到“GoTo”的等效项。

Sub MySub()
Dim sheetname1 As String
Dim sheetname2 As String
On Error GoTo Err
       sheetname1 = ActiveSheet.Name
           Sheets.Add After:=Sheets(Sheets.Count)
           ActiveSheet.Name = "passwords"
       sheetname2 = ActiveSheet.Name
GoTo aftererr
Err:
MsgBox Error(Err)
Exit Sub
aftererr:

这只是我使用 GoTo 的一个例子。但是,我在许多其他方面都需要它用于我的新脚本;不仅仅是为了重定向错误。例如:

 function MyFunction() {
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sh = ss.getActiveSheet();
 if(criteraA == criteraB){
 sh.offset(1,0).activate();
 var i=i + 1;
 //?? GoTo ??
 }else{
 var i=0;
 sh.getRange(row, column)(1,sr.offset(0,1).getColumn()).activate();
 }
4

1 回答 1

4

您不需要 GoTo,大多数人会争辩说,即使它存在,使用它也是一种糟糕的编程习惯。使用其他控制结构将完成这项工作。

if() {
} else if() {
} else {
}

for(;;) {
   continue;
   break;
}

while() {
}

do {
} while();

switch() {
case:
default:
}

// for errors
throw "Error string"

try {
} catch(error) {
}

您将不得不稍微调整您的逻辑,但这将导致更好的更易于维护的代码。

于 2013-06-17T18:18:36.223 回答