Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/29: Рейтинг темы: голосов - 29, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 6
Excel

Передача значения переменной из функции в процедуру

06.02.2019, 09:20. Показов 5843. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Нужна помощь в понимании синтаксиса передачи значения переменной из функции в процедуру или из подпроцедуры в процедуру.
В чем задача:
1) есть 5 файлов с данными, которые будут записываться потом в массив;
2) нужные данные обозначены меткой напротив, например, "1" напротив месторождения по которому потом нужно собрать данные;
3) главная процедура открывает 5 этих файлов и записывает в массив их полные адреса;
4) главная процедура передает массив в функцию, которая должна открыть последовательно эти 5 файлов и посчитать эти метки "1";
5) метки считаются накоплением счетчика;
6) затем этот счетчик нужно вернуть обратно в главную процедуру, чтобы использовать по своему усмотрению.

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

Код написал такой:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Sub Data_Picking()
Dim oFD As FileDialog
Dim x, lf As Long
Dim FileArr()
Set oFD = Application.FileDialog(msoFileDialogFilePicker)
With oFD
    .AllowMultiSelect = True
    .Title = "Выберите файлы с данными"
    .Filters.Clear
    .Filters.Add "Excel files", "*.xls*;*.xla*", 1
    .InitialFileName = "C:\"
    .InitialView = msoFileDialogViewDetails
    
    If oFD.Show = 0 Then Exit Sub
    
    ReDim FileArr(1 To .SelectedItems.Count)
    For lf = 1 To .SelectedItems.Count
        FileArr(lf) = .SelectedItems(lf)
    Next
End With
Field_Counter FileArr
 
MsgBox Field_Counter 'ВОТ ЗДЕСЬ НУЖНО ВОЗВРАТИТЬ ЭТУ ПЕРЕМЕННУЮ-СЧЕТЧИК
End Sub
Function Field_Counter(ByRef FileArr() As Variant) As Integer
Dim i As Range
For ii = 1 To UBound(FileArr, 1)
Workbooks.Open FileArr(ii)
r = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
For Each i In Range(Cells(1, 4), Cells(r, 4))
  If i.Value = "1" Then k = k + 1
Next i
Next ii
MsgBox "Не пустых ячеек " & k
End Function
Уважаемые форумчане, помогите разобраться. К логике макроса прошу претензий не предъявлять. Принципиально хочу разобраться с передачей данных из одной процедуры в другую, чтоб не писать программы линейным способом.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.02.2019, 09:20
Ответы с готовыми решениями:

Передача значения строковой переменной в следующие функции (консоль)
Вероятно плохо искал, раз не нашел. Потому что, как мне кажется, ничего сложного в этом быть не должно. Специально сделал простенький...

Передача значения переменной i цикла внутрь функции цикла
Имеется 3 input type range <p>Часы</p> <input type="range" class="countdownRange" min="0" max="60" value="0"...

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

2
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
06.02.2019, 09:29
Лучший ответ Сообщение было отмечено CJK как решение

Решение

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

Добавлено через 3 минуты
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub glavnaja()
Dim t&
t = t + 1
MsgBox t
Call podproc(t)
MsgBox t
End Sub
 
Sub podproc(x&)
x = x * 3
End Sub
1
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 6
06.02.2019, 09:32  [ТС]
Спасибо, Hugo121, помогло.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.02.2019, 09:32
Помогаю со студенческими работами здесь

Передача значения массива в процедуру
такой вот код var Form1: TForm1; ArrOfsteps: array of integer; PROVERKA,masI: integer; procedure...

передача переменной в процедуру, или как определить какая картинка была нажата
помогите передать переменную в процедуру. или подскажите как определить (номер\имя\чтонибуть уникальное) нажатой картинки procedure...

Передача значения из компонента в процедуру OnClick
Необходимо из компонента Edit1 взять его значение и объявить два массива до этого значения (visit, C) При таком раскладе ничего не...

Передача функции переменной и вызов переменной
Вот как реализовал, правда не работает)) Подскажите где что не так? При нажатии на button1 выполняется функция function get1() которая...

Передача значения и передача переменной
объясните мне разницу...и с кодами пожалуйста...думаю передача значений это через ссылки\указатели,а передача переменных-переменных ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru