2

我有一个目前在 MS Excel 中使用的电子表格。我正在尝试将工作表转换为 Google Docs 电子表格,但无法让我的 excel 脚本在 google docs 中运行。

这是一个简单的累积脚本,在一行单元格中重复:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
      With Target
         If .Address(False, False) = "C3" Then
            If IsNumeric(.Value) Then
               Application.EnableEvents = False
               Range("C4").Value = Range("C4").Value + .Value
               Application.EnableEvents = True
            End If
         End If
      End With

如果有人可以将其翻译成我在谷歌文档中需要的内容,或者甚至更好地对其进行改进,以便脚本覆盖整行(例如:如果单元格c4, ,d4并且分别具有,e4的值并且我放入: , 那么将显示;如果我输入: ,那么会是,如果我输入,那么会显示)。5712c310c415d36d4137e3e419

4

2 回答 2

0

您不能直接将 VBA 函数转换为 Google Apps Script,但如果您将 VBA 作为规范,通常可以创建类似的函数。请注意,Excel VBA 中提供的许多功能特定于 UI 和 Windows 环境,在 GAS 中没有等效功能(Application.EnableEvents例如)。

在这种情况下,VBA 函数似乎正在响应电子表格中特定单元格中的更改。在 GAS 中,我们可以使用onEdit触发函数。触发函数将提供事件信息,我们可以对这些信息进行解码,以确定编辑发生在哪里,以及更改单元格中的值是什么。有关详细信息,请参阅了解事件,尤其是电子表格编辑事件

以下是我认为 VBA 函数在 Google Apps 脚本中的显示方式。我isNumber()Validate decimal numbers in JavaScript - IsNumeric()中借用了一个辅助函数 ,以简化对单元格 C3 内容的验证。

function onEdit(event) {
  if (event.range.getA1Notation() == "C3") {
    if (isNumber(event.value) {
      // C4 = C4 + C3
      var c4 = event.range.offset(0,1); // one cell to the right
      var c4Val = c4.getValue() + event.value;
      c4.setValue(c4Val);
    }
  }
}

// From stackoverflow.com/a/1830844/1677912
function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}
于 2013-12-27T16:46:27.467 回答
-1

有你需要的命令。 runExample() in Javascript 与您的 sub 有一些相似之处。

于 2013-05-03T20:59:33.347 回答