2013-06-22 15 views
5

Próbuję zwiększyć wartość w komórce, ale pomimo dokumentacji mówiącej, że Visual Basic pozwala operatorowi + =, po prostu daje mi "Błąd kompilacji: Oczekiwany: wyrażenie".Czy operator + = po prostu nie istnieje w VBA?

Range("CellName").Value += 1 

Czy co łamie, ale jeśli to zrobię

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

Współpracuje

+1

'VBA' jest zupełnie inny od' VB.net' - 'VBA' nie jest tak surowa typu, ale potem znowu' VB.net' nie jest tak restrykcyjne, jak '' C# . Lubię je wszystkie - 'VBA' wydaje się ograniczony, ale jeśli grasz z Excelem,' VBA' jest częścią aplikacji, więc może być naprawdę potężny. – whytheq

Odpowiedz

10

Nie, to nie istnieje w VBA.

VB.NET może zabrać += (choć nie jestem tego pewien).

Będziesz musiał użyć

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

dobre referencje można znaleźć here

+5

VB.Net zdecydowanie ma. –

3

"oficjalne" lista VBA operatorów można znaleźć w VBA pomocy:

Pomoc -> Microsoft Visual Basic Help -> Visual Basic for Applications Language Reference -> wizualna Podstawowe Language Reference -> -> Operatory Operatory arytmetyczne (online here)

Może kontrowersyjnie, ale kolejna rada to zapisano mi mnóstwo czasu i bóle głowy:

powiedziałbym, że lepiej zapomnieć wszystko o VB i skupieniu się na VBA, ponieważ oba są różnymi językami. Ludzie nie wspominają "Och, OCaml, APL, PHP lub Fortran mają operatory inkrementacji", ponieważ nie są tematem, jeśli zakres jest VBA. W ten sam sposób, co VB ma lub nie ma poza tematem, a zwykle tylko dodaje zamieszanie, ponieważ jest podobieństwo. Lepiej używać MS Office pod warunkiem "lokalny" Visual Basic for Applications Language Reference dostarczone przez system pomocy lub przez internet:

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

+1

Według tej oficjalnej listy, VBA nie ma operatora + =. Nie zapomnij odpowiedzieć na pytanie. – Sheldon

1

To naprawdę denerwujące. Zrobiłem następujące funkcje, aby moje życie trochę łatwiejsze:

' ++ 
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 

naprawdę nie pomaga swoją sytuację jako że trzeba jeszcze wpisać taką samą kwotę:

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

ale dla prostych pętli zwiększa to pomaga:

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