Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как вызвать функцию из процедуры? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Как вызвать функцию из процедуры?
Юрий_Нд Дата: Вторник, 21.05.2019, 22:58 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Доброй ночи всем.
К на листе обычного Excel моя формула-функция выглядит следующим образом:
Код
=ИНТЕР($F$34;'Исх табл'!$C$7:$C$78;'Исх табл'!$D$7:$D$78)

Можно ли эту функцию вызвать из процедуры ВБА Excel и как она будет там выглядеть?
Спасибо ___________ Юрий.


Сообщение отредактировал Юрий_Нд - Вторник, 21.05.2019, 23:02
 
Ответить
СообщениеДоброй ночи всем.
К на листе обычного Excel моя формула-функция выглядит следующим образом:
Код
=ИНТЕР($F$34;'Исх табл'!$C$7:$C$78;'Исх табл'!$D$7:$D$78)

Можно ли эту функцию вызвать из процедуры ВБА Excel и как она будет там выглядеть?
Спасибо ___________ Юрий.

Автор - Юрий_Нд
Дата добавления - 21.05.2019 в 22:58
_Boroda_ Дата: Среда, 22.05.2019, 01:24 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация: 6505 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Например так (функцию свою пришлось писать в своем же примере - почто файл не прикладываете?)
[vba]
Код
Function ИНТЕР(a As Range, b As Range, c As Range)
    ar1 = b
    ar2 = c
    For i = 1 To UBound(ar1)
        If ar1(i, 1) = a Then
            x_ = ar2(i, 1)
            Exit For
        End If
    Next i
    ИНТЕР = x_
End Function

Sub tt()
    Range("H2") = ИНТЕР(Range("E1"), Range("A1:A5"), Range("B1:B5"))
End Sub
[/vba]
К сообщению приложен файл: 4564654.xlsm (14.7 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНапример так (функцию свою пришлось писать в своем же примере - почто файл не прикладываете?)
[vba]
Код
Function ИНТЕР(a As Range, b As Range, c As Range)
    ar1 = b
    ar2 = c
    For i = 1 To UBound(ar1)
        If ar1(i, 1) = a Then
            x_ = ar2(i, 1)
            Exit For
        End If
    Next i
    ИНТЕР = x_
End Function

Sub tt()
    Range("H2") = ИНТЕР(Range("E1"), Range("A1:A5"), Range("B1:B5"))
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 22.05.2019 в 01:24
Юрий_Нд Дата: Среда, 22.05.2019, 10:59 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Спасибо Борода.
Что бы я без Вас делал?
Во-первых извиняюсь, что не привел файл Excel. Но тут я подумал, что для ответа достаточно было бы одной Вашей строчки.
Во-вторых, к сожалению, Вы не учли одну маленькую особенность "моей" задачи.
У меня исходные таблицы находятся на листе "а", исходные данные на листе "б", вывод значения функции нужно выполнить на листе "в", а активным является в настоящий момент лист "г".
Вот такая "катавасия" получается...
п.с. Ответ Вы можете дать одной или несколькими строчками.
А впрочем, "как Вам удобнее будет".
К сообщению приложен файл: 111.xlsm (16.8 Kb)
 
Ответить
СообщениеСпасибо Борода.
Что бы я без Вас делал?
Во-первых извиняюсь, что не привел файл Excel. Но тут я подумал, что для ответа достаточно было бы одной Вашей строчки.
Во-вторых, к сожалению, Вы не учли одну маленькую особенность "моей" задачи.
У меня исходные таблицы находятся на листе "а", исходные данные на листе "б", вывод значения функции нужно выполнить на листе "в", а активным является в настоящий момент лист "г".
Вот такая "катавасия" получается...
п.с. Ответ Вы можете дать одной или несколькими строчками.
А впрочем, "как Вам удобнее будет".

Автор - Юрий_Нд
Дата добавления - 22.05.2019 в 10:59
_Boroda_ Дата: Среда, 22.05.2019, 11:06 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация: 6505 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Цитата Юрий_Нд, 22.05.2019 в 10:59, в сообщении № 3 ()
У меня исходные таблицы находятся на листе "а", исходные данные на листе "б", ...
И что? Какая разница? Укажите листы в отсылке к UDF
[vba]
Код
Sheets("в").Range("H2") = ИНТЕР(Sheets("б").Range("E1"), Sheets("а").Range("A1:A5"), Sheets("а").Range("B1:B5"))
[/vba]
К сообщению приложен файл: 111-3-1.xlsm (22.7 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Цитата Юрий_Нд, 22.05.2019 в 10:59, в сообщении № 3 ()
У меня исходные таблицы находятся на листе "а", исходные данные на листе "б", ...
И что? Какая разница? Укажите листы в отсылке к UDF
[vba]
Код
Sheets("в").Range("H2") = ИНТЕР(Sheets("б").Range("E1"), Sheets("а").Range("A1:A5"), Sheets("а").Range("B1:B5"))
[/vba]

Автор - _Boroda_
Дата добавления - 22.05.2019 в 11:06
Юрий_Нд Дата: Среда, 22.05.2019, 11:37 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Спасибо Борода.
Ещё подскажите пожалуйста, как ввести координаты не по именам ячеек "Н2", а по номеру строчки "2" и номеру колонки "7". И заодно, по всем остальным ячейкам тоже, чтобы больше уже Вас не беспокоить (Е1, А1, А5, В1, В5).
Я вот начал придумывать, но что-то у меня ничего не получается:
[vba]
Код
Sheets("â").Range(Cells(2, 7)) = ÈÍÒÅÐ(Sheets("á").Range("E1"), Sheets("à").Range("A1:A5"), Sheets("à").Range("B1:B5"))
[/vba]
и ещё, вдобавок, какие-то закорючки вылазят.
Но в коде всё выглядит прилично.


Сообщение отредактировал Юрий_Нд - Среда, 22.05.2019, 11:40
 
Ответить
СообщениеСпасибо Борода.
Ещё подскажите пожалуйста, как ввести координаты не по именам ячеек "Н2", а по номеру строчки "2" и номеру колонки "7". И заодно, по всем остальным ячейкам тоже, чтобы больше уже Вас не беспокоить (Е1, А1, А5, В1, В5).
Я вот начал придумывать, но что-то у меня ничего не получается:
[vba]
Код
Sheets("â").Range(Cells(2, 7)) = ÈÍÒÅÐ(Sheets("á").Range("E1"), Sheets("à").Range("A1:A5"), Sheets("à").Range("B1:B5"))
[/vba]
и ещё, вдобавок, какие-то закорючки вылазят.
Но в коде всё выглядит прилично.

Автор - Юрий_Нд
Дата добавления - 22.05.2019 в 11:37
_Boroda_ Дата: Среда, 22.05.2019, 11:40 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация: 6505 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
[vba]
Код
Sheets("â").Cells(2, 7)
[/vba]

https://docs.microsoft.com/ru-ru....%3Dtrue


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение[vba]
Код
Sheets("â").Cells(2, 7)
[/vba]

https://docs.microsoft.com/ru-ru....%3Dtrue

Автор - _Boroda_
Дата добавления - 22.05.2019 в 11:40
Юрий_Нд Дата: Среда, 22.05.2019, 12:04 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Извините, Борода.
Я уже и так, и сяк, а оно никак.
[vba]
Код
Sheets("в").Cells(2, 8) = ИНТЕР(Sheets("б").Cells(1, 5), Sheets("а").Cells(1, 1): Cells(5, 1), Sheets("а").Range("B1:B5"))
Sheets("в").Cells(2, 8) = ИНТЕР(Sheets("б").Cells(1, 5), Sheets("а").Range(.Cells(1, 1), .Cells(5, 1)), Sheets("а").Range("B1:B5"))
Sheets("в").Cells(2, 8) = ИНТЕР(Sheets("б").Cells(1, 5), Sheets("а").Range(Cells(1, 1), Cells(5, 1)), Sheets("а").Range("B1:B5"))
[/vba]
 
Ответить
СообщениеИзвините, Борода.
Я уже и так, и сяк, а оно никак.
[vba]
Код
Sheets("в").Cells(2, 8) = ИНТЕР(Sheets("б").Cells(1, 5), Sheets("а").Cells(1, 1): Cells(5, 1), Sheets("а").Range("B1:B5"))
Sheets("в").Cells(2, 8) = ИНТЕР(Sheets("б").Cells(1, 5), Sheets("а").Range(.Cells(1, 1), .Cells(5, 1)), Sheets("а").Range("B1:B5"))
Sheets("в").Cells(2, 8) = ИНТЕР(Sheets("б").Cells(1, 5), Sheets("а").Range(Cells(1, 1), Cells(5, 1)), Sheets("а").Range("B1:B5"))
[/vba]

Автор - Юрий_Нд
Дата добавления - 22.05.2019 в 12:04
_Boroda_ Дата: Среда, 22.05.2019, 12:06 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация: 6505 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
[vba]
Код
Sheets("в").Cells(2, 8) = ИНТЕР(Sheets("б").Cells(1, 5), Sheets("а").Range( Sheets("а").Cells(1, 1),  Sheets("а").Cells(5, 1)), Sheets("а").Range("B1:B5"))
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение[vba]
Код
Sheets("в").Cells(2, 8) = ИНТЕР(Sheets("б").Cells(1, 5), Sheets("а").Range( Sheets("а").Cells(1, 1),  Sheets("а").Cells(5, 1)), Sheets("а").Range("B1:B5"))
[/vba]

Автор - _Boroda_
Дата добавления - 22.05.2019 в 12:06
Юрий_Нд Дата: Среда, 22.05.2019, 12:55 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Уважаемый помощник Борода.
Пока я в состоянии полного физического и морального удовлетворения.
Но про должок помню.
Жди... те.
 
Ответить
СообщениеУважаемый помощник Борода.
Пока я в состоянии полного физического и морального удовлетворения.
Но про должок помню.
Жди... те.

Автор - Юрий_Нд
Дата добавления - 22.05.2019 в 12:55
Юрий_Нд Дата: Среда, 22.05.2019, 19:33 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
И всё-таки она не вертится.
Подскажите пожалуйста, почему?
К сообщению приложен файл: 123-3.xlsm (16.0 Kb)


Сообщение отредактировал Юрий_Нд - Среда, 22.05.2019, 19:45
 
Ответить
СообщениеИ всё-таки она не вертится.
Подскажите пожалуйста, почему?

Автор - Юрий_Нд
Дата добавления - 22.05.2019 в 19:33
Hugo Дата: Среда, 22.05.2019, 22:24 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Потому что функция - не процедура!
А у Бороды - функция функция ... Изучите её внимательно.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеПотому что функция - не процедура!
А у Бороды - функция функция ... Изучите её внимательно.

Автор - Hugo
Дата добавления - 22.05.2019 в 22:24
Юрий_Нд Дата: Среда, 22.05.2019, 23:14 | Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Hugo, я был бы очень благодарен, если бы Вы чуть больше и конкретнее высказали свои мысли.
Если Вы о том, что моя функция ничего не делает, согласен, в принципе она похожа на процедуру. Хотя вообще-то, она и на процедуру не похожа.
Согласен, бред какой-то.
Однако этот бред получился, когда я урезал свою прогу, "до не могу", чтобы влезть в 100 КБ. Кстати, в реальности, моя прога на 2.7 метра.
Но. И моя инженерная расчетная программа на 2.7 метра, и этот бессмысленный, урезанный примитив дает одну и ту же ошибку.
Поэтому прошу, закрыть глаза на смысловую нагрузку выложенного на форуме файла и сосредоточиться на ошибке 9.


Сообщение отредактировал Юрий_Нд - Четверг, 23.05.2019, 07:01
 
Ответить
СообщениеHugo, я был бы очень благодарен, если бы Вы чуть больше и конкретнее высказали свои мысли.
Если Вы о том, что моя функция ничего не делает, согласен, в принципе она похожа на процедуру. Хотя вообще-то, она и на процедуру не похожа.
Согласен, бред какой-то.
Однако этот бред получился, когда я урезал свою прогу, "до не могу", чтобы влезть в 100 КБ. Кстати, в реальности, моя прога на 2.7 метра.
Но. И моя инженерная расчетная программа на 2.7 метра, и этот бессмысленный, урезанный примитив дает одну и ту же ошибку.
Поэтому прошу, закрыть глаза на смысловую нагрузку выложенного на форуме файла и сосредоточиться на ошибке 9.

Автор - Юрий_Нд
Дата добавления - 22.05.2019 в 23:14
_Boroda_ Дата: Четверг, 23.05.2019, 09:45 | Сообщение № 13
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация: 6505 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Юрий, но вот смотрите, что у меня написано -
Function ИНТЕР(a As Range, b As Range, c As Range)
    '...
    ИНТЕР = x_
End Function

Мы обозвали функцию, а потом показали, что эта функция равна чему-то. А что у Вас? Вы назвали ее, но чему она в итоге равна?
Читайте по общим вопросам иногда яндекс, это намного быстрее, чем ждать ответов здесь


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЮрий, но вот смотрите, что у меня написано -
Function ИНТЕР(a As Range, b As Range, c As Range)
    '...
    ИНТЕР = x_
End Function

Мы обозвали функцию, а потом показали, что эта функция равна чему-то. А что у Вас? Вы назвали ее, но чему она в итоге равна?
Читайте по общим вопросам иногда яндекс, это намного быстрее, чем ждать ответов здесь

Автор - _Boroda_
Дата добавления - 23.05.2019 в 09:45
Юрий_Нд Дата: Четверг, 23.05.2019, 12:39 | Сообщение № 14
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Доброго дня, Уважаемый Борода.
Во-первых, я Вам крайне признателен, что до сих пор возитесь со мной и с моими "заморочками".
Во-вторых, в отношении Вашего замечания:
Мы обозвали функцию, а потом показали, что эта функция равна чему-то. А что у Вас? Вы назвали ее, но чему она в итоге равна?

... я уже говорил, что прекрасно понимаю это:
о том, что моя функция ничего не делает, согласен, в принципе она похожа на процедуру. Хотя вообще-то, она и на процедуру не похожа.
Согласен, бред какой-то.

но проблема, как я уверен, не в этом.
И чтобы уже поставить точку, с Вашим замечанием, я полностью заменил свою функцию Вашей. Правда немножко подкорректировал только одну строчку, потому что мои принцип: "Никогда не применять того, в чём я на 100% не уверен, или не понимаю..."
И что...? Да ничего... Как с яйцами, тоже фото, только в профиль...
А поэтому, в-третьих, как я предполагаю, если Excel сам кричит, что Ошибка 9, нужно сосредоточиться именно на этом.
Насколько я понял, ошибка 9, это когда мы допустим, в 7 элементный массив пытаемся впихнуть восьмой или девятый элемент. Или, допустим в качестве номера элемента пытаемся подсунуть дробное, а не целое число. Ну и все такое дальше.
Но как всё это применить к моему конкретному случаю, я не понимаю...
В-четвертых, можете поверить, я не сижу и не жду Вашего ответа. Да я пытаюсь что-то подправить, изменить, но у меня ничего не получается. Смысла информировать Вас о том, что у меня ничего не получается, не вижу.
Поэтому решил эту проблему оставить "на потом", а пока решаю другие "кирпичики" моей инженерной задачи.
А если, ничего не получится, я в конце концов прямо на расчетный лист размещу таблицу и прямо в процедуре несколько раз проинтерполирую мои табличные данные.
Но очень надеюсь, что до этого не дойдёт. И пока надежда только на Вас.
К сообщению приложен файл: 123-4.xlsm (17.6 Kb)


Сообщение отредактировал Юрий_Нд - Четверг, 23.05.2019, 14:09
 
Ответить
СообщениеДоброго дня, Уважаемый Борода.
Во-первых, я Вам крайне признателен, что до сих пор возитесь со мной и с моими "заморочками".
Во-вторых, в отношении Вашего замечания:
Мы обозвали функцию, а потом показали, что эта функция равна чему-то. А что у Вас? Вы назвали ее, но чему она в итоге равна?

... я уже говорил, что прекрасно понимаю это:
о том, что моя функция ничего не делает, согласен, в принципе она похожа на процедуру. Хотя вообще-то, она и на процедуру не похожа.
Согласен, бред какой-то.

но проблема, как я уверен, не в этом.
И чтобы уже поставить точку, с Вашим замечанием, я полностью заменил свою функцию Вашей. Правда немножко подкорректировал только одну строчку, потому что мои принцип: "Никогда не применять того, в чём я на 100% не уверен, или не понимаю..."
И что...? Да ничего... Как с яйцами, тоже фото, только в профиль...
А поэтому, в-третьих, как я предполагаю, если Excel сам кричит, что Ошибка 9, нужно сосредоточиться именно на этом.
Насколько я понял, ошибка 9, это когда мы допустим, в 7 элементный массив пытаемся впихнуть восьмой или девятый элемент. Или, допустим в качестве номера элемента пытаемся подсунуть дробное, а не целое число. Ну и все такое дальше.
Но как всё это применить к моему конкретному случаю, я не понимаю...
В-четвертых, можете поверить, я не сижу и не жду Вашего ответа. Да я пытаюсь что-то подправить, изменить, но у меня ничего не получается. Смысла информировать Вас о том, что у меня ничего не получается, не вижу.
Поэтому решил эту проблему оставить "на потом", а пока решаю другие "кирпичики" моей инженерной задачи.
А если, ничего не получится, я в конце концов прямо на расчетный лист размещу таблицу и прямо в процедуре несколько раз проинтерполирую мои табличные данные.
Но очень надеюсь, что до этого не дойдёт. И пока надежда только на Вас.

Автор - Юрий_Нд
Дата добавления - 23.05.2019 в 12:39
_Boroda_ Дата: Четверг, 23.05.2019, 12:48 | Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация: 6505 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Что-то с цитатами не то получилось у Вас в посте. Если есть 2 или более цитаты, то при редактировании поста все ломается

По макросу
1. Или уберите Option Explicit, или объявите переменные
2. Проверьте название листа - Вы его переименовали, а в макросе не поправили
3. Вот так работает
[vba]
Код
Function ИНТЕР(a As Range, b As Range, c As Range)
    ar1 = b
    ar2 = c
'    For i = 1 To UBound(ar1)
    For i = 1 To 7
        If ar1(i, 1) = a Then
            x_ = ar2(i, 1)
            Exit For
        End If
    Next i
    ИНТЕР = x_
End Function

Sub таб_парц_давл()
    With Sheets("Исх табл")
        Sheets("Экспер").Cells(71, 17) = ИНТЕР(Sheets("Экспер").Cells(71, 16), _
        .Range(.Cells(7, 3), .Cells(10, 3)), .Range(.Cells(7, 4), .Cells(10, 4)))
    End With
End Sub
[/vba]
К сообщению приложен файл: 123-4_1.xlsm (17.9 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЧто-то с цитатами не то получилось у Вас в посте. Если есть 2 или более цитаты, то при редактировании поста все ломается

По макросу
1. Или уберите Option Explicit, или объявите переменные
2. Проверьте название листа - Вы его переименовали, а в макросе не поправили
3. Вот так работает
[vba]
Код
Function ИНТЕР(a As Range, b As Range, c As Range)
    ar1 = b
    ar2 = c
'    For i = 1 To UBound(ar1)
    For i = 1 To 7
        If ar1(i, 1) = a Then
            x_ = ar2(i, 1)
            Exit For
        End If
    Next i
    ИНТЕР = x_
End Function

Sub таб_парц_давл()
    With Sheets("Исх табл")
        Sheets("Экспер").Cells(71, 17) = ИНТЕР(Sheets("Экспер").Cells(71, 16), _
        .Range(.Cells(7, 3), .Cells(10, 3)), .Range(.Cells(7, 4), .Cells(10, 4)))
    End With
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 23.05.2019 в 12:48
Юрий_Нд Дата: Четверг, 23.05.2019, 14:11 | Сообщение № 16
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Что-то с цитатами не то получилось у Вас

Да, вижу, подправил.
В программе изменил только название листа. И всё закрутилось.
Если можно, ещё два вопроса:
1. Это я такой рассеянный и невнимательный, или Вам всё-таки Excel как-то намекнул, что в коде обращение к несуществующему листу?
2. Я например в этом усматриваю конкретный косяк разработчиков Excel. Зачем было морочить голову с массивами, когда тут конкретная, элементарная ошибка?
А в остальном, я Вам очень благодарен. Большое спасибо и низкий земной поклон.
Должок вернул,
С уважением __________ Юрий.
 
Ответить
Сообщение
Что-то с цитатами не то получилось у Вас

Да, вижу, подправил.
В программе изменил только название листа. И всё закрутилось.
Если можно, ещё два вопроса:
1. Это я такой рассеянный и невнимательный, или Вам всё-таки Excel как-то намекнул, что в коде обращение к несуществующему листу?
2. Я например в этом усматриваю конкретный косяк разработчиков Excel. Зачем было морочить голову с массивами, когда тут конкретная, элементарная ошибка?
А в остальном, я Вам очень благодарен. Большое спасибо и низкий земной поклон.
Должок вернул,
С уважением __________ Юрий.

Автор - Юрий_Нд
Дата добавления - 23.05.2019 в 14:11
_Boroda_ Дата: Четверг, 23.05.2019, 14:26 | Сообщение № 17
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация: 6505 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
1. Я пошагово пошел в своей версии макроса и он поругался на строку с With. Там не может быть никакой иной, кроме названия листа, ошибки. Но даже если и с Вашей записью макроса работать, то см. п.2
2. Вам же написали "subscript out of range" - переводчик мне сказал (сам я вражеским языкам не обучен), что это означает "индекс вне диапазона". А в справке нужно все читать, а не только то, что нравится :D . Там не только про массивы, но и про коллекции. А листы книги - это как раз коллекция листов. Пункт 3 справки (снова через переводчик) "Вы ссылались на несуществующего члена коллекции".

По предыдущему посту - функция может ничего не делать, но если мы к ней обращаемся из другого места (макроса, функции), то она должна что-то возвращать. То есть обязательно должна быть запись ИНТЕР = что-нибудь


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение1. Я пошагово пошел в своей версии макроса и он поругался на строку с With. Там не может быть никакой иной, кроме названия листа, ошибки. Но даже если и с Вашей записью макроса работать, то см. п.2
2. Вам же написали "subscript out of range" - переводчик мне сказал (сам я вражеским языкам не обучен), что это означает "индекс вне диапазона". А в справке нужно все читать, а не только то, что нравится :D . Там не только про массивы, но и про коллекции. А листы книги - это как раз коллекция листов. Пункт 3 справки (снова через переводчик) "Вы ссылались на несуществующего члена коллекции".

По предыдущему посту - функция может ничего не делать, но если мы к ней обращаемся из другого места (макроса, функции), то она должна что-то возвращать. То есть обязательно должна быть запись ИНТЕР = что-нибудь

Автор - _Boroda_
Дата добавления - 23.05.2019 в 14:26
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!