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

Вход

Регистрация

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

 

= Мир MS Excel/Передача данных между двух макросов. - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Передача данных между двух макросов.
MisterYu Дата: Вторник, 29.08.2017, 09:54 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Доброго всем времени.

Есть две книги ( книга 1 и книга 2).
В каждой из книг есть по макросу.
В книге 1 запускается макрос 1, который открывает книгу 2 и запускает макрос 2 (книги2).
Как передать данные которые загрузил макрос 2, а именно массив m_ul.

Книга 1 с макросом
[vba]
Код

Public m_ul(500, 300) As String

Sub Start()
    p$ = Workbooks(Book1.xls").Path + "\Data\"
    Workbooks.Open p$ + "Book2.xls", ReadOnly
    Application.Run "Book2.xls!Module.Start(m_ul)"
End Sub
[/vba]

Книга 2 с макрос
[vba]
Код

Public m_ul(500, 300) As String

Sub Start(m_ul() As String)
Dim Msg, Style, Title As String
    Msg = "Çàâàíòàæèòè äàí³ ïî Î.Ð.?"
    Style = vbYesNo + vbInformation + vbDefaultButton2
    Title = "Çàâàíòàæåííÿ áàçè Î.Ð."
    Response = MsgBox(Msg, Style, Title)
    Check = False
    If Response = vbYes Then
        On Error GoTo Label1
        p$ = Workbooks("Book1.xls").Path + "\Data\"
        Workbooks.Open p$ + "BASA.xls", ReadOnly
        Load UserForm1
        UserForm1.Show
        Workbooks("BASA.xls").Close SaveChanges:=False
        Workbooks("Book2.xls").Close SaveChanges:=False
        Workbooks("Book1.xls").Activate
        Check = True
    End If
Exit Sub
Label1:
    Msg = "Ôàéë äëÿ çàâàíòàæåííÿ íå â³äêðèâàºòüñÿ!"
    Msg1 = "Ïðîãðàììà çàâàíòàæåííÿ Î.Ð. áóäå çàêðèòà! "
    Style = vbOKOnly + vbCritical + vbDefaultButton2
    Title = "Ïîìèëêà"
    Response = MsgBox(Msg + Chr(13) + Msg1, Style, Title)
End Sub

'UserForm1

Private Sub UserForm_Activate()
Dim col_strok, col_kv, j As Integer
Dim n As Integer
Dim s, t111 As String
Dim ch As Boolean

Workbooks("BASA.xls").Activate
Erase m_ul
col_strok = Cells(Rows.Count, 1).End(xlUp).Row ''ïîñëåäíÿÿ çàïîëíåíàÿ ñòðîêà
col_street = 1
'Çàãðóçêà óëèö

For n = 1 To col_strok
    pos = InStr(1, R_Adr(n), " êâ.")
    s = Mid(R_Adr(n), 5, pos - 4)
    ch_street = False
    For i = 1 To col_street
        If s = m_ul(i, 0) Then
            ch_street = True
            Exit For
        End If
    Next i
    If ch_street = False Then
        m_ul(col_street, 0) = s
        m_ul(0, 0) = col_street
        col_street = col_street + 1
    End If
    DoEvents
    Call toolbar_1(CLng(n), CLng(col_strok))
Next n
'Çàãðóçêà êâàðòèð
Frame2.Visible = True
For n = 1 To col_strok
    pos = InStr(1, R_Adr(n), " êâ.")
    s = Mid(R_Adr(n), 5, pos - 4)
    'Range(Cells(n, 1), Cells(n, 1)).Show
    For i = 1 To col_street
        col_kv = 1
        Do While s = m_ul(i, 0)
        If m_ul(i, col_kv + 1) = "" Then
            m_ul(i, col_kv + 1) = Str(n)
            m_ul(i, 1) = col_kv
            Exit For
        Else
            col_kv = col_kv + 1
        End If
        Loop
    Next i
    DoEvents
    Call toolbar_2(CLng(n), CLng(col_strok))
Next n

Frame3.Visible = True
Call BubbleSort

Msg = "Çàâàíòàæåííÿ Î.Ð. çàâåðøåíî"
Style = vbOKOnly + vbInformation + vbDefaultButton2
Title = "Çàâàíòàæåííÿ"
Response = MsgBox(Msg, Style, Title)

Unload UserForm1
End Sub

[/vba]


Сообщение отредактировал MisterYu - Вторник, 29.08.2017, 10:01
 
Ответить
СообщениеДоброго всем времени.

Есть две книги ( книга 1 и книга 2).
В каждой из книг есть по макросу.
В книге 1 запускается макрос 1, который открывает книгу 2 и запускает макрос 2 (книги2).
Как передать данные которые загрузил макрос 2, а именно массив m_ul.

Книга 1 с макросом
[vba]
Код

Public m_ul(500, 300) As String

Sub Start()
    p$ = Workbooks(Book1.xls").Path + "\Data\"
    Workbooks.Open p$ + "Book2.xls", ReadOnly
    Application.Run "Book2.xls!Module.Start(m_ul)"
End Sub
[/vba]

Книга 2 с макрос
[vba]
Код

Public m_ul(500, 300) As String

Sub Start(m_ul() As String)
Dim Msg, Style, Title As String
    Msg = "Çàâàíòàæèòè äàí³ ïî Î.Ð.?"
    Style = vbYesNo + vbInformation + vbDefaultButton2
    Title = "Çàâàíòàæåííÿ áàçè Î.Ð."
    Response = MsgBox(Msg, Style, Title)
    Check = False
    If Response = vbYes Then
        On Error GoTo Label1
        p$ = Workbooks("Book1.xls").Path + "\Data\"
        Workbooks.Open p$ + "BASA.xls", ReadOnly
        Load UserForm1
        UserForm1.Show
        Workbooks("BASA.xls").Close SaveChanges:=False
        Workbooks("Book2.xls").Close SaveChanges:=False
        Workbooks("Book1.xls").Activate
        Check = True
    End If
Exit Sub
Label1:
    Msg = "Ôàéë äëÿ çàâàíòàæåííÿ íå â³äêðèâàºòüñÿ!"
    Msg1 = "Ïðîãðàììà çàâàíòàæåííÿ Î.Ð. áóäå çàêðèòà! "
    Style = vbOKOnly + vbCritical + vbDefaultButton2
    Title = "Ïîìèëêà"
    Response = MsgBox(Msg + Chr(13) + Msg1, Style, Title)
End Sub

'UserForm1

Private Sub UserForm_Activate()
Dim col_strok, col_kv, j As Integer
Dim n As Integer
Dim s, t111 As String
Dim ch As Boolean

Workbooks("BASA.xls").Activate
Erase m_ul
col_strok = Cells(Rows.Count, 1).End(xlUp).Row ''ïîñëåäíÿÿ çàïîëíåíàÿ ñòðîêà
col_street = 1
'Çàãðóçêà óëèö

For n = 1 To col_strok
    pos = InStr(1, R_Adr(n), " êâ.")
    s = Mid(R_Adr(n), 5, pos - 4)
    ch_street = False
    For i = 1 To col_street
        If s = m_ul(i, 0) Then
            ch_street = True
            Exit For
        End If
    Next i
    If ch_street = False Then
        m_ul(col_street, 0) = s
        m_ul(0, 0) = col_street
        col_street = col_street + 1
    End If
    DoEvents
    Call toolbar_1(CLng(n), CLng(col_strok))
Next n
'Çàãðóçêà êâàðòèð
Frame2.Visible = True
For n = 1 To col_strok
    pos = InStr(1, R_Adr(n), " êâ.")
    s = Mid(R_Adr(n), 5, pos - 4)
    'Range(Cells(n, 1), Cells(n, 1)).Show
    For i = 1 To col_street
        col_kv = 1
        Do While s = m_ul(i, 0)
        If m_ul(i, col_kv + 1) = "" Then
            m_ul(i, col_kv + 1) = Str(n)
            m_ul(i, 1) = col_kv
            Exit For
        Else
            col_kv = col_kv + 1
        End If
        Loop
    Next i
    DoEvents
    Call toolbar_2(CLng(n), CLng(col_strok))
Next n

Frame3.Visible = True
Call BubbleSort

Msg = "Çàâàíòàæåííÿ Î.Ð. çàâåðøåíî"
Style = vbOKOnly + vbInformation + vbDefaultButton2
Title = "Çàâàíòàæåííÿ"
Response = MsgBox(Msg, Style, Title)

Unload UserForm1
End Sub

[/vba]

Автор - MisterYu
Дата добавления - 29.08.2017 в 09:54
RAN Дата: Вторник, 29.08.2017, 10:03 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Нужно прекратить одевать штаны через голову, и написать нормальный макрос, который открывает книгу2, и проделывает все то, что прописано в макросе из этой книги. А существующий макрос либо удалить, либо игнорировать.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНужно прекратить одевать штаны через голову, и написать нормальный макрос, который открывает книгу2, и проделывает все то, что прописано в макросе из этой книги. А существующий макрос либо удалить, либо игнорировать.

Автор - RAN
Дата добавления - 29.08.2017 в 10:03
MisterYu Дата: Вторник, 29.08.2017, 10:08 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Нужно прекратить одевать штаны через голову, и написать нормальный макрос, который открывает книгу2, и проделывает все то, что прописано в макросе из этой книги. А существующий макрос либо удалить, либо игнорировать.

Если Вам не трудно подскажите что я не правильно делаю.
Я не правильно открываю книгу2?


Сообщение отредактировал MisterYu - Вторник, 29.08.2017, 10:29
 
Ответить
Сообщение
Нужно прекратить одевать штаны через голову, и написать нормальный макрос, который открывает книгу2, и проделывает все то, что прописано в макросе из этой книги. А существующий макрос либо удалить, либо игнорировать.

Если Вам не трудно подскажите что я не правильно делаю.
Я не правильно открываю книгу2?

Автор - MisterYu
Дата добавления - 29.08.2017 в 10:08
_Boroda_ Дата: Вторник, 29.08.2017, 10:45 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 17006
Репутация: 6667 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Давайте я немного перефразирую слова Андрея
Вам нужно в книге1 написать макрос, который вместо отсылки к макросу из Книги2
[vba]
Код
Application.Run "Book2.xls!Module.Start(m_ul)"
[/vba]
будет сам делать с этой Книгой2 все то, что делает с ней макрос "Start".
Другими словами, в Книге2 вообще нет макросов (или есть, но мы их не используем), а в Книге1 один (или несколько), отвечающих за всё

Правда, у Вас там еще и юзерформа, и открывается еще книга "BASA.xls", и ...

Ну тогда можно загрузить полученный в Книге2 массив на скрытый (или только что созданный) лист Книги1 (или Книги2), забрать его оттуда макросом, который в книге1 и потом лист удалить (или данные стереть)
Можно записать Ваш массив в текстовую переменную, ее записать во что-то, что не стирается - в реестр, свойство объекта Excel или еще куда (но еще нужно посмотреть, как проглотит длинную строку)
Проще всего писать на лист и потом брать оттуда


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДавайте я немного перефразирую слова Андрея
Вам нужно в книге1 написать макрос, который вместо отсылки к макросу из Книги2
[vba]
Код
Application.Run "Book2.xls!Module.Start(m_ul)"
[/vba]
будет сам делать с этой Книгой2 все то, что делает с ней макрос "Start".
Другими словами, в Книге2 вообще нет макросов (или есть, но мы их не используем), а в Книге1 один (или несколько), отвечающих за всё

Правда, у Вас там еще и юзерформа, и открывается еще книга "BASA.xls", и ...

Ну тогда можно загрузить полученный в Книге2 массив на скрытый (или только что созданный) лист Книги1 (или Книги2), забрать его оттуда макросом, который в книге1 и потом лист удалить (или данные стереть)
Можно записать Ваш массив в текстовую переменную, ее записать во что-то, что не стирается - в реестр, свойство объекта Excel или еще куда (но еще нужно посмотреть, как проглотит длинную строку)
Проще всего писать на лист и потом брать оттуда

Автор - _Boroda_
Дата добавления - 29.08.2017 в 10:45
AndreTM Дата: Вторник, 29.08.2017, 12:52 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Не, ну можно попробовать передать массив "для заполнения" по ссылке из первой книги, изменив вызов:
[vba]
Код
Application.Run "Book2.xls!Module.Start", m_ul
[/vba]Но тогда надо убедиться, чтобы в Book2 переменная передалась по ссылке (причем имя параметра в Start надо изменить на другое), плюс перед Unload form копировать содержимое "местного" m_ul во "внешний-ссылочный" (перед Load form данные внешнего массива в местный загружать не надо - он все равно очищается).

Но учитывая, что у вас там в Book2 юзерформа не только активно работает ещё с какими-то файлами, но и с интерфейсом - это все надо проверять.


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеНе, ну можно попробовать передать массив "для заполнения" по ссылке из первой книги, изменив вызов:
[vba]
Код
Application.Run "Book2.xls!Module.Start", m_ul
[/vba]Но тогда надо убедиться, чтобы в Book2 переменная передалась по ссылке (причем имя параметра в Start надо изменить на другое), плюс перед Unload form копировать содержимое "местного" m_ul во "внешний-ссылочный" (перед Load form данные внешнего массива в местный загружать не надо - он все равно очищается).

Но учитывая, что у вас там в Book2 юзерформа не только активно работает ещё с какими-то файлами, но и с интерфейсом - это все надо проверять.

Автор - AndreTM
Дата добавления - 29.08.2017 в 12:52
MisterYu Дата: Вторник, 29.08.2017, 13:04 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Ну тогда можно загрузить полученный в Книге2 массив на скрытый (или только что созданный) лист Книги1 (или Книги2), забрать его оттуда макросом, который в книге1 и потом лист удалить (или данные стереть)


Наверное такой способ и реализую.
Спасибо за подсказку.
 
Ответить
Сообщение
Ну тогда можно загрузить полученный в Книге2 массив на скрытый (или только что созданный) лист Книги1 (или Книги2), забрать его оттуда макросом, который в книге1 и потом лист удалить (или данные стереть)


Наверное такой способ и реализую.
Спасибо за подсказку.

Автор - MisterYu
Дата добавления - 29.08.2017 в 13:04
KuklP Дата: Вторник, 29.08.2017, 13:32 | Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
А мне интересно, что в строке:
[vba]
Код
Workbooks.Open p$ + "Book2.xls", ReadOnly
[/vba]
делает слово ReadOnly? Если бы я поставил первой строкой в модуле Option Explicit и попытался выполнить это, ВБА тут же сказал бы мне что я поц %)
Почитайте справку по Workbooks.Open Method. deal


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеА мне интересно, что в строке:
[vba]
Код
Workbooks.Open p$ + "Book2.xls", ReadOnly
[/vba]
делает слово ReadOnly? Если бы я поставил первой строкой в модуле Option Explicit и попытался выполнить это, ВБА тут же сказал бы мне что я поц %)
Почитайте справку по Workbooks.Open Method. deal

Автор - KuklP
Дата добавления - 29.08.2017 в 13:32
AndreTM Дата: Вторник, 29.08.2017, 13:59 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
А если бы не поставил? :)

Кстати, что интересно - если использовать эту команду именно в таком виде - то ошибок-то и не получим.
Понятное дело, что никакого "открыть файл только для чтения" не будет, но: интерпретация имени переменной "ReadOnly", если она до этого ещё не получила значение, применительно ко второму параметру метода .Wiorkbooks.Open - будет произведена как "Vаriant, 0", что, опять же, применительно к месту параметра в методе - будет рассмотрено как UpdateLinks:=0, т.е. "не обновлять внешние ссылки при открытии файла".

Вот так и возникают те самые непонятные проблемы, что решают консилиумом и неделями, а ведь там человек всего лишь подставил (вроде правильно) True в третий параметр .Open'а :D


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеА если бы не поставил? :)

Кстати, что интересно - если использовать эту команду именно в таком виде - то ошибок-то и не получим.
Понятное дело, что никакого "открыть файл только для чтения" не будет, но: интерпретация имени переменной "ReadOnly", если она до этого ещё не получила значение, применительно ко второму параметру метода .Wiorkbooks.Open - будет произведена как "Vаriant, 0", что, опять же, применительно к месту параметра в методе - будет рассмотрено как UpdateLinks:=0, т.е. "не обновлять внешние ссылки при открытии файла".

Вот так и возникают те самые непонятные проблемы, что решают консилиумом и неделями, а ведь там человек всего лишь подставил (вроде правильно) True в третий параметр .Open'а :D

Автор - AndreTM
Дата добавления - 29.08.2017 в 13:59
MisterYu Дата: Вторник, 29.08.2017, 15:51 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Не, ну можно попробовать передать массив "для заполнения" по ссылке из первой книги, изменив вызов:
Application.Run "Book2.xls!Module.Start", m_ul


Вот что у меня получилось.
Книга 1
[vba]
Код

Sub Start()
    p$ = Workbooks("Book1.xls").Path + "\Data\"
    Workbooks.Open p$ + "book2.xls", ReadOnly
    Application.Run "book2.xls!Module.Start", m_ul
End Sub
[/vba]
Книга 2

[vba]
Код

Sub Start(mas_ul() As String)
Dim Msg, Style, Title As String
    Msg = "Завантажити дані по О.Р.?"
    Style = vbYesNo + vbInformation + vbDefaultButton2
    Title = "Завантаження бази О.Р."
    Response = MsgBox(Msg, Style, Title)
    Check = False
    If Response = vbYes Then
        On Error GoTo Label1
        p$ = Workbooks("book1.xls").Path + "\Data\"
        Workbooks.Open p$ + "BASA.xls", ReadOnly
        Load UserForm1
        UserForm1.Show
        mas_ul = m_ul
        Unload UserForm1
        Workbooks("BASA.xls").Close SaveChanges:=False
        'Workbooks("book2.xls").Close SaveChanges:=False
        Workbooks("book1.xls").Activate
        Check = True
    End If
Exit Sub
Label1:
    Msg = "Файл для завантаження не відкривається!"
    Msg1 = "Программа завантаження О.Р. буде закрита! "
    Style = vbOKOnly + vbCritical + vbDefaultButton2
    Title = "Помилка"
    Response = MsgBox(Msg + Chr(13) + Msg1, Style, Title)
End Sub
[/vba]

Получается я сохраняю свой массив в mas_ul, который должен вернутся в книгу 1 (макрос 1) согласно-> Sub Start(mas_ul() As String)

или я что то не понимаю.


Сообщение отредактировал MisterYu - Вторник, 29.08.2017, 15:52
 
Ответить
Сообщение
Не, ну можно попробовать передать массив "для заполнения" по ссылке из первой книги, изменив вызов:
Application.Run "Book2.xls!Module.Start", m_ul


Вот что у меня получилось.
Книга 1
[vba]
Код

Sub Start()
    p$ = Workbooks("Book1.xls").Path + "\Data\"
    Workbooks.Open p$ + "book2.xls", ReadOnly
    Application.Run "book2.xls!Module.Start", m_ul
End Sub
[/vba]
Книга 2

[vba]
Код

Sub Start(mas_ul() As String)
Dim Msg, Style, Title As String
    Msg = "Завантажити дані по О.Р.?"
    Style = vbYesNo + vbInformation + vbDefaultButton2
    Title = "Завантаження бази О.Р."
    Response = MsgBox(Msg, Style, Title)
    Check = False
    If Response = vbYes Then
        On Error GoTo Label1
        p$ = Workbooks("book1.xls").Path + "\Data\"
        Workbooks.Open p$ + "BASA.xls", ReadOnly
        Load UserForm1
        UserForm1.Show
        mas_ul = m_ul
        Unload UserForm1
        Workbooks("BASA.xls").Close SaveChanges:=False
        'Workbooks("book2.xls").Close SaveChanges:=False
        Workbooks("book1.xls").Activate
        Check = True
    End If
Exit Sub
Label1:
    Msg = "Файл для завантаження не відкривається!"
    Msg1 = "Программа завантаження О.Р. буде закрита! "
    Style = vbOKOnly + vbCritical + vbDefaultButton2
    Title = "Помилка"
    Response = MsgBox(Msg + Chr(13) + Msg1, Style, Title)
End Sub
[/vba]

Получается я сохраняю свой массив в mas_ul, который должен вернутся в книгу 1 (макрос 1) согласно-> Sub Start(mas_ul() As String)

или я что то не понимаю.

Автор - MisterYu
Дата добавления - 29.08.2017 в 15:51
MisterYu Дата: Вторник, 29.08.2017, 15:54 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добавлю.
В Юзер форме просто реализован статус загрузки данных с файла BASA.xls в массив m_ul.
Вот как бы хотелось передать этот массив в книгу 1 макроса 1.

Вообще хотел сохранить в book2 все макросы. И вызывать их с book1.


Сообщение отредактировал MisterYu - Вторник, 29.08.2017, 16:15
 
Ответить
СообщениеДобавлю.
В Юзер форме просто реализован статус загрузки данных с файла BASA.xls в массив m_ul.
Вот как бы хотелось передать этот массив в книгу 1 макроса 1.

Вообще хотел сохранить в book2 все макросы. И вызывать их с book1.

Автор - MisterYu
Дата добавления - 29.08.2017 в 15:54
AndreTM Дата: Вторник, 29.08.2017, 16:41 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
mas_ul = m_ul
говорит нам о том, что вы не программируете. И это не "у вас получилось", а "вы думаете, что вроде так должно быть".
Поскольку вы ещё и не демонстрируете сам исходный код, функционирующий, со всеми связанными с ним файлами, хотя бы в виде примеров (а только некий текст, который никак может быть не связан с той проблемой, что вы держите у себя в голове), то решить вашу "проблему" прочти невозможно :)


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
mas_ul = m_ul
говорит нам о том, что вы не программируете. И это не "у вас получилось", а "вы думаете, что вроде так должно быть".
Поскольку вы ещё и не демонстрируете сам исходный код, функционирующий, со всеми связанными с ним файлами, хотя бы в виде примеров (а только некий текст, который никак может быть не связан с той проблемой, что вы держите у себя в голове), то решить вашу "проблему" прочти невозможно :)

Автор - AndreTM
Дата добавления - 29.08.2017 в 16:41
MisterYu Дата: Среда, 30.08.2017, 12:45 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
что вы не программируете


Я может и не программист как вы, но я пытаюсь научится.
Возможно я что то не понимаю и не знаю. Если у Вас есть какой то источник где я могу взять информацию для реализации данной задачи, Я буду Вам благодарен.

не демонстрируете сам исходный код


Я все кода предоставил в первом посте.
Сам процесс загрузки данных в массив m_ul происходит в Private Sub UserForm_Activate()

Спасибо за понимание.
 
Ответить
Сообщение
что вы не программируете


Я может и не программист как вы, но я пытаюсь научится.
Возможно я что то не понимаю и не знаю. Если у Вас есть какой то источник где я могу взять информацию для реализации данной задачи, Я буду Вам благодарен.

не демонстрируете сам исходный код


Я все кода предоставил в первом посте.
Сам процесс загрузки данных в массив m_ul происходит в Private Sub UserForm_Activate()

Спасибо за понимание.

Автор - MisterYu
Дата добавления - 30.08.2017 в 12:45
AndreTM Дата: Среда, 30.08.2017, 13:01 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Я все кода предоставил в первом посте.
Вы там показали только код основной функции и код функций только одной юзерформы.
А само описание юзерформы, и её объектов - мы где возьмем?
Кроме того, ваша функция и форма - вызывает другие процедуры/функции, а также другие файлы, и всё это влияет на функционал формы. А мы их не видим.


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
Я все кода предоставил в первом посте.
Вы там показали только код основной функции и код функций только одной юзерформы.
А само описание юзерформы, и её объектов - мы где возьмем?
Кроме того, ваша функция и форма - вызывает другие процедуры/функции, а также другие файлы, и всё это влияет на функционал формы. А мы их не видим.

Автор - AndreTM
Дата добавления - 30.08.2017 в 13:01
MisterYu Дата: Среда, 30.08.2017, 13:12 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Кроме того, ваша функция и форма - вызывает другие процедуры/функции, а также другие файлы, и всё это влияет на функционал формы. А мы их не видим.


Процедура сортировки данных массива.
[vba]
Код

Call BubbleSort
[/vba]

Функция считывания данных с ячейки
[vba]
Код

Function R_Adr(i As Integer) As String
If Range(Cells(i, 3), Cells(i, 3)).Value <> " " Then
    R_Adr = Range(Cells(i, 3), Cells(i, 3)).Text
End If
End Function
[/vba]


Сообщение отредактировал MisterYu - Среда, 30.08.2017, 13:13
 
Ответить
Сообщение
Кроме того, ваша функция и форма - вызывает другие процедуры/функции, а также другие файлы, и всё это влияет на функционал формы. А мы их не видим.


Процедура сортировки данных массива.
[vba]
Код

Call BubbleSort
[/vba]

Функция считывания данных с ячейки
[vba]
Код

Function R_Adr(i As Integer) As String
If Range(Cells(i, 3), Cells(i, 3)).Value <> " " Then
    R_Adr = Range(Cells(i, 3), Cells(i, 3)).Text
End If
End Function
[/vba]

Автор - MisterYu
Дата добавления - 30.08.2017 в 13:12
InExSu Дата: Воскресенье, 03.09.2017, 22:39 | Сообщение № 15
Группа: Друзья
Ранг: Ветеран
Сообщений: 650
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
Положить массив на лист
[vba]
Код
Sub Start()
  p$ = Workbooks("Book1.xls").Path + "\Data\"
  Workbooks.Open p$ + "Book2.xls", ReadOnly
  Sheets.Add After:=Sheets(Sheets.Count)
  ActiveSheet.Range("a1").Resize(UBound(m_ul), UBound(m_ul, 2)) = m_ul
  Application.Run "Book2.xls!Module.Start"
End Sub
[/vba]
Взять с листа
[vba]
Код
Sub Start()
  Dim m_ul()
  m_ul = ThisWorkBook.Worksheets(Sheets(Sheets.Count)).Range("a1").CurrentRegion.Value
' здесь ваш код  
End Sub
[/vba]
?


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac

Сообщение отредактировал InExSu - Воскресенье, 03.09.2017, 22:40
 
Ответить
СообщениеПоложить массив на лист
[vba]
Код
Sub Start()
  p$ = Workbooks("Book1.xls").Path + "\Data\"
  Workbooks.Open p$ + "Book2.xls", ReadOnly
  Sheets.Add After:=Sheets(Sheets.Count)
  ActiveSheet.Range("a1").Resize(UBound(m_ul), UBound(m_ul, 2)) = m_ul
  Application.Run "Book2.xls!Module.Start"
End Sub
[/vba]
Взять с листа
[vba]
Код
Sub Start()
  Dim m_ul()
  m_ul = ThisWorkBook.Worksheets(Sheets(Sheets.Count)).Range("a1").CurrentRegion.Value
' здесь ваш код  
End Sub
[/vba]
?

Автор - InExSu
Дата добавления - 03.09.2017 в 22:39
  • Страница 1 из 1
  • 1
Поиск:

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