Меню

Invalid outside procedure ошибка

Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.

Нырков Сергей
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 18.07.2009 (Сб) 18:19

Загадочное сообщение от VB»invalid outside procedure»

Здравствуйте Алексей. Вы никогда не встречались с ошибкой «invalid outside procedure»?, на перевод хватает даже моего английского, – но при чём здесь внешняя процедура, — происходит присвоение строковых значений элементам массива VB выделяет имено строковое значение, массив объявлен как строковый,любуюсь на это сообщение третий день,за это время 4 раза переустановил VB никаких мыслей нет, если можете помогите
С уважением Нырков Сергей


alibek
Большой Человек
Большой Человек
 
Сообщения: 14204
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Загадочное сообщение от VB»invalid outside procedure»

Сообщение alibek » 18.07.2009 (Сб) 19:47

Перенес.
Первое предупреждение.

Lasciate ogni speranza, voi ch’entrate.


iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Загадочное сообщение от VB»invalid outside procedure»

Сообщение iGrok » 18.07.2009 (Сб) 21:24

Нырков Сергей писал(а):но при чём здесь внешняя процедура

Вашего английского таки не хватило. Outside относится не к «procedure» а к «invalid». Соответственно, кардинально меняется и перевод.

label:

cli

jmp label


Нырков Сергей
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 18.07.2009 (Сб) 18:19

Re: Загадочное сообщение от VB»invalid outside procedure»

Сообщение Нырков Сергей » 19.07.2009 (Вс) 13:02

Это ответ на ответ.Поставил русский VB и получил сообщение «плохая внешняя процедура» Так-что перевод не при чем.У меня происходит присвоение строковых значений (кирилица) элементам массива, VB выделяет имено строковое значение (между кавычками), массив объявлен как строковый,любуюсь на это сообщение третий день,за это время 4 раза переустановил VB никаких мыслей нет, если кто может помогитеЕщё способ получить это сообщение – использовать array и не важно какие данные помещать в массив результат будет тем-же выделение первого элемента в массиве
Пробовал вариант с collection то-же самое
Если вирус то уж больно экзотический
С уважением Нырков Сергей


alibek
Большой Человек
Большой Человек
 
Сообщения: 14204
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Загадочное сообщение от VB»invalid outside procedure»

Сообщение alibek » 19.07.2009 (Вс) 13:48

Нырков Сергей писал(а):Это ответ на ответ.Поставил русский VB и получил сообщение «плохая внешняя процедура»

Не рекомендуется ходить на форум в нетрезвом виде. Перечитай еще раз текст сообщения и вникни в смысл фразы «недопустимо за пределами процедуры». Что значит «за пределами» понимаешь?

Lasciate ogni speranza, voi ch’entrate.


Нырков Сергей
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 18.07.2009 (Сб) 18:19

Re: Загадочное сообщение от VB»invalid outside procedure»

Сообщение Нырков Сергей » 19.07.2009 (Вс) 20:38

Большое- пребольшое СПАСИБО. Я-бы никогда не перевел invalid как недопустимо, у меня этот блок находится в секции general и руссифицировал мой экземпляр VB такой-же переводчик как я,т.е. в одном месте я допустил две ошибки 1)засунул присвоение в секцию general,2) особо не вдумывался при переводе. Ещё раз спасибо, и удачи всем нам



Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 2

Permalink

Cannot retrieve contributors at this time

title keywords f1_keywords ms.prod ms.assetid ms.date ms.localizationpriority

Invalid outside procedure

vblr6.chm1040051

vblr6.chm1040051

office

46c00b2b-c656-9ad4-bff9-d341a6a7ecd5

06/08/2017

medium

The statement must occur within a Sub or Function, or a property procedure (Property Get, Property Let, Property Set). This error has the following cause and solution:

  • An executable statement, Static or ReDim, appears at module level.

    Static is unnecessary at module level, since all module-level variables are static. Use Dim instead of ReDim at module level. To create a dynamic array at module level, declare it with Dim using empty parentheses.

    Note At module level, you can use only comments and declarative statements, such as Const, Declare, Deftype, Dim, Option Base, Option Compare, Option Explicit, Option Private, Private, Public, and Type. The Sub, Function, and Property statements occur outside the body of their procedures, but within the procedure declaration.

For additional information, select the item in question and press F1 (in Windows) or HELP (on the Macintosh).

[!includeSupport and feedback]

For the life of me I cannot figure out why the following code is throwing a compile error with the message «Invalid outside procedure». It is highlighting the error on the starred line below.

Option Explicit

Dim shtThisSheet As Worksheets

**Set shtThisSheet = Application.Workbook("Formatting2.xlsm").Worksheets("Sheet1")**

Sub Formatting()

    With shtThisSheet

        With Range("A1")
            .Font.Bold = True
            .Font.Size = 14
            .HorizontalAlignment = xlLeft
        End With

        With Range("A3:A6")
            .Font.Bold = True
            .Font.Italic = True
            .Font.ColorIndex = 5
            .InsertIndent 1
        End With

        With Range("B2:D2")
            .Font.Bold = True
            .Font.Italic = True
            .Font.ColorIndex = 5
            .HorizontalAlignment = xlRight
        End With

        With Range("B3:D6")
            .Font.ColorIndex = 3
            .NumberFormat = "$#,##0"
        End With

    End With

End Sub

Michael Liu's user avatar

Michael Liu

50.3k13 gold badges115 silver badges146 bronze badges

asked Feb 10, 2016 at 15:31

Zack Withrow's user avatar

2

Set statements aren’t allowed outside procedures. Move the Set statement into the Formatting procedure:

Sub Formatting()
    Set shtThisSheet = Application.Workbook("Formatting2.xlsm").Worksheets("Sheet1")
    ...

(I’d move the Dim statement into the procedure as well. I prefer to avoid global variables when possible.)

answered Feb 10, 2016 at 15:33

Michael Liu's user avatar

Michael LiuMichael Liu

50.3k13 gold badges115 silver badges146 bronze badges

3

You can declare variables as global, but you cannot set them outside of a procedure such as a sub or function.

If you need this variable as a global, then it’s best to set it on.
Workbook_Open()

If you do not need it as a global, then move both the declaration and the set statement into your procedure

answered Feb 10, 2016 at 18:36

0 / 0 / 0

Регистрация: 04.04.2015

Сообщений: 33

1

19.05.2015, 15:15. Показов 2777. Ответов 20


Всем, доброго дня. Подскажите пожалуйста в чем может быть проблема. Вот отсюда: Готовые решения и полезные коды на Visual Basic 6.0
взял 11 пример. Попробовал скомпилировать его но компилятор на второй же строке выдал ошибку «Invalid otside procedure». На мой взгляд вроде все верно. В чем может быть проблема. Файлы проекта прилагаю.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

19.05.2015, 15:45

2

Там код похоже для Net.



0



0 / 0 / 0

Регистрация: 04.04.2015

Сообщений: 33

19.05.2015, 15:48

 [ТС]

3

А в чем разница?



0



es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

19.05.2015, 15:49

4

Разные языки.



0



0 / 0 / 0

Регистрация: 04.04.2015

Сообщений: 33

19.05.2015, 20:05

 [ТС]

5

Вообще в заголовке написано «Готовые решения и полезные коды на Visual Basic 6.0». Да и языки вроде должны быть похожими?

Добавлено через 4 часа 4 минуты
Да и потом, причем здесь для другого языка? Для VB здесь правильно написано.



0



es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

19.05.2015, 22:25

6

Цитата
Сообщение от vladh
Посмотреть сообщение

Да и потом, причем здесь для другого языка? Для VB здесь правильно написано.

Мало ли что где написано. Using …End Using — это чуждая конструкция.



0



0 / 0 / 0

Регистрация: 04.04.2015

Сообщений: 33

20.05.2015, 05:43

 [ТС]

7

Цитата
Сообщение от SoftIce
Посмотреть сообщение

Мало ли что где написано. Using …End Using — это чуждая конструкция.

Может быть, не знаю, но конструкция:
Dim tFile As String
tFile = «»
бейсиковская?! А мой компилятор Указывает на кавычки как на ошибку. Почему?



0



es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

20.05.2015, 06:24

8

Цитата
Сообщение от vladh
Посмотреть сообщение

А мой компилятор Указывает на кавычки как на ошибку. Почему?

Потому что Ваш компилятор поддерживает мою точку зрения, а Вы нет



0



0 / 0 / 0

Регистрация: 04.04.2015

Сообщений: 33

20.05.2015, 06:28

 [ТС]

9

Это здорово, что Вы «спелись» с моим компилятором, но все же, почему я в окне кода записываю только эти две строки, затем запускаю программу, а мне выдается ошибка?



0



es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

20.05.2015, 06:36

10

Цитата
Сообщение от vladh
Посмотреть сообщение

почему я в окне кода записываю только эти две строки

Какие две строки?

tFile = «»
— это должно быть в процедуре



0



0 / 0 / 0

Регистрация: 04.04.2015

Сообщений: 33

20.05.2015, 06:44

 [ТС]

11

Объясните пожалуйста подробнее. Почему присвоение переменной значения должно обязательно находится в процедуре? Почему этого не может быть просто в тексте программы?



0



es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

20.05.2015, 06:49

12

Лучший ответ Сообщение было отмечено The trick как решение

Решение

Цитата
Сообщение от vladh
Посмотреть сообщение

Почему присвоение переменной значения должно обязательно находится в процедуре?

Это вопрос не ко мне, а к разработчикам Бейсика.

Оставьте тот пример в покое, он для VB.Net.

Посмотрите другой пример, может он вам больше понравится.



2



es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

20.05.2015, 06:50

13

Цитата
Сообщение от vladh
Посмотреть сообщение

Почему этого не может быть просто в тексте программы?

А процедура — это разве не текст программы?

Вы просто скопипастили код, и даже не обозвали процедуру, хотя в конце этого кривого примера есть End Sub



0



0 / 0 / 0

Регистрация: 04.04.2015

Сообщений: 33

20.05.2015, 08:37

 [ТС]

14

Цитата
Сообщение от SoftIce
Посмотреть сообщение

Это вопрос не ко мне, а к разработчикам Бейсика.

Вы это серьезно? А почему я этого нигде пока не увидел?

Добавлено через 2 минуты

Цитата
Сообщение от SoftIce
Посмотреть сообщение

А процедура — это разве не текст программы?

Разумеется. Но Вы же наверное поняли о сем я?
И спасибо за пример. Попытаю. Правда сейчас побежал на работу, и уже там через час буду его посмотреть.

Добавлено через 1 час 43 минуты

Цитата
Сообщение от SoftIce
Посмотреть сообщение

Посмотрите другой пример, может он вам больше понравится.

Спасибо, понравился. Так значит, получается, в VB присвоение значений переменным вне таких структур как процедуры, функции невозможно? Почему нигде об этом в самоучителях я не увидел?



0



Эксперт WindowsАвтор FAQ

17951 / 7587 / 889

Регистрация: 25.12.2011

Сообщений: 11,317

Записей в блоге: 17

20.05.2015, 14:00

15

Цитата
Сообщение от vladh
Посмотреть сообщение

Так значит, получается, в VB присвоение значений переменным вне таких структур как процедуры, функции невозможно?

Можно. Как перечисление (Enum) или константа (Const).
Это же касается и большинства других языков, не только VB.



0



0 / 0 / 0

Регистрация: 04.04.2015

Сообщений: 33

20.05.2015, 14:08

 [ТС]

16

Цитата
Сообщение от Dragokas
Посмотреть сообщение

Это же касается и большинства других языков, не только VB.

А вот в Pure Basic можно.



0



3010 / 1516 / 189

Регистрация: 28.10.2011

Сообщений: 5,589

Записей в блоге: 6

20.05.2015, 14:23

17

Цитата
Сообщение от vladh
Посмотреть сообщение

Это здорово, что Вы «спелись» с моим компилятором

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

Цитата
Сообщение от vladh
Посмотреть сообщение

А вот в Pure Basic можно.

Там другие правила и метод организации программы, который отличается от того что в VB.



0



vladh

0 / 0 / 0

Регистрация: 04.04.2015

Сообщений: 33

20.05.2015, 15:00

 [ТС]

18

Цитата
Сообщение от locm
Посмотреть сообщение

Нужно принимать правила языка и компилятора пусть даже не все нравится

Разумеется я должен выполнять все правила языка. Попробовал бы я их не выполнить и мне сразу же идут сообщения об ошибках.

Цитата
Сообщение от locm
Посмотреть сообщение

Вместо установки своих правил, лучше изучит правила ЯП,

Чем я усердно последнее время и занимаюсь. Другое дело, что нигде пока я явно не прочел о том, что присваивать значения переменным можно не в любом месте программы. Хорошо, что мне здесь на это указали.

Добавлено через 16 минут
Вот, например, я сейчас смотрю «Вводный курс в Visual Basic. Крепкий орешек». И там в разделе функции и операторы в подразделе «Операторы VB (F-G)» я вижу пример:

Visual Basic
1
2
3
4
5
6
7
Dim a, b As Integer
b = 5
a = 1
If a = 1 Then GoTo METKA
b = 10 ' Этот участок никогда не выполнится
METKA:
Debug.Print b ' Выведет цифру 5

Я беру этот пример и заношу его в новый проект. Пытаюсь его откомпилировать и разумеется мне выскакивает сообщение об ошибке. Как мне к этому относиться?



0



locm

20.05.2015, 15:09

Не по теме:

Цитата
Сообщение от vladh
Посмотреть сообщение

Вот, например, я сейчас смотрю «Вводный курс в Visual Basic. Крепкий орешек»

Цитата
Сообщение от vladh
Посмотреть сообщение

If a = 1 Then GoTo METKA

Выбросите этот вводный курс. Ничему хорошему он не научит.



0



0 / 0 / 0

Регистрация: 04.04.2015

Сообщений: 33

20.05.2015, 15:16

 [ТС]

20

Цитата
Сообщение от locm
Посмотреть сообщение

Выбросите этот вводный курс. Ничему хорошему он не научит.

Вот видите, как подчас тяжело новичку. Можно и в трех соснах заплутать. И как теперь выбрать из скачанного в сети, что можно изучать, а что опасно?

Добавлено через 2 минуты
Странно, а почему изменили название темы. Теперешнее её название не соответствует поставленной в начале проблеме.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

20.05.2015, 15:16

Помогаю со студенческими работами здесь

Пожалуйста исправьте ошибку, никак не могу выполнить программу. Выходит ошибка «invalid procedure call or argument»
Sub max1()
Dim a, b, x, y As Double
x = Cells(1, 1)
y = Cells(1, 2)
a = (Sqr(x) + y ^ 3 +…

Создать абстрактный класс «Издание» и производные классы «Книга», «Статья», «Электронный ресурс»
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об…

Создать класс «Книга» с полями «название книги», «количество страниц», «год издания»
Создать класс Книга
поля: название книги,количество страниц,год издания
методы: вычислить сколько…

Построить иерархию классов «Журнал», «книга», «печатное издание», «учебник»
Помогите понять, правильно ли я сделал наследование?
Задание построить иерархию классов Журнал,…

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

Или воспользуйтесь поиском по форуму:

20

invalid outside procedure

Blin

Дата: Понедельник, 04.05.2015, 04:32 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
20% ±


Excel 2013

Хай.
Есть ексель книга, в ней 3 листа. пишу в ней vba скрипт

[vba]

Код

dim foo
dim bar
dim foo1
set foo = worksheets(«Лист1»)
dim …
dim …
sub cool_sub()
используем ранее объявленные переменные foo И bar
end sub
sub second_cool_sub()
используем ранее объявленные переменные foo И bar
end sub

[/vba]
смысл в том, что я хочу вначале один раз объявить некие переменные с именем листов, диапазонов. а далее во всех субах на них ссылаться.
При выполнении какой либо субы вылетает ошибка. Так нельзя?

 

Ответить

Pelena

Дата: Понедельник, 04.05.2015, 09:19 |
Сообщение № 2

Группа: Админы

Ранг: Местный житель

Сообщений: 18693


Репутация:

4250

±

Замечаний:
±


Excel 2016 & Mac Excel

Blin, есть такая примета: если автор вопроса не отписывается в своих темах, подошло решение или нет, то у отвечающих пропадает желание помогать такому автору, потому что нет смысла отвечать в пустоту


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

AndreTM

Дата: Понедельник, 04.05.2015, 10:02 |
Сообщение № 3

Группа: Друзья

Ранг: Старожил

Сообщений: 1762


Репутация:

498

±

Замечаний:
0% ±


2003 & 2010

Присвоение начальных значений переменным выполняется внутри процедур, вне процедуры вы можете только определять константы.
Естественно, вы можете организовать одну процедуру «инициализации» и вызывать её один раз в нужный момент, до исполнения всего основного кода.

Определение переменной через Dim вне кода процедуры даст вам переменную с областью видимости в пределах данного модуля. Если вам нужны «глобальные» переменные, которые будут иметь областью видимости всю книгу — используйте определение через Public, а не через Dim. Определять такие переменные надо только в общих модулях книги.

Для примера:
[vba]

Код

‘ поместите код в любой общий модуль
Public goFoo As Worksheet
Public gcName As String
Dim lcName As String

Sub initVars()
     gcName = «TEST»
     lcName = «test»
     Set goFoo = ThisWorkbook.Worksheets(«Лист1»)
End Sub

‘ процедуру можно поместить в несколько разных модулей, и проверять, запуская её два раза подряд
Sub test()
     If goFoo Is Nothing Then
         MsgBox «0. ‘Foo’ is nothing»
         initVars
     Else
         MsgBox «1. ‘Foo’ is ‘» & goFoo.name & «‘» & vbCrLf & _
             «‘NAME’ is ‘» & gcName & «‘» & vbCrLf & _
             «‘name’ is ‘» & lcName & «‘»
         Set goFoo = Nothing
     End If
End Sub

[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010

Сообщение отредактировал AndreTMПонедельник, 04.05.2015, 10:37

 

Ответить

Blin

Дата: Понедельник, 04.05.2015, 17:17 |
Сообщение № 4

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
20% ±


Excel 2013

‘ процедуру можно поместить в несколько разных модулей, и проверять, запуская её два раза подряд

Достаточно просто вызвать процедуру в начале каждого модуля, или надо обязательно проверять, чтоб не вызвать второй раз?

 

Ответить

AndreTM

Дата: Понедельник, 04.05.2015, 20:04 |
Сообщение № 5

Группа: Друзья

Ранг: Старожил

Сообщений: 1762


Репутация:

498

±

Замечаний:
0% ±


2003 & 2010

Достаточно просто вызвать процедуру в начале каждого модуля, или надо обязательно проверять…

Это ПРИМЕР :)
Вы вообще поняли, о чём речь шла? О том, что переменные, определенные внутри модуля, но вне процедур — должны быть проинициализированы до их использования, отдельной процедурой. И о том, что если вы собираетесь использовать переменные, определенные в каком-то модуле, вне этого модуля — то эти переменные должны быть публичными.
Саму методику как первоначальной инициализации, повторной реинициализации, а также освобождения памяти, плюс стратегию использования переменных — вы должны разрабатывать сами, исходя из решаемых вами задач…


Skype: andre.tm.007
Donate: Qiwi: 9517375010

 

Ответить

Blin

Дата: Вторник, 05.05.2015, 17:57 |
Сообщение № 6

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
20% ±


Excel 2013

дада, понял
[vba]

Код

Public goFoo As Worksheet

Public gcName As String

Dim lcName As String

Sub initVars()

gcName = «TEST»

lcName = «test»

Set goFoo = ThisWorkbook.Worksheets(«Лист1»)

End Sub

Sub test()

initVars

do some things…

End Sub

[/vba]

Сообщение отредактировал BlinВторник, 05.05.2015, 17:59

 

Ответить

  1. 11-29-2017, 05:01 PM


    #1

    shedragon713 is offline


    Registered User


    Exclamation Invalid outside procedure Error message

    Hello,
    I’m trying to declare variables & constants and am getting «Invalid outside procedure» error message on «SET» no matter where I put the following:

    What am I doing wrong? Any help is greatly appreciated.
    Thank you.


  2. 11-29-2017, 05:07 PM


    #2

    Re: Invalid outside procedure Error message

    The clue is in the message. You can’t carry out commands outside a procedure … that is, a subroutine or function.

    You can define the variables as public so they can be used and shared everywhere, but you have to set the values in a subroutine. Best bet is to use the Workbook Open Event handler.

    Trevor Shuttleworth — Excel Aid

    I dream of a better world where chickens can cross the road without having their motives questioned

    ‘Being unapologetic means never having to say you’re sorry’ John Cooper Clarke


  3. 11-29-2017, 05:38 PM


    #3

    shedragon713 is offline


    Registered User


    Re: Invalid outside procedure Error message

    Thanks. I misread the error message — it should say «invalid outside *of* procedure». Thanks again.


  4. 11-29-2017, 06:17 PM


    #4

    Re: Invalid outside procedure Error message

    You’re welcome. Thanks for the rep.

    Not sure I see the difference that makes, if I’m honest

    «Invalid outside procedure» or «Invalid outside a procedure» or «Invalid outside of procedure» or «Invalid outside of a procedure»; all much of a muchness. It is simply stating that ‘the instruction is «Invalid outside procedure»‘. I guess the intention is to keep the message short but maybe in this case it’s «less is less» not «less is more».


  • #2

Functions need to be stored in Standard Modules, like: Module1 and not be stored in a Sheet module, like: Sheet1, to work universally.

To call a function you need to be within a «Sub» or use them in a Cell as you would any standard Excel function.

Function myAddr()
Dim myStr$

myStr = ActiveCell.Address

myAddr = myStr
End Function

Sub useMyFunction()

MsgBox myAddr

ActiveSheet.Range(«A1»).Value = myAddr
End Sub

and in a cell:

=myAddr()

If done any other way you will get that error.

  • #3

yeah, i have the function in a module and I am calling it from a cell. The function works fine when its in the module of the workbook i am calling from, but I get that error when that function is in the personal.xls module.

  • #5

So i have created the xla file and included it as an add-in but it still doesnt work (even for a very simple test function). Do you have any ideas? Thanks for your help thus far.

  • #6

Outside of setting a VBA reference to your personal.xls, I do not see why your addin does not work?

Did you load the addin?
Does it show as loaded, when you go to the Addin wizard?

  • #7

This is usually a sign of a syntactical error, for example putting an executable statement outside of a subroutine (or function). What module does the VBE show when it reports the error? What line does it select? What does the code in that module look like?

patl said:

I have created a library of functions and put them in my Personal Macro Workbook. When i try to call them though, i get a «Invalid Outside Procedure» error. Any help would be greatly appreciated. Thanks.

  • Remove From My Forums
  • Question

  • Hello all,

    I am trying to convert a string to UTF-8 in VBA-Excel, my final aim is to do URL-encoding to UTF-8.

    After a lot of searches I found this code that can help me to implement, it uses the Encoding Class:
    http://msdn.microsoft.com/en-us/library/system.text.encoding.aspx 

    It starts with:

    Imports System
    Imports System.Text
    Imports Microsoft.VisualBasic

    But when I put the code example in the excel-VBA editor I get an error «Invalid outside procedure».

    Please help, what sould I do?

    p.s: if anyone has an example that can implement all the URL encoding to UTF-8 I will be grathfull to.

Answers

  • This is VB.NET code and the classes/methods you want to use cannot be used in VBA directly.  What you can do is to look for a replacement which can be used in VBA directly or to create a VB.NET DLL, expose the desired functionality to COM and then
    reference the .NET assembly (or more specifically, the TLB) from VBA.  However, I’d recomment to take the first of the two ways I described.


    Herfried K. Wagner [MVP]

    • Marked as answer by

      Saturday, June 26, 2010 2:48 PM

  • If you want to ask your question in the VBA forum you can find it here

     http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/c147bae1-c9db-4ae8-9557-43713004cc94


    Coding4fun Be a good forum member mark posts that contain the answers to your questions or those that are helpful

    Please format the code in your posts with the button . Makes it easier to read . Or use the Forum Code Formatter by JohnWein http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/bf977a14-d9d4-4e84-9784-bf76b9e23261

    • Marked as answer by
      Liliane Teng
      Saturday, June 26, 2010 2:48 PM

  • Hello elAlladin,
    Thanks for your post.
    VBA stands for Visual Basic for Applications which is available in Excel, and other office applications.
    About VB.net, one can create a stand-alone windows application, which is not possible with VBA.
    Check the following link about their detailed difference. Hope it helpful.
    http://allfaq.org/forums/t/178686.aspx
    http://answers.google.com/answers/threadview/id/217809.html

    This forum is for VB.NET questions only (e.g. Visual Basic 2003, Visual Basic 2005, Visual Basic 2008).
    For VBA questions,you could post it on VBA forums as bdbodger suggested for better and  quicker support.

    Best regards,
    Liliane


    Please mark the replies as answers if they help and unmark them if they provide no help. Thanks

    • Marked as answer by
      Liliane Teng
      Saturday, June 26, 2010 2:48 PM

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Invalid object name sql ошибка
  • Invalid normal index 3ds max ошибка