Страницы: Пред. 1 2 3 4 След.
RSS
JavaScript vs Python, что учить, о рыцаре VBA на перепутье
 
У меня поэтому нет желания использовать TreeView и для меня не существует этого элемента в VBA.
 
Цитата
Karataev написал:
что на другом компьютере может не быть TreeView
А тут уже общий вопрос. На другом компьютере может стоять другая версия Excel, другие настройки безопасности, другие региональные настройки , другие ….  и это все может негативно сказаться на работе решения.
По вопросам из тем форума, личку не читаю.
 
Прокрутки колесиком и мне иногда не хватает в стандартных формах VBA.
+ как по мне, устаревшие формы, с минимумом функционала.
Но и не надо забывать, VBA -изначально создавался как простой язык, который будет расширением стандартного функционала приложений.
Что бы вы хотели в него добавить из несуществующего сейчас?
Если вы хотите добавить функционала в Excel, то в вашем распоряжении есть такой инструмент, как .xll
Это сложный и трудоемкий процесс, но от того не менее интересен для изучения (знания макросов не нужно :) ).
Так же можно писать процедурную dll (см. win api) и использовать в VBA, или несколько посложнее com.dll, где можно уже передавать/использовать классы/объекты в VBA.
Все это можно писать на С/С++, можно чуть проще на С#.NET через Excel-DNA.
Причем com.dll можно использовать не только в Excel, а в любых продуктах/языках поддерживающих технологию СОМ. Это широкий спектр программ Microsoft, 1С, многих других - чем не расширения кругозора?
Сразу освоить С/С++ без нужного обучения не тривиальная задача.
Каждому дается по разному, конечно проще идти когда выучил сложную часть, дальше проще, к примеру С/С++  -> C# ->VBA
Но можно наоборот, будет сложнее на каждом этапе, зато можно осилить своими силами (при определенной практике), к примеру:
VBA -> VB.NET -> C#.NET -> C/C++
А далее уже проще  С++, С#, Java, Javascript, Perl, PHP, D это языки с Си-подобным синтаксисом, перейти к ним при большом желании не столь сложно (опять же при наличии хоть какой-то практики).
Мой путь был таким - 2-й (и я не программист).
Да я всей особенностей данных языков не знаю, но Hello, world! напишу, и написать простенькую программку, думаю не составит больших затруднений.
Изменено: bedvit - 16.12.2018 16:06:02
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit,  Тут наткнулся на такой вот Hello World!!! :-)
Код
Sub HowDidHeDoThat()
    For x = 0 To 5
        x1 = x1 & Chr(x * (x * (x * (x * (-0.75 * x + 7.2917) _
            - 22.5) + 16.708) + 28.25) + 72)
    Next x
    For x = 0 To 6
        x2 = x2 & Chr(x * (x * (x * (x * (x * (0.425 * x - 6.8667) _
            + 40.833) - 109.58) + 122.24) - 23.05) + 87)
    Next x
    MsgBox x1 & x2
End Sub
По вопросам из тем форума, личку не читаю.
 
И хотелось же кому-то коэффициенты выводить )
 
Андрей VG, Вы не привели примера передергивания. Над остальным сказанным Вами надо подумать и вникнуть. Сейчас ответить не располагаю временем. Но сразу скажу, что если бы компилляция во всех случаях была бы столь примитивна, то давно уже бы на рынке появился простой программный продукт, который легко перекомпеллировал бы любые старые программы под 64 битную платформу простым нажатием на единственную кнопку. Увы... но что-то такого продукта до сих пор нет. А проблема перестройки многих программ под новую платформу так и не решена до сих пор.
 
Цитата
vikttur написал:
И хотелось же кому-то
Виктор, я встретил этот код среди небольших макросов в одном из примеров . Сперва даже не врубился за чем оно там и запустил. После - ржал. Нет, ну конечно с математикой у парней просто замечательно, но это почесывание  левого уха правой рукой через голову.

Цитата
Neufazendnik написал:
перекомпеллировал бы любые старые программы под 64 битную платформу простым нажатием на единственную кнопку. Увы... но что-то такого продукта до сих пор нет. А проблема перестройки многих программ под новую платформу так и не решена до сих пор.
А вы не допускаете мысль, что это и не требуется. Не думаю, что существуют старые программы, которые получат какие-либо бенефиты от работы на x64 платформе, они были рассчитаны на работу с другими объемами, а кроме объема обрабатываемых данных мы от x64 ничего не получаем, ну если не брать в расчет расчетные мощности которые сейчас сильно выросли. С трудом нашел сравнение - это как к монитору ЭЛТ прикрутить цифровой интерфейс.
Изменено: БМВ - 16.12.2018 20:04:23
По вопросам из тем форума, личку не читаю.
 
Цитата
bedvit написал:
С++, С#, Java, Javascript, Perl, PHP, D
Вот порывался порывался я вступить на сей путь и ... боюсь... время все никак не находится. А путь заманчив.
 
Цитата
БМВ написал:
но это почесывание  левого уха правой рукой через голову.
Когда-то я извращался подобным образом с программируемым калькулятором МК-52.
У меня была программа, которая предлагала пользователю сначала нажать на одну кнопку. Потом на вторую. а потом должно было что-то там появиться и если оно не появилось (а так и было задумано) то нужно было нажать на третью и появлялась причина, объясняющая сбой.
На экране появлялось "Вы осел" на сколько это можно было выдавить из диодного экрана, предназаначенного для отображения строки цифр, путем недокументированных шаманских команд, загоняющих мозги калькулятора в ступор и  вместо полноценных цифр начинавшего выдавать какие-то палочки и крокозябрики.
 
БМВ, да интересный подход.
Вот еще интересный код "Hello World!" на Javascript (открываем Хром, F12) вносим код:
Код
$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+$.$$_$+$._$+$.$$__+$._+"\\"+$.__$+$.$_$+$.$_$+$.$$$_+"\\"+$.__$+$.$_$+$.$$_+$.__+".\\"+$.__$+$.$$_+$.$$$+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.__$+$.__+$.$$$_+"(\\\"\\"+$.__$+$.__$+$.___+$.$$$_+(![]+"")[$._$_]+(![]+"")[$._$_]+$._$+", \\"+$.__$+$.$$_+$.$$$+$._$+"\\"+$.__$+$.$$_+$._$_+(![]+"")[$._$_]+$.$$_$+"!\\\")\\"+$.$$$+$._$$+"\"")())();

А вот на Brainfuck (простой вариант):
Код
 +++++++++++++++++++++++++++++++++++++++++++++
 +++++++++++++++++++++++++++.+++++++++++++++++
 ++++++++++++.+++++++..+++.-------------------
 ---------------------------------------------
 ---------------.+++++++++++++++++++++++++++++
 ++++++++++++++++++++++++++.++++++++++++++++++
 ++++++.+++.------.--------.------------------
 ---------------------------------------------
 ----.-----------------------.
«Бритва Оккама» или «Принцип Калашникова»?
 
О таком и не знал. Я как-то похожим увлекся -  машиной Тьюринга. Отличная штука для обучения.
Здесь игрался
 
Виктор, да интересная тема. Интересен ещё следующий момент: Алан Тьюринг доказал в 1936 году, что проблема остановки неразрешима на машине Тьюринга. О как.
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
vikttur написал в #65 по поводу #64: И хотелось же кому-то коэффициенты выводить )
Это делается достаточно просто с помощью полиномиального тренда Excel.
Для слова Hello с пробелом в конце используется полином 5-го порядка со свободным членом.
Y= k5*x^5 + k4*x^4 – k3*x^3 + k2*x^2 + k1^x + k0
Что по схеме Горнера (используется в коде) можно записать и так:
Y = x*(x*(x*(x*(k5*x+k4)-k3)+k2)+k1)+k0

Инструкция
1. Создать в Excel данные для точечной диаграммы в A1:C7
Текст;X;Y
"H";0;=КОДСИМВ(A2)
"e";1;=КОДСИМВ(A3)
"l";2;=КОДСИМВ(A4)
"l";3;=КОДСИМВ(A5)
"o";4;=КОДСИМВ(A6)
" ";5;=КОДСИМВ(A7)

В A2:A7 записаны буквы слова "Hello ".
В B2:B7 - значения X от 0 до 5.
Формулы С2:С7 выдают значения: 72, 101, 108, 108, 111, 32

2. Выделить B1:C7 – Вставка - Диаграммы – Вставить точечную (любую)
3. Правый клик на любой точке диаграммы – Добавить линию тренда
4. Формат линии тренда – Полиномиальный 5-го порядка, порядок равен количеству символов текста минус единица. Установить флажок "показывать уравнение на диаграмме"
5. Использовать коэффициенты, показанные на уравнении тренда:
Y = -0.75*x^5 + 7.2917*x^4 - 22.5*x^3 + 16.708*x^2 + 28.25^x + 72
по схеме Горнера, используемой в коде макроса, это уравнение будет таким:
Y = x*(x*(x*(x*(-0.75*x+7.2917)-22.5)+16.708)+28.25)+72
6. Аналогично, полином 6-го порядка используется для слова "World!!"
Код:
Код
Sub HelloWorld()
  Dim x, x1, x2
  
  ' "Hello "
  ' y = -0.75*x^5 + 7.2917*x^4 - 22.5*x^3 + 16.708*x^2 + 28.25^x +72
  For x = 0 To 5
    x1 = x1 & Chr(x * (x * (x * (x * (-0.75 * x + 7.2917) - 22.5) + 16.708) + 28.25) + 72)
  Next
  
  ' "World!!"
  ' y = 0.425*x^6 -6.8667*x^5 +40.833*x^4 -109.58*x^3 +122.24*x^2 -23.05*x +87
  For x = 0 To 6
    x2 = x2 & Chr(x * (x * (x * (x * (x * (0.425 * x - 6.8667) + 40.833) - 109.58) + 122.24) - 23.05) + 87)
  Next
  
  MsgBox x1 & x2

End Sub

Ради интереса можно закодировать, например, "Планета Excel!":
Код
Sub PlanetaExcel()
  Dim x, x1, x2
 
 ' "Планета"
 ' y = -0.5222*x^6 +9.4583*x^5 -65.139*x^4 +211.87*x^3 -324.84*x^2 +197.17*x +207
  For x = 0 To 6
    x1 = x1 & Chr(x * (x * (x * (x * (x * (-0.5222 * x + 9.4583) - 65.139) + 211.87) - 324.84) + 197.17) + 207)
  Next
  
  ' " Excel!" Формат подписи линии тренда = Числовой; чиcло дес.знаков = 5
  ' y = 0.46944*x^6 -9.49167*x^5 +71.94444*x^4 -250.95833*x^3 +384.08611*x^2 -159.05*x +32
  For x = 0 To 6
    x2 = x2 & Chr(x * (x * (x * (x * (x * (0.46944 * x - 9.49167) + 71.94444) - 250.95833) + 384.08611) - 159.05) + 32)
  Next
  
  MsgBox x1 & x2

End Sub
Смысла, кроме развлекательно-познавательного, такое кодирование конечно же не имеет.
Изменено: ZVI - 17.12.2018 05:06:56
 
Цитата
ZVI написал:
Смысла, кроме развлекательно-познавательного, такое кодирование конечно же не имеет.
Нечто подобное можно было бы использовать как простое хэширование  для усиления степени защиты при сличении пароля внешнего, с предустановленным в программе, если предустановленный в явной форме светить и хранить ни где не хочется :))) В принципе при желании ломается так же легко, как и задается. Но для этого все равно придется потрудиться и все таки это будет дополнительной сложностью для взломщика.
Изменено: Neufazendnik - 17.12.2018 09:37:44
 
Владимир, интересный подход, спасибо за инфо.Neufazendnik, при желании и ломать не нужно,  можно поправить сам код или не включать макросы. К сожалению в VBA нет адекватной защиты кода.
Изменено: bedvit - 17.12.2018 09:59:27
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
Karataev: Прокрутку колесиком мыши на UserForm можно ведь сделать. Так что смысл есть в развитии
вот тут согласен полностью  :D в VBA немало досадных недоработок, так что не согласен со словами типа
Цитата
Neufazendnik: На своем уровне его возможностей выше крыши. Он не развивается не от того, что кто-то на него забил и не тянет, а просто нет смысла в его развитии
(если их воспринимать как «нет смысла улучшать, если и так всё хорошо») — ОЧЕНЬ много чего можно улучшить. И спецы вроде Максима Зеленского, находящиеся в контакте с представителями мелкомягких могут вагон и маленькую тележку таких недоработок представить.
Изменено: Jack Famous - 17.12.2018 10:15:57
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, Нет, воспринимать следует не так, а как я писал. А писал я о том, что язык - вполне нормально упакован всем необходимым для того, чтобы хоть черта слепить. Нет прокрутки колесиком - это недоработка редактора, а не языка программирования! Язык программирования за колесики в процессе конструирования формы никакой ответственности не несет.
Изменено: Neufazendnik - 17.12.2018 10:37:19
 
Цитата
ZVI написал: Это делается... с помощью полиномиального тренда
Владимир, спасибо. Неожиданно )
 
ZVI, Владимир, добрый день. #73, как нельзя лучше показывает важность знаний математического аппарата. То что обращено в код можно записать на любом другом языке программирования.
Цитата
Jack Famous написал:
VBA немало досадных недоработок
Давайте отделять недоработки от отсутствие того или иного функционала. Недоработки - это когда сделано, но не до конца. Ну не планировали прокрутку колесом делать, вот и нет его. Так же как и многое другое, что требует подключения API функций.

В очередной раз обращаю внимание, что тема от того "что придет на смену VBA" , перешла на "чего не хватает в VBA".
Изменено: БМВ - 17.12.2018 11:59:39
По вопросам из тем форума, личку не читаю.
 
:)
Тригонометрический вариант "извращения":
Код
Sub Test1()
    Dim Arr1(), Arr2(), Arr3() As String, W1 As Double, Y As Double
    Dim N As Long, J As Long, K As Long
    N = 13
    Arr1 = Array(85.9230769230769, 14.635620421754, 35.6612529427871, 1.49050835493449, 17.4619572482512, 7.33270735124174, 10.6733727881944)
    Arr2 = Array(0, -2.65154889180633, -1.8979364051541, 0.746873225667152, -0.474113138132726, 2.95545420518, 1.4745418419859)
    W1 = WorksheetFunction.Pi * 2 / N
    ReDim Arr3(N - 1)
    For J = 0 To N - 1
        Y = Arr1(0)
        For K = 1 To N \ 2
            Y = Y + Arr1(K) * Cos(K * W1 * J + Arr2(K))
        Next
        Arr3(J) = Chr(Y)
    Next
    Debug.Print Join(Arr3, "")
End Sub
 
Мои 5 копеек:

Вообще не спец в JS и Py, и, честно говоря, не понимаю, что они могут такого, чего не может VBA в Excel.

JS для меня это вообще про веб, да и питон тоже... Хотя оба они более-менее универсальны. Достоинства, насколько знаю, только в том, что под оба языка есть куча специализированных пакетов, предназначенных для самых разных целей, т.е. не надо писать с нуля код, например, статистических пакетов. да и тот же pandas, насколько могу судить, гораздо приятнее в работе, чем VBA. Хотя повторю, не спец и могу ошибаться.
Неизвестно, во что выродится интеграция JS / Python в Excel. Например, JS-функции ячейки - отличная альтернатива для тех, кто уже и так знает JS или у кого есть готовый код.
Полностью исполняемый модуль на JS - вполне возможно, да. Элементы пользовательского интерфейса? Сомневаюсь, но кто его знает, не в курсе возможностей.
аналогично с Python - отличные возможности по обработке данных и визуализации, но какие требования будут предъявлены для работы с ним? Наличие параллельно стоящей анаконды? А как быть с работой на необорудованных питоном компьютерах? Или MS встроит и интерпретатор питона в Excel?
Не стоит также забывать о вопросах безопасности - M$ достаточно щепетилен в этих вопросах, особенно когда речь идет о потенциальной утечке данных. Они скорее все позакрывают, чем наоборот.

Давайте пофантазируем. Например, написать надстройку с собственными функциями на Js/Py - отлично! Надстройку с собственными UserForm на нем же? Как это будет выглядеть - User Form останутся теми же что и сейчас? Будет что-то новое? Короче, я бы не торопился пока с окончательным выбором, если речь идет о программировании в/для Excel. Поизучал возможности Js/Python, что они могут дать такого, чего не дает VBA с точки зрения как разработки, так и, без сомнения, с точки зрения пользователя.
F1 творит чудеса
 
Цитата
Максим Зеленский написал:
под оба языка есть куча специализированных пакетов, предназначенных для самых разных целей, т.е. не надо писать с нуля код
Всем добрый вечер! Позвольте высказать мнение не профессионала в программировании. Если не владеешь знаниями и умениями и опытом в создании машинного кода (грубо говоря - сделать нулями и единичками пару форм через которые вводятся данные и потом производятся какие-то действия с этими данными) - гадать о том, какой высокоуровневый язык перспективней - бесполезное занятие. Это подобно тому (только мое ИМХО, не претендую на истину), что какой-то крупный производитель начал выпуск тракторов, работающих на спичках. Этими тракторами начали пользоваться, и они (тракторы) себя хорошо показали, а потом производитель взял и убрал из следующей серии тракторов маленькую деталюшку, которая стояла перед форсункой - и теперь трактор может работать только на солярке, как и раньше, но почему-то заводится, но не едет... Было бы лучше, если бы производители договорились об одинаковых стандартах (от этого выиграли бы все), а не изобретали каждый свое, пытаясь стать монополистом (т.е. самым богатым и самым-самым и владеющим всем-всем)... Но, наверное это пока не реально в ближайшем (лет 20-50, а может и вообще в принципе) будущем... Гордыня рулит? Жажда наживы? Жажда власти? Жажда творчества? Или еще что-то? Если у кого-то есть мысли по этому поводу, очень интересно было бы услышать.
По теме: перепутье пугает, если вообще не знаешь куда и зачем идешь. А если знаешь - то в какую бы сторону не пошел, своего добьешься! От всей души с  наилучшими пожеланиями  :)  
 
Цитата
Jack Famous написал:
Многие люди (особенно в нашей стране и немного отъехав от любого города-миллионника) находятся в условиях, когда прокормить семью становится очень непросто. Неужели они не любят свои семьи?… Не надо так…
Живу в городе, где "не немного отъехав..." , а гораздо дальше, и подобную ситуацию знаю очень хорошо - на собственной шкуре (простите за грубое выражение). Наверное, неправильно изложил мысль в том посте.
"Благосостояние" и проблемы "как прожить?"  и "как прокормить семью?"  не есть любовь. Так же, как и любовь к работе. Очень многие семьи вынужденно оказались в такой ситуации, что стало нужным пересматривать свои взгляды на любовь. Материальные проблемы это очень хорошо показывают - где есть любовь, а где что-то другое вместо нее - (например, взаимовыгодное совместное существование). Если программистов сейчас очень много, и трудно конкурировать с ними на этом рынке - нужно другой рынок искать, если действительно хочешь прокормить свою семью. Простите, ни к кому не в обиду, исключительно мое мнение (на истину не претендую)    
 
_Igor_61, Искать другие рынки можно бесконечно. А можно бесконечно расти в своем мастерстве. Тут уж - два пути в этом мире. Либо мастер в погоне за деньгами, либо мастер своего дела. Каждый выбирает то, что ему больше по духу.
 
Цитата
Neufazendnik написал:
Либо мастер в погоне за деньгами, либо мастер своего дела.
Плох тот мастер своего дела, который растет в мастерстве без надежды на достойную компенсацию. Если мастерство развивать в качестве увлечения, то другое дело, но если им кормить себя и свою семью, то это означает развивать альтруизм. Тут было много сказано про высокую конкуренцию в мире программирования - она конечно есть, как и в любой сфере, но ценность этого труда не всегда оценивается адекватно. Хотя есть и примеры обратного, вот выдержка из одного письма.
 "мы оплачиваем айтишникам регулярным 1000 час" . Я работаю в платежеспособной компании и специалист ИТ такого не имеет. Правда скорее всего там Москва.  
По вопросам из тем форума, личку не читаю.
 
БМВ, Не согласен. Имею иное мировоззрение. Либо думы о деньгах. Либо думы о деле. Не бывает так, чтобы великое дело вышло по итогу наичудеснейшим образом, когда мастер думал ПРЕЖДЕ ВСЕГО о деньгах, а не о деле. Я считаю, что основная масса замечательнейших творений человечества строилась как самореализация их задумщиков, а не как средство заработка денег. Просто любая великая задумка нуждается в финансировании и если не заложить заработок в ее функционирование, то будет проблематично ее создавать и развивать. Я хочу донести ту мысль, что великие мастера в любой сфере - как правило - альтруисты. По крайней мере, мой взгляд на вещи в этом мире таков.
Изменено: Neufazendnik - 19.12.2018 10:41:06
 
Neufazendnik, Парирую, Я не говорю, что компенсация должна быть основной целью, но давайте возьмем два примера, нам близкое ИТ, и автослесаря. Первому для роста нужно оборудование, обучение, ПО, которое стоит денег, второму обучение, документация, инструменты  ….. Все это кто-то должен оплачивать и если развиваться просто для развития, то должен быть спонсор или ной источник дохода. Хорошо что у меня есть основная работа хоть и связана с ИТ, но далека от тех знаний которые я пытаюсь демонстрировать на этом форуме - это мое хобби, которое оплачивается основной работой.  
Изменено: БМВ - 19.12.2018 17:49:42
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
это мое хобби которое оплачивается основной работой.
Золотые слова!!! Полностью солидарен.
И моё хобби встало на путь VBA только потому, что на работе у меня права юзера, а не админа и ни одной программы я сам установить не могу, да и не положено. Вот и приходится осваивать то, что под рукой оказалось и убивать кучу времени на то, что в привычной связке Delphi+Firebird делалось играючи, как бы само-собой.
 
Цитата
Neufazendnik написал:
Либо думы о деньгах. Либо думы о деле
Тогда при чем тут семья? Если делом прокормить не получается? Продолжать дело? Или искать другую работу, чтобы прокормить семью? А если будет такой вариант, что деньги будут, но для этого придется забить на совесть? Зато семья прокормлена будет...  Придется жертвовать чем-то одним в пользу другого. Наверное, каждому когда-то приходится (или еще придется) сделать для себя вывод, что для него важнее: деньги, дело или семья.
Крылатая фраза из "Кавказской пленницы":
- Так выпьем же за то, чтобы наши желания совпадали с нашими возможностями!  :)
P.S. У великих мастеров своя судьба, у каждого из остальных людей, не "великих"  - своя.  
Изменено: _Igor_61 - 19.12.2018 16:42:19
 
Привет!

JS.

Ибо пофиг куда. Главное не стоять. Очень трудно управлять авто или судном, когда оно не двигается.
Начни с JS, не попрёт, иди к Python, не попрёт иди дальше, а опыт-то уже будет.

Вы конечно программисты матёрые, но помните, от нас мало что зависит.
Сравнение прайсов, таблиц - без настроек
Страницы: Пред. 1 2 3 4 След.
Наверх