2013-06-22 5 views
5

Sto cercando di aumentare il valore in una cella, ma nonostante la documentazione che dice che Visual Basic consente l'operatore + =, mi dà solo "Errore di compilazione: Previsto: espressione".L'operatore + = non esiste in VBA?

Range("CellName").Value += 1 

è ciò che è la rottura, ma se lo faccio

Range("CellName") = Range("CellName") + 1 

funziona benissimo

+1

'VBA' è molto diversa da' VB.net' - 'VBA' non è così severo con tipo, ma poi di nuovo' VB.net' non è così rigida come '' C# . Mi piacciono tutti - 'VBA' sembra limitato ma se stai giocando con Excel allora' VBA' fa parte dell'applicazione, quindi può essere davvero potente. – whytheq

risposta

10

No, non esiste in VBA.

VB.NET potrebbe richiedere += (anche se non ne sono nemmeno sicuro).

Dovrete usare

Range("CellName").Value = Range("CellName").Value+1 

Un buon riferimento può essere trovato here

+5

VB.Net sicuramente lo fa. –

3

Un elenco "ufficiale" di VBA-operatori si trovano in VBA aiuto qui:

Aiuto -> Microsoft Visual Basic -> Visual Basic for Applications Language Reference -> visiva basic Language Reference -> -> Operatori Operatori aritmetici (online here)

Forse polemicamente, ma il prossimo consiglio mi avrebbe risparmiato un sacco di tempo e mal di testa:

io direi che è meglio dimenticare tutto su VB e focus su VBA, in quanto le due lingue sono diverse. Le persone non menzionano "Oh, OCaml, APL, PHP o Fortran hanno operatori di incremento", poiché è fuori tema se l'ambito è VBA. Allo stesso modo, ciò che VB ha o non ha è off-topic, e in genere aggiunge solo confusione perché è la somiglianza. Meglio utilizzare il MS-Office fornito "locale" Visual Basic for Applications Language Reference come previsto dal sistema di guida, oppure online:

http://msdn.microsoft.com/en-us/library/office/gg264383%28v=office.15%29.aspx

+1

In base a tale elenco ufficiale, VBA non ha un operatore + =. Non dimenticare di rispondere effettivamente alla domanda. – Sheldon

1

E 'davvero fastidioso. Ho fatto le seguenti funzioni per rendere la vita un po 'più facile:

' ++ 
Function pp(ByRef x, Optional y = 1) 
    x = x + y 
    pp = x 
End Function 

' -- 
Function mm(ByRef x, Optional y = 1) 
    x = x - y 
    mm = x 
End Function 

non aiuta la vostra situazione come ci si devono ancora digitare la stessa quantità:

Range("CellName") = pp(Range("CellName")) 

ma per semplice ciclo incrementa aiuta:

do while cells(x,1) <> "" 
    pp x 
loop