perasperaadastra wrote:Вкусы у всех разные. Я, например, уничтожил бы VBA. Без жалости и сожаления. Ибо такое извращение не должно существовать.
Не знаю, за что так можно ненавидеть VBA. Язык как и все другие, легкий в изучении. Куча рабочего софта, совместимогo с любыми версиями Excel.
Да хотя б за то, что даже операции типа конвертирования строки в целое число могут бросить ошибку Overflow (например, "32768"), при том, что обработки ошибок толком и нету нормальной приходится пейсать глупости "On Error Resume Next", проверять была ли ошибка и заканчивать всё это "On Error Goto 0"
I would hope that a wise white man with the richness of his experiences would more often than not reach a better conclusion than a latina female who hasn't lived that life
Alexander Troyansky wrote:Да хотя б за то, что даже операции типа конвертирования строки в целое число могут бросить ошибку Overflow (например, "32768"), при том, что обработки ошибок толком и нету нормальной приходится пейсать глупости "On Error Resume Next", проверять была ли ошибка и заканчивать всё это "On Error Goto 0"
я использовал Val function без каких либо проблем.
"On Error Resume Next" использовал для обхода других вещей.
Alexander Troyansky wrote:Да хотя б за то, что даже операции типа конвертирования строки в целое число могут бросить ошибку Overflow (например, "32768"), при том, что обработки ошибок толком и нету нормальной приходится пейсать глупости "On Error Resume Next", проверять была ли ошибка и заканчивать всё это "On Error Goto 0"
я использовал Val function без каких либо проблем.
"On Error Resume Next" использовал для обхода других вещей.
Да много чего приходится так проверять. Вот ещё пример из SO:
Function SheetExists(shtName As String, Optional wb As Workbook) As Boolean
Dim sht As Worksheet
If wb Is Nothing Then Set wb = ThisWorkbook
On Error Resume Next
Set sht = wb.Sheets(shtName)
On Error GoTo 0
SheetExists = Not sht Is Nothing
End Function
I would hope that a wise white man with the richness of his experiences would more often than not reach a better conclusion than a latina female who hasn't lived that life
Function SheetExists(shtName As String, Optional wb As Workbook) As Boolean
Dim sht As Worksheet
If wb Is Nothing Then Set wb = ThisWorkbook
On Error Resume Next
Set sht = wb.Sheets(shtName)
On Error GoTo 0
SheetExists = Not sht Is Nothing
End Function
Function SheetExists(shtName As String, Optional wb As Workbook) As Boolean
Dim sht As Worksheet
If wb Is Nothing Then Set wb = ThisWorkbook
On Error Resume Next
Set sht = wb.Sheets(shtName)
On Error GoTo 0
SheetExists = Not sht Is Nothing
End Function
For i = 1 To Worksheets.Count
If Worksheets(i).Name = strSheetName Then
SheetExist = True
Exit Function
End If
Next i
О чём и речь... чтобы получить элемент коллекции, надо либо использовать OnErrorResumeNext/OnErrorGoto0 или перебирать каждый элемент коллекции (которая может быть между прочим большая) пока не будет найден этот элемент или не будет исчерпана коллекция. Также и достаются самые различные свойства. Это называется "заезд на кривой козе"
I would hope that a wise white man with the richness of his experiences would more often than not reach a better conclusion than a latina female who hasn't lived that life
Alexander Troyansky wrote:О чём и речь... чтобы получить элемент коллекции, надо либо использовать OnErrorResumeNext/OnErrorGoto0 или перебирать каждый элемент коллекции (которая может быть между прочим большая) пока не будет найден этот элемент или не будет исчерпана коллекция. Также и достаются самые различные свойства. Это называется "заезд на кривой козе"
Искать по многим sheets - да, немного коряво. Однако поиск чего-то на одном будь то sheet, колонке или строчке происходит очень быстро, без всякого перебора. Кроме этого, есть очень мощные средства для установки фильтра. Также можно быстро и удобно форматировать целые колонки или любые "ranges", как и удобно менять свойства/цвет/формат/you-name-it тысяч клеток одной командой.
Я люблю SQL. В сочетании с грамотно задизайнеными UDFs/UDAs это мощная и хорошо читаемая штука. Я когда увидел MongoDB query lang, то авторов хотел под суд отдать. Невозможно читать после SQL. Я думал, что хуже языка для select невозможно придумать. Но недавно я увидел DruidDB. И понял, что возможно.
Про язык, который я убил бы, многие здесь и не слышали. Что и неплохо, само по себе.
Это SAS. В нем почти буквально у каждой функции свой синтаксис, варьирующийся от Бейсика до Джавы и обратно, через Брейнфак.
perasperaadastra wrote:Коллеги, вы не поняли: вопрос не о самом плохом языке, а о самом нелюбимом! Вкусы у всех разные. Я, например, уничтожил бы VBA. Без жалости и сожаления. Ибо такое извращение не должно существовать.
Visual Basic даже знать - позор. Вы хоть бы не признавались на людях-то...