Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.
berlusconi, для условия "#If VBA7" для типа "Long" нужно использовать "LongPtr", чтобы работало и в 32 и 64 разрядных. Потому что в 32-х разрядных нет типа данных "LongLong". Для условия "#Else" для типа "Long" нужно писать "Long", т.к. в "Excel 2007-", нет типа данных "LongPtr". Исправьте это и будет работать. Я исправил и у меня стало работать.
И структуры, если содержат специфический тип данных, тоже нужно помещать внутрь #If:
Я сначала тестировал на 32-х разрядной - работает. На 64 не работает. Для данной ситуации нужно написать полностью один и тот же код и для условия #If VBA7 и для #Else. То есть заключаете внутри #If VBA7 не только api-функции и структуры, но и процедуры "HookComboBoxScroll" и т.д. И то же самое делаете для #Else. Это нужно, чтобы работало в 2003 - 2016. Если нужно, чтобы работало в 2010 - 2016, то проще - нужно у переменных и функций заменить тип данных из Long в LongPtr. В "2007-" нет LngPtr.
Игорь написал: потому что вы не привели код в порядок
Используйте отступы нормально, а не копипаста без понимания из разных мест. За Вас приходится заниматься чистописанием ибо читабельность никакая, а в чужом коде тем более. Если Вы не хотите разбираться, то и работать само по себе ничего не будет. Даже если за Вас сделали, то любое Ваше изменение и опять все равно придется разбираться, тем более, что MouseScroll капризная штука. Всего лишь надо было отследить передачу переменных с учетом типа (не забываем про тип функций). Сделал на скорую руку... Надеюсь ничего не проглядел...
AAF написал: сего лишь надо было отследить передачу переменных с учетом типа (не забываем про тип функций). Сделал на скорую руку... Надеюсь ничего не проглядел...
спасибо большое, пытаюсь разобраться, сейчас ошибки нету, но и MouseScroll не работает
Тогда стоит указывать где работает, а где нет. Вот, например, у меня нигде не осталось 2007 и я иногда забываю его учесть, но и проверить не могу. Но как правило рабочий код для таких офисов в интернете есть. На 2013x32 работает и на 2016x64 работает Место для кода 2007 офиса я сопроводил комментариями в сообщении 24