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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru