ВБА Израчунај - сада, радна свеска, радни лист или опсег

Овај водич ће вас научити све различите опције израчунавања у ВБА.

Екцел подразумевано израчунава све отворене радне свеске сваки пут када се изврши промена радне свеске. То чини тако што следи стабло израчунавања где, ако се ћелија А1 промени, ажурира све ћелије које се ослањају на ћелију А1 итд. Међутим, то може проузроковати покретање вашег ВБА кода изузетно споро, као и сваки пут када се ћелија промени, Екцел мора поново израчунати.

Да бисте повећали брзину ВБА, често ћете желети да онемогућите аутоматске прорачуне на почетку ваших процедура:

1 Апплицатион.Цалцулатион = клМануал

и поново га омогућите на крају:

1 Апплицатион.Цалцулатион = клАутоматиц

Међутим, шта ако желите да израчунате све (или део) својих радних свезака у оквиру своје процедуре? Остатак овог водича ће вас научити шта да радите.

Израчунај сада

Помоћу команде Израчунај можете поново израчунати све (у свим отвореним радним свескама):

1 Израчунај

Ово је обично најбољи начин за употребу. Међутим, можете извршити и уске прорачуне за побољшану брзину.

Израчунај само лист

Такође можете рећи ВБА да израчуна само одређени лист.

Овај код ће поново израчунати активни лист:

1 АцтивеСхеет.Цалцулате

Овај код ће поново израчунати Лист 1:

1 Таблице ("Лист1"). Израчунај

Израчунај домет

Ако вам је потребан уски прорачун, можете рећи ВБА да израчуна само распон ћелија:

1 Таблице ("Лист1"). Распон ("а1: а10"). Израчунај

Израчунајте индивидуалну формулу

Овај код ће израчунати само формулу појединачне ћелије:

1 Опсег ("а1"). Израчунај

Израчунај радну свеску

Не постоји ВБА опција за израчунавање само целе радне свеске. Ако требате израчунати читаву радну свеску, најбоља опција је употреба наредбе Израчунај:

1 Израчунај

Ово ће израчунати све отворене радне свеске. Ако сте заиста забринути због брзине и желите да израчунате целу радну свеску, можда бисте могли бити селективнији у погледу тога које су радне свеске отворене одједном.

Израчунајте радну свеску - методе које не функционишу

Постоји неколико метода које бисте могли довести у искушење да приморате ВБА да израчуна само радну свеску, међутим ниједна од њих неће радити исправно.

Овај код ће проћи кроз сваки радни лист у радној свесци и поново израчунати листове један по један:

1234567 Суб Рецалцулате_Воркбоок ()Дим вс Ас ВорксхеетЗа сваки вс у радним листовимавс.ЦалцулатеНект всЕнд Суб

Овај код ће добро функционирати ако су сви ваши радни листови „самостални“, што значи да ниједан од ваших листова не садржи прорачуне који се односе на друге листове.

Међутим, ако се ваши радни листови односе на друге листове, ваши прорачуни се можда неће исправно ажурирати. На пример, ако израчунате Схеет1 пре Схеет2, али формуле Схеет1 се ослањају на прорачуне изведене у Схеет2, тада ваше формуле неће садржавати најновије вредности.

Такође можете покушати изабрати све листове одједном и израчунати активни лист:

12 ТхисВоркбоок.Схеетс.СелецтАцтивеСхеет.Цалцулате

Међутим, ово ће изазвати исти проблем.

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave