Страницы: Пред. 1 2 3 След.
RSS
Обучение VBA
 
И тема медленно переползла в обучение непонятно чему... Пора остановиться?
 
vikttur, ТС написал в личку с вопросом о коде, на что я предложил ему писать в эту тему, чтобы расширить круг помогающих и потому что консультации по личке — это очень неудобно. С тех пор ничего… Может передумал или нашёл кого…

Вот и пала тема, в обитель флуда и оффтопа  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
Вот и пала тема, в обитель флуда и оффтопа
А не курилка ли это?
 
Цитата
Jack Famous написал:
человек, который очень хорошо разбирается во всех тонкостях современного словообразования
У нас, в Урюпинске, это есть высший литературный слог! Наши бухгалтерА, когда считают ящикА и заносят всё в актА, дают их на подпися евонному директору. Так что пардоньте, это заразно.
 
Код
Sub впимываем_текст() 'вписывает в ячейку текст, Row ряд(строка) Column(столбец)Cells ячейка
 Worksheets("Лист2").Cells(8, 1) = "текст привет"  'На второй лист вписываем данный текст
   Cells(8, 2) = "текст привет"
End Sub


Sub херь()
Application.ActiveSheet.Range("A1").Select
    Application.Selection.Value = "Hello World"
    
End Sub

Подскажите в чем отличbе кодов ? В одном и втором случае в выбранную ячейку списываются определенные слова,но команды разные

В этой теме буду делится своими познаниями в виде ежедневного поста, и эта тема могла бы стать примером в изучении и познании VBA
Изменено: restation - 06.09.2018 22:16:55
 
Цитата
restation написал:
Подскажите в чем отличbе кодов ?
Worksheets("Лист2").Cells(8, 1) - конкретная ячейка конкретного листа (с определённым именем). Не важно активен он в данный момент или нет, лист может быть вообще скрыт.
Cells(8, 2) = ячейка того листа, в котором запущен макрос. если это макрос модуля, то это ячейка активного в данный момент листа, то есть равносилен ActiveSheet.Cells(8, 2)
Application.ActiveSheet.Range("A1").Select    Application.Selection.Value = ячейка активного в данный момент листа. Да ещё и с выделением.
вроде так как-то.
Изменено: Мартын - 06.09.2018 22:32:36
 
Цитата
restation написал:
'На второй лист вписываем данный текст
Не на второй лист (он может быть и стопятисотым), а на лист с именем "Лист2".
Второй лист это ThisWorkbook.Worksheets (2)
Изменено: Мартын - 06.09.2018 22:39:47
 
По этому все понял , вопрос по второму коду...аргументы не понятны
 
Цитата
Мартын написал: Cells(8, 2) = ячейка того листа, в котором запущен макрос.
Нет, по умолчанию (если родитель не указан явно) - это ячейка активного листа.

P.S. Уточнение по замечаниям ниже: ... или листа, в модуле которого написан код.
 
Цитата
vikttur написал:
это ячейка активного листа
То есть, если это процедура в коде листа "Лист4", то Cells(8, 2) относится не к листу "Лист4", а к активному листу? Я всегда полагал, что макросы листа по умолчанию относятся к родительскому листу, а не к активному. Где про это можно прочитать?
 
Цитата
restation написал: В этой теме буду делится своими познаниями в виде ежедневного поста, и эта тема могла бы стать примером в изучении и познании VBA
Лучше не надо :)
Она станет примером "свали все в кучу", уж извините за прямоту. То, что Вы спрашиваете сейчас - основы, элеметарщина. Нет, это не в обиду, все с этого начинают и ничего плохого нет в том, что сейчас  не знаете. Узнаете и очень быстро!

Правильное обучение - искать до посинения и красных глаз, рыться в иформации, набивать огромные шишки, ошибаться и исправляться... Попутно будете находить много интересного и полезного. На форум же - когда совсем туго... А основы описаны сотни раз: в учебниках, спрвочниках, в сети. Не лениться искать.

Например, эту троку пытались препарировать? Что значит каждый фрагмент?
Код
Application.ActiveSheet.Range("A1").Select

Application - приложение, в данном случае Excel
ActiveSheet - активный лист
Range - диапазон, Range("A1") - диапазон, состоящий из одной ячейки А1
Select - выбрать
А теперь прочитаем строку (понятнее получится, если справа налево):
выделить диапазон (ячейку) А1 активного листа в приложении Excel - ну, просто же!.. если потратить часть своего времени и разобраться.

Эта тема будет полезна только десятком первых сообщений, где указаны общие рекомендации.

Поймите правильно. Моя писанина не должна повергнуть Вас в уныние (вот, не дают развиваться). Наоборот - ищите и обрящете. Пинок в правильном направлении :) И чем больше будете находить сами, без подсказок, тем больше радости и гордости за себя, любимого.
 
Цитата
Мартын написал: То есть, если это процедура в коде листа "Лист4", то Cells(8, 2) относится не к листу "Лист4", а к активному листу?
Нет-нет, тут я маху дал, не учел в комментарии модуль листа. Неправильно понял выражение:
Цитата
ячейка того листа, в котором запущен макрос.
Дополнил сообщение выше.
 
Спасибо :) я в принципе так и думал. Тут как в формулах , одна задача , множество решений .Прочитал внимательно ваш посыл :) Спасибо !
 
Цитата
vikttur написал:
тут я маху дал
Фух! Вселенная встала на место.
 
В принципе Виктор вначале правильно ответил: обычные процедуры следует помещать в стандартные модули, а в модули листа только событийные. Поэтому ответ про активный лист верный. Да и в вопросе не было указано, что код в модуле листа.
 
Цитата
Мартын написал:
тянет холопством и так и слышится лакейское -с в конце
Мартын а вы хоть знаете, что означало -с в конце слова в давнее-давнее время? я думаю что нет. иначе бы не писали так
Вполне такой нормальный кинжальчик. Процентов на 100
 
Цитата
китин написал:
иначе бы не писали так
А что там знать? Это общеизвестный факт: "в конце XIX века к адрессивному значению прибавилось гоноративное а именно депрециативное (демонстративное самоунижение)."
В таком значении я его и застал.
Изменено: Мартын - 07.09.2018 08:28:30
 
Словое́рс (тж. словое́р, словое́рик) — название частицы -с (написание по  старой орфографии — -съ) , прибавляемой к концу слов в определённых  ситуациях:
* в XIX веке — в знак почтения к собеседнику, то есть как адрессивное окончание;
* в конце XIX века к адрессивному значению прибавилось гоноративное, а именно депрециативное (демонстративное самоунижение) ;
* в XX веке словоерс используется для выделения особо значимых высказываний, также для подчёркивания иронии.


Так что не так все однозначно
Изменено: китин - 07.09.2018 09:11:28
Вполне такой нормальный кинжальчик. Процентов на 100
 
Цитата
Мартын: А не курилка ли это?
разумеется. И здесь допустимы вольности, но хорошенько "прокурив" тему, можно её сделать неинтересной и бесполезной, так что обсуждать всё и везде неуместно. Зато можно сделать тему "Словообразование" и там общаться  ;)

Цитата
vikttur: Лучше не надо … Правильное обучение - искать до посинения … На форум же - когда совсем туго … ищите и обрящете…чем больше будете находить сами, без подсказок, тем больше радости и гордости за себя, любимого
+++ restation, вот модератор вам очень правильно всё расписал. Дам пару ссылок для успешного старта  ;)

Почему бежать на форум сразу после появления проблемы - ПЛОХО?
Зачем темам давать осмысленное название?
Изменено: Jack Famous - 07.09.2018 10:17:14
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
но хорошенько "прокурив" тему
таак, это кто тут курит без меня???

Вааще тему пора переименовать в "Обучение VBA и хорошим манерам."
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ: кто тут курит без меня???
МЫ тут курим без вас  :D
Цитата
БМВ: Обучение VBA и хорошим манерам
:D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Добрый день всем :)


Процесс обучения пошёл , испытываю огромное удовольствие ,когда написанный маленький sub успешно работает :)
В данный момент разбираюсь с циклами:) Вопрос следующего характера (не по циклам):

  Решил обычный Впр записать через макрокодер, посмотреть ради любопытства , какой код получится и назрел вопрос , как в
VBA  решаются левый ВПР, всевозможные индексы и другие формулы ,отдельные функции встроены в application под разные нужды?
 
Если уж взялись за VBA, то по возможности отказывайтесь от формул )
 
Цитата
Юрий М написал:
то по возможности отказывайтесь от формул )
Э, Э!!! :-)
По вопросам из тем форума, личку не читаю.
 
Спокойно! Ключевое - если ))
 
Цитата
Юрий М написал: Если уж взялись за VBA, то по возможности отказывайтесь от формул )
Уважаемый Юрий,
Т.е с помощью VBA можно реализовать все на 100% не прибегая к формулам ни разу? Ну по первой я буду совмещать 100%, для меня пока сложновато, знаний не хватает..
 
Цитата
restation: с помощью VBA можно реализовать все на 100% не прибегая к формулам ни разу?
это утверждение также верно, однако, думаю, что Юрий всё-таки имел ввиду всё-таки обойтись без ввода формул листа на лист, т.к. обычно все вычисления производятся кодом и на лист выводятся только готовые значения. А так внутри кода нередко используются функции листа вместе с функциями VBA. Так, например, строка кода
Код
Range("B1").Value=Application.WorksheetFunction.Sum(Range("A1:A100"))
запишет в ячейку "B1" значение, полученное в результате вычисления функции листа =СУММ(A1:A100)
Изменено: Jack Famous - 17.09.2018 11:06:21
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
это утверждение также верно,
как и утверждение что 2*2=4 , если не учесть что в троичной системе счисления все тоже  будет 11 . Так и с применением функций листа в коде VBA. Порой может получится более компактный и быстрый код именно с применением их. Например поиск последнего заполненной ячейки в столбце отфильтрованного диапазона проще через функции листа сделать, чем перебором, а привычный end(xlUp) при этом может дать совсем некорректный результат.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ: Порой может получится более компактный и быстрый код именно с применением их
на всякий случай отмечу, что не имел ввиду ввиду ничего обратного  :)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
В общем случае функции листа работают быстрее. Я нередко использую "гибридные" схемы.
Пример. При сканировании кодов нужно проверять базу на дубли. Можно в коде перебирать около миллиона записей. Но формула посчитает значительно быстрее.
Страницы: Пред. 1 2 3 След.
Наверх