Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/603: Рейтинг темы: голосов - 603, средняя оценка - 4.69
ArFL
28.07.2014, 16:09
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от StepInLik Посмотреть сообщение
Код Visual Basic
Sub tt()
a = "Маша ела сушку"
aa = Split(a, " ")
Call fФункция(aa(0), aa(1), aa(2))
End Sub
Function fФункция(ParamArray arr())
Dim i&
For i = LBound(arr) To UBound(arr)
MsgBox arr(i)
Next
End Function
К слову сказать у меня тоже выдает цифры. Но если заменить "Function fФункция" на "Sub fФункция", тогда все заработает. Необъяснимый парадокс.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.07.2014, 16:09
Ответы с готовыми решениями:

Готовые решения, примеры и рекомендации начинающим на WPF [Элд Хасп]
В этой теме перечень полезных тем для начинающих. Обсуждение введите в самих темах. Для включения темы в этот перечень - напишите...

Обсуждение темы "Готовые решения, примеры и рекомендации начинающим на WPF"
Тема для обсуждения, критики, предложения изменений и дополнений темы https://www.cyberforum.ru/wpf-silverlight/thread2384523.html

Проблемы с алгоритмом решения задачи
Нужно написать алгоритм решения задачи. Т.е. что и как делает прога, желательно построчно, ну или близко к этому. Собственно задача: ...

126
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
29.07.2014, 13:40  [ТС]
Красим, форматируем как-то ячейку ..., вставляем в эту ячейку ссылку на какой-то файл ...
Автоматически, она превращается в гиперссылку ... - ну ладно ... - пусть ...
Теперь либо тегом "Отменить гиперссылку", либо "Удалить гиперссылку", либо как-то иначе ... - сносим гиперссылку ...
и что? сносится все! - и гиперссылка и формат ячейки ... где логика? назвали бы тогда "снести все, кроме текста ..."
0
 Аватар для mc-black
2787 / 719 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
31.07.2014, 14:35
Цитата Сообщение от ArFL Посмотреть сообщение
К слову сказать у меня тоже выдает цифры. Но если заменить "Function fФункция" на "Sub fФункция", тогда все заработает. Необъяснимый парадокс.
К слову сказать, у меня работает и так и так - выдает слова (Excel2010x32 + Win7x64). На какой конфигурации у вас выходит ошибка?
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
19.08.2014, 10:52  [ТС]
Хотите довести пользователя до истерики?
С левого края горизонтальной линейки(полосы) прокрутки листа есть таб, за который можно взять и изменить размер этой линейки(полосы) ... внимание! линейка(полоса) находится на одном уровне с ярлыками книги и ... если утянуть таб влево до конца - линейка(полоса) прокрутки закроет ярлыки. пользователей, которые понимают, что нужно сделать, чтобы вернуть ярлыки - очень мало ... (риторически)а вы бы догадались? )
1
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
26.08.2014, 13:02  [ТС]
Не сочтите меня за параноика или дилетанта (проверено многими людьми). На моей практике таких ситуаций было 2, на практике еще пары специалистов - еще 2 ...
И так!, если у вас стоит выражение сравнения IF на равенство и левая часть выдает False, а правая True (и в immediate и в watches и даже если обе обернете в cstr) и!!! выражение проходит как истинное - т.е. заходит в тело ИФА, то для корректной работы введите дополнительные 2 переменные и перед сравнением присваивайте им значение левой и правой частей выражений сравнения и в самом ИФЕ просто сравнивайте эти переменные ...
Такое встречалось при значительных нагрузках - серьезных рекурсиях, больших объемах резервированной памяти и у меня при создании и удалении классов налету в самом выражении сравнения ...
1
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
18.09.2014, 12:03  [ТС]
Мир глюков экселя бесконечен, неисчерпаем и удивительно богат ...
1. Делаем табличку с именем поля ... к примеру "dйцуйцуйцуйцуйцуйцуйцуйцуйцу"
2. Строим на ее основе сводную ...
3. Кидаем это поле в столбец ...
4. Первые 5 столбцов от сводной справа делаем довольно маленькими - к примеру пунктов 5 ...
и!
5. Справа от нашей сводной - начинаем выделять (начиная подальше справа) в левую сторону на уровне имени заголовка область ячеек ... и! как только мы прихватываем третий столбец справа от нашей сводной - в ячейке со строкой появляется часть имени нашего поля!!!
Глюк проявляется только начиная с третьего столбца - очевидно плохая заплатка.
День удался! )))

Добавление от 24.09.2014
Есть картинка еще интереснее (см. ниже) - объект "таблица" (с ним еще интереснее)
Там имя поля PLAN_AMOUNT_DELIVERY_RRC_RUR ...
так оно даже неправильно хвост отрисовывает - по логике, если уж хвост отрисовывается отдельно, то слово RUR должно быть целым, пусть и разными цветами, а получилось, что он съедает часть буквы U ... даже заплатка косячная ... и складывается ощущение, что хвост этот - не часть оригинального текста заголовка, а его копия(для чего-то еще) стоящая где-то или зачем-то чуть левее и сзади ... причем, так чтобы текст из ячейки выходил не обрезанный границей ячейки и обрезался где-то не на границе другим объектом - вижу впервые.
Миниатюры
Профессиональные проблемы, решения, рекомендации и ошибки   Профессиональные проблемы, решения, рекомендации и ошибки  
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
19.09.2014, 11:20  [ТС]
После ранее опубликованного совета:
Цитата Сообщение от StepInLik Посмотреть сообщение
Если вы открываете какой-то файл и он не открывается т.к. выдает "Файл используется ... и занят пользователем User ...", а в действительности он никем не занят, то может помочь следующее:
- отложите мышку в сторону и выбрав файл нажмите ЕНТЕР! все откроется. - баг при открытии файла мышкой, который устраняется клавишей ЭНТЕР с клавиатуры ... не известно почему, но часто работает. и не потому, что он освободился, а потому, что он действительно никем не занят!)
Один мой знакомый долго смеялся, вертел у виска и говорил, что это невозможно, аргументируя "да чем вы там занимаетесь?!", пока не показал ему видео(добавлю его позже ...) ... теперь он верит в розовых пони ...
В продолжение темы "странных и совершенно абсурдных" советов:
Если ранее описанный совет вам не помог, но при это файл действительно никем НЕ ЗАНЯТ, но упорно открывается ТОЛЬКО ДЛЯ ЧТЕНИЯ:

1. Попробуйте открыть его из программы, в которой он вам действительно нужен - отрыть приложение, Ctrl+O ... (+Ентер) (а не из "Моего компьютера" или откуда-то еще)

... и если не помогло

2. Попробуйте:
- зайдите в "Мой компьютер",
- выделите "странный" файл,
- в контекстном меню (правой клавишей мыши) - "Открыть с помощью ..."
- снимаете флаг "Использовать выбранную программу для всех файлов такого типа"
- Выбираете "Блокнот" и ... открываете ...
После открытия в "Блокноте", естественно нужно закрыть файл без сохранения, и(внимание!) с файлом возможно ТОЛЬКО любое СЛЕДУЮЩЕЕ ПЕРВОЕ действие - открытие, переименование, что-то еще ... и! после этого, файл снова станет доступным "только для чтения".
Ответа на вопрос "почему" - не знаю. Не знаю и людей, способных объяснить это.

(комментарий спустя пару лет - как выяснилось, это поведение характерно для организаций(компаний) использующих новелл)
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
23.09.2014, 17:23  [ТС]
1. Пишем на листе в A1 [ЧТО-ТО]
2. Выделяем ячейку и видим в ячейке это [ЧТО-ТО] и в строке Fx(строка формул) тоже видим [ЧТО-ТО]
3. Пишем в коде листа функцию типа:
Visual Basic
1
2
3
Private Function qwe()
 Range("A1") = "qwer"
End Function
4. Ставим точку останова в конце функции на строке "End Function"
5. Запускаем функцию, интерпритатор встает на точке останова ...
6. Смотрим лист.
в ячейке - значение "qwer", а в строке Fx(как значение этой ячейки) видим наш текст [ЧТО-ТО]
0
 Аватар для mc-black
2787 / 719 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
24.09.2014, 13:04
Цитата Сообщение от StepInLik Посмотреть сообщение
в ячейке - значение "qwer", а в строке Fx(как значение этой ячейки) видим ЧТО-ТО
Excel2010x32@Win7x64 баг не воспроизводится
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
25.09.2014, 11:45  [ТС]
Цитата Сообщение от mc-black Посмотреть сообщение
Excel2010x32@Win7x64 баг не воспроизводится
Тогда уточняю свою конфигурацию:
Excel Professional 2010x64(14.0.7106.5003)@Win7(Корпоративн ая)x64 SP1 (+ все патчи до текущего момента)
... на домашнем компьютере на Win8 64x Профессиональная @ Excel и Профессиональный 2010х32 и 2013(?) - не проявлятся
Изображения
  
0
 Аватар для KoGG
5730 / 1633 / 419
Регистрация: 23.12.2010
Сообщений: 2,455
Записей в блоге: 1
28.09.2014, 19:44
Это проблема старая. Но она здесь слишком узко интерпретирована.
Функции в Excel работают верно, если они используются в процедурах или как пользовательские функции листа только в том случае, если они не пытаются произвести графически видимые изменения, в том числе изменение значений ячеек или их цвет. Для графических изменений нужно использовать процедуры, а функции - строго для того, чтобы они возвращали свое значение ( в том числе в ячейку, откуда вызываются - это графическое изменение - штатное).
Visual Basic
1
2
3
Function qwe()
qwe="qwer"
End Function
В ячейке A1 формула =qwe()

Добавлено через 9 минут
Хотя если мы не работаем с функцией, и не разу не пытались ее запустить - то это самостоятельный глюк.

Добавлено через 20 часов 25 минут
Попытался воспроизвести пример того старого глюка: он проявляется только при вызове функции из ячейки, в ячейке при этом появляется ошибка #ЗНАЧ
Visual Basic
1
2
3
4
5
6
7
8
Function test_raboty() As String
    'Stop ' расскоментируйте и увидите псевдовыход при пошаговом выполнении по F8 после вызова функции из ячейки
    '-----блок функции 1 - Срабатывающий
    test_raboty = "1" & "начало2 работы функции"
    ActiveSheet.Cells(1, 1).Interior.Color = vbRed  'Строка не срабатывает и вызывает выход из функции
    '-----блок функции 2 - Не срабатывающий
    test_raboty = "2" & "Функция сработала полностью!!!"
End Function
1
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
08.10.2014, 14:11  [ТС]
Немного жести.
1. Пишем:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Public Function qwe()
 Call qwe1(dТест1)
End Function
 
Private Function qwe1(dОписаниеДанных)
 'Call callMe(dОписаниеДанных)
 Stop
End Function
 
Private Function callMe(ParamArray dПараметры())
 Stop
End Function
2. Жмем F5 на qwe
3. Встаем на stop в qwe1
4. Пишем в Immediate "? callMe(dОписаниеДанных)", жмем ентер
5. Получаем рантайм "Internal error" при всем при том, что если раскомментить выше стоящую строку - она проходит и мы сначала вываливаемся в Stop в callMe
Как показали опыты - причина в отсутствии конкретной типизации передаваемых данных - т.е. свал на Variant и Object
Можно было бы обойтись и без Immediate, но проблема в том, что у экселя в какой-то момент кончается терпение(назовем это так) и ни с того ни с сего - он начинает бросаться на аналогичные строки вызова все с тем же рантаймом но уже в коде!

Не по теме:

Всегда был сторонником обходить типизацию тогда, когда нет конкретных требований к типам к скорости и когда вы знаете что вы делаете ... но тут -

вывод один - чаще используйте типизацию данных!
По мотивам Excel Professional 2010x64(14.0.7106.5003)@Win7(Корпоративн ая)x64 SP1 (+ все патчи до текущего момента)
Миниатюры
Профессиональные проблемы, решения, рекомендации и ошибки  
0
 Аватар для KoGG
5730 / 1633 / 419
Регистрация: 23.12.2010
Сообщений: 2,455
Записей в блоге: 1
08.10.2014, 16:35
Окно Immediate в штатном режиме не видит Private функции и процедуры. Проблема выросла из этого.
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
08.10.2014, 17:39  [ТС]
Immediate все прекрасно видит. Пожалуйста, проверьте или приведите пример (ссылку на документируемость заявленного вами факта или опишите, что вы подразумеваете под "штатным режимом").
Все в том же окне все в той же ситуации запрос "? callMe(i1&)" прекрасно отрабатывает.
... что интересно, там же отрабатывает и "? callMe(cvar(i1))".
0
 Аватар для KoGG
5730 / 1633 / 419
Регистрация: 23.12.2010
Сообщений: 2,455
Записей в блоге: 1
09.10.2014, 10:50
Под штатным режимом я имею ввиду работу без остановки на отладку. И действительно Private процедуры и функции не видны в штатном режиме из окна Immediate.
По определению Private процедура или функция доступна для вызова только из собственного модуля.
Если Immediate видит Private процедуру или функцию - это уже ошибка.
При этом попытка вызвать в Immediate результат Private функции по факту заменяется распечатыванием значения пустой локальной переменной, возникшей в Immediate, и совпадающей с именем нужной нам функции .
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
09.10.2014, 11:47  [ТС]
Коллега, даже на картинке видно, что вызываемая функция в окне Immediate находится в рамках одного модуля(листа). Почему вы решили, что
Цитата Сообщение от KoGG Посмотреть сообщение
Проблема выросла из этого.
Если вызывать private функцию другого модуля, то сообщение будет другое - "Sub or Function not defined"

Не по теме:

... поверьте, мне хватает квалификации, чтобы понять, что нельзя вызывать private функцию другого модуля.


Цитата Сообщение от KoGG Посмотреть сообщение
При этом попытка вызвать в Immediate результат Private функции по факту заменяется распечатыванием значения пустой локальной переменной, возникшей в Immediate, и совпадающей с именем нужной нам функции .
- так почему же он не распечатывает значение пустой локальной переменной, возникшей в Immediate, и совпадающей с именем нужной вызываемой в том же модуле(листе) функции? а при вызове дает "Internal error" ...
0
 Аватар для mc-black
2787 / 719 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
09.10.2014, 14:08
Цитата Сообщение от StepInLik Посмотреть сообщение
вывод один - чаще используйте типизацию данных
Точно не знаю, откуда, но я всегда это знал. По крайней мере практиковал. Без конкретной типизации код остается таким там, где иного пути нет (или он работает нерационально). Поэтому люблю по поводу и без твердить новичкам в VBA об обязательности для них Option Explicit, если они хотят уметь писать, а не ловить и обсуждать баги на форуме. И, повторюсь, роскошь неявных преобразований типов без объявлений, могут позволить себе те, кто имеет опыт, сравнимый с форумчанином CatStail (в его примерах я наблюдаю это чаще, чем у других).
0
 Аватар для KoGG
5730 / 1633 / 419
Регистрация: 23.12.2010
Сообщений: 2,455
Записей в блоге: 1
09.10.2014, 14:46
вызываемая функция в окне Immediate находится в рамках одного модуля(листа).
- бредовость фразы разве не бросается в глаза?

Добавлено через 26 минут
Пример из поста #72 в стандартном модуле не дает никакой ошибки.
Опыт показывает, что в модуле листа нельзя присваивать функциям имена, совпадающие с буквенно-цифровыми адресами ячейки.
Если в модуле листа стоят функции:
Visual Basic
1
2
3
4
5
6
7
Public Function a1()
 a1 = 2
End Function
 
Function b2()
 b2 = 4
End Function
- в окне Immediate они дают пусто.
Окно Immediate начинает видеть Private функции только при остановке на отладку.

Добавлено через 3 минуты
Да еще в модуле листа все функции всегда Private.
1
 Аватар для mc-black
2787 / 719 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
24.11.2014, 15:29
Ошибка макрорекордера Excel (Office 2010 32bit + Windows 7 64 bit):
Visual Basic
1
2
3
4
With ActiveWorkbook.Sheets("Лист1").Tab
    .ColorIndex = xlColorIndexNone ' макрорекордер пишет xlAutomatic (ошибка!)
    .TintAndShade = 0
End With
При попытке выполнить записанное макрорекордером для изменения цвета ярлычка листа получим ошибку времени выполнения. Макрорекордер пишет xlAutomatic, а по документации из справки следует, что надо пользоваться для этого xlColorIndexNone.
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
13.02.2015, 13:29  [ТС]
1. объединяем ячейки A1-B1, C1-D1, E1-F1
2. выделяем столбцы B, D, F и скрываем их
3. встаем на A1 и жмем поочередно клавишу вправо ... - работает как и должно- курсор последовательно переходит по ячейкам A1, C1, E1 - все правильно
4. встаем на E1 и жмем клавишу влево ... - и сразу переходим на A1 минуя C1 - ГЛЮК (если ячеек будет больше, то выделяемые ячейки так и будут скакать через одну)

Добавлено через 19 минут
1. находим один из столбцов, который находится справа листа за границей видимости листа ... например, последний столбец, который я вижу - S и часть T, а тот про который речь - например любой из следующих за ними ... к примеру возьмем столбец W
2. выделяем его и жмем Ctrl+Shift+вправо - выделяя все столбцы от W вправо - т.е. все следующие за ним
3. скрываем их
4. переходим в A1
5. и начинаем поочередно жать клавишу вправо ... жмем жмем ... и смотрим на нижний скролл ... - все правильно - ползунок скрола начинает постепенно сдвигаться вправо тоже
6. но как только появлется последний перед скрытыми столбцами столбец V и появлется зона, в которой расположены скрытые столбцы - скролл расширяется, словно слева и нет никакой части сдвинутой страницы ...
7. и ... если нажать на стрелку слева от скрола - страничка соответственно сместится и появится небольшая часть листа, ранее скрытая слева ... а вот если схватить за сам ползунок скрола и потянуть его влево - будет резкий переход в левую часть страницы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.02.2015, 13:29

Бывший профессионал cs 1.6 просит решения проблемы
Зайду немного из далека. Мне вот уже под 30 лет, и как бы это смешно не звучало, я до сих пор в свободное от работы время играю в старую...

USB устройство, проблемы и пути решения.
Народ, что делать с флешкой - сохраняю на ней файлы (форматы разные), после не могу их открыть, пишет что файлы созданы в других...

Проблемы с выводом решения на стандартный поток
Вот текст задания: Напишите программу, на вход которой даются четыре числа a, b, c и d, каждое в своей строке. Программа должна...

Прошу помощи решения проблемы в перекрестном...
Ребята, прошу помощи. Есть перекрестный запрос: TRANSFORM Count(.TypObor) AS SELECT .LICS, Count(.TypObor) AS Всего FROM ...

Каковы возможные решения проблемы рывков в эмуляторе?
пишу игру, кадры перерисовываются в методе, который контролируется таймером. поставил 60 кадров. на телефоне все прекрастно, естественно....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru