2013-05-03 76 views
2

我有一个电子表格,我目前在MS Excel中使用。我试图将该工作表转换为Google文档电子表格,但无法让我的Excel脚本在Google文档中正常工作。Excel到Google文档 - 脚本

这是一整行的细胞重复简单堆积脚本:

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 

如果任何人都可以翻译说什么,我需要在谷歌文档,甚至更好的改进它,以便脚本覆盖整个行(例如:如果细胞c4d4,和e4具有5712值分别和我投入c310,然后c4将显示15;如果我投入d36,那么d4将是13,并且如果我将7纳入e3,那么e4将显示19)。

+0

它给你一个错误? – Jim 2013-05-03 18:11:00

+0

说实话,我并不太热衷于Javascript。如果我尝试插入它,我会收到以下内容: 缺少;在陈述之前。 (第1行,“代码”文件)关闭 – user2347530 2013-05-03 18:27:29

+0

你的意思是“Visual Basic”,而不是Javascript,对吧? – Jim 2013-05-03 18:47:44

回答

-1

This有你需要的命令。 Javascript中的runExample()与你的子类有一些相似之处。

+0

@ user2347530,如果你发现这个可以接受的话,请点击大的向下箭头来“接受”这个,然后你可以点击向上的箭头来表明它是有用的,如果你愿意的话。谢谢! – Jim 2013-05-28 20:45:36

0

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

在这种情况下,VBA函数似乎是响应电子表格中特定单元格的更改。在GAS中,我们可以使用一个onEdit触发器功能。触发器功能将提供事件信息,我们可以解码以找出编辑发生的位置,以及更改的单元格中的值。请参阅Understanding Events,尤其是电子表格编辑事件了解更多信息。

以下是我认为VBA功能将出现在Google Apps脚本中的方式。我借用Validate decimal numbers in JavaScript - IsNumeric()的帮助函数isNumber()来简化单元格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); 
} 
相关问题