2013-05-03 107 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); 
} 
相關問題