Показать сообщение отдельно
Старый 04.02.2013, 00:20   #59
AndrewP
Местный
 
Регистрация: 13.08.2010
Сообщений: 1,615
Сказал(а) спасибо: 11,834
Поблагодарили 9,536 раз(а) в 1,526 сообщениях
Вес репутации: 2237
AndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспоримаAndrewP репутация неоспорима
По умолчанию

Цитата:
Сообщение от ПРАКТИК Посмотреть сообщение
Правда, пару книжечек приобрёл, хотел каких ни будь фолиантов, но пришлось смириться с "букварями"...
Хороший букварь здесь.

Цитата:
Сообщение от ПРАКТИК Посмотреть сообщение
Андрей, но всё равно будет пара вопросов.
(ByVal Target As Range) - каков смысл и назначение этой фразы?
Dim rng As Range: Set lbh = [B2:B4] - что есть rng и lbh?
Поздновато, но... попробую.


1 строка
Private Sub Worksheet_Change(ByVal Target As Range)

Private - макрос (программа, переменные и т.д.) действуют только в пределах данного листа (в отличие от Public - для всех, глобально)
Sub - начало программы

Worksheet_Change - Название программы, можешь хоть "горшком" назвать, только чтобы начиналось с буквы, содержала буквы и цифры без пробелов, из знаков препинания допускается только знак подчёркивания. Здесь стандартное название формируемое самим экселем, если пишешь программу, реагирующим на изменение в листе (превод: рабочий лист_изменить)
(ByVal Target As Range) - не забивай пока голову

2 строка
Dim rng As Range: Set lbh = [B2:B4] - установить дипазон ячеек на листе, изменения в котором запускают выполнение программы (здесь я, кстати ошибся некритично - переделывал-недоделал - вместо rng надо lbh - это любое имя, которым хочешь назвать данный диапазон ячеек, хоть Длина_Ширина_Высота назови)

3 строка
If Not Intersect(lbh, Target) Is Nothing Then - если ячейка ввода не пересекается с диапазоном lbh, то ничего не делать, иначе же ...
(если будешь происваивать своё имя диапазону, то и тут надо вместо lbh, подставить, например, Длина_Ширина_Высота)

Дальше пошли команды программы. Чё-то там крутим, меняем...
... и в конце всех построений витрин

End If - окончание условия If из 3 строки
End Sub - окончание программы из 1 строки. Стоп - всё выполнено.

***

Короче, буде такая задачка надо (тупо, пока) скопировать болванку в модуль листа, заменяя выделенное жирным шрифтом на своё:

Цитата:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ИМЯ As Range: Set ИМЯ= [B2:B4]
If Not Intersect(ИМЯ, Target) Is Nothing Then

(действия макроса) ...

End If
End Sub
***
Цитата:
Сообщение от ПРАКТИК Посмотреть сообщение
А вообще, подозреваю, что не с того начал... от частного к общему, от примеров к теории... наверное нужно наоборот....
А вот тут-то и не соглашусь с Вами, батенька
Лучшее обучение, на мой взгляд, когда решаются прикладные задачи. Системность должна приходить потом и постепенно (ну, чтобы не лезть в дебри методологии обучения, наступлю на горло этой песне).

Так вот, обучение/научение лучше на конкретике, чем абстрактно.
Надо рисовать прямоугольник - роем его параметры. Но чтобы знать как они хоть называются надо читать буквари (хотя бы те части, где говорится о прямоугольниках). И задачу свою больше вижу не научении программированию, а в научении методам самообучения. Что делать, если не знаешь, где добыть знания, как добыть знания, как применить знания, как их систематизировать, как сложить из них целостную картину и развить её...

Хвост трубой, точно знаю - ты на верном пути! И заветный расчёт витрины с графикой - не за горами.

А пока, пошёл баиньки, продолжение будет принепременно.
AndrewP вне форума   Ответить с цитированием Вверх
4 пользователя(ей) сказали cпасибо:
ame (04.02.2013), sibmebel (04.02.2013), sparkfire (04.02.2013), ПРАКТИК (04.02.2013)