Прескочи към основното съдържание Прескочи към навигацията

Как мога да дефинирам адреса на active cell?

Microsoft Excel Електронни таблици Microsoft 365 Excel VBA Програмиране VBA за Excel

Здравейте, как мога да променям и дефинирам коя да е active cell, спрямо която се изпълняват другите инструкции?

Здравей, обикновено се използва обект Range с характеристика Cell. Дефинирането на обекти е много важно условие във VBA. В следващия урок има пример, в който показвам как става. И тъй като обект Range e един от най-често използваните обекти във VBA в следващите уроци има много примери.

Надявам се, че успях да отговоря, но ако има нещо неясно, пиши.

Благодаря! На 12 урок мисля, че вече го осъзнах донякъде :) С обект Range и действие.Selection. Прекрасен курс

Здравейте, при този запис: Range("B2").End(xlDown).Select ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "=SUM(R[-29]C:R[-1]C)" ActiveCell.Select Selection.Copy ActiveCell.Offset(0, 2).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(0, -3).Range("A1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "sum" ActiveCell.Select макроса се изпълнява коректно независимо къде е кликнато с мишката като клетка в таблицата. Докато при този ако е кликнато на различно място от последен ред втора колона резултата не е коректен: With ActiveCell .Offset(1, 0) = "=SUM(R2C:R[-1]C)" .Offset(1, 2) = "=SUM(R2C:R[-1]C)" .Offset(1, -1) = "Suma" End With Къде бъркам във вторият запис?

Ако се приложи: Range("B2").End(xlDown).Select ActiveCell.Offset(1, 0).Range("A1").Select With ActiveCell .Offset(0, 0) = "=SUM(R2C:R[-1]C)" .Offset(0, 2) = "=SUM(R2C:R[-1]C)" .Offset(0, -1) = "Suma" End With Вече всичко е наред независимо къде по работният лист е кликнато,

Точно така, вярно сте намерил разликата в изпълнението: 1. Range("B2").End(xlDown).Select ActiveCell.Offset(1, 0).Range("A1").Select With ActiveCell .Offset(0, 0) и 2. With ActiveCell .Offset(1, 0) В първия случай Range("B2") - определя клетка B2 - началото на позиционирането, End(xlDown) - определя посоката и последната клетка, в която има някаква стойност. ActiveCell.Offset(1, 0) - определя клетката, в която се въвежда формулата, а това е първата празна клетка. Докато във втория случай формулата се въвежда в активната клетка и затова макросът не се изпълнява коректно.

Може ли малко помощ? Имам колони със сбор, искам ако сбора под някоя колона е 0, колоната да се трие. Дотук какво съм направил: Dim c As Range For Each c In Selection If c.Value > 0 Then ActiveCell.Offset(0, 1).Range("A1").Select If c.Value = 0 Then c.EntireColumn.Delete Next c Не мога да измисля: как да го повтаря докато срещне празна клетка да укажа ако срещне празна клетка да се върни примерно на А1.

На две места във форума сте задали въпроса. Ето отговора:

https://aula.bg/question#id-144064000001

Ако не се отваря линка, вижте във форума моя отговор на въпроса Ви в темата Как да изтрием редовете, ако предварително не знаем колко са с формули?


Вашият отговор

Запиши се в Аула

или
Вашият имейл е защитен при нас.