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

Вход

Регистрация

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

 

= Мир MS Excel/Как создать дополнительные листы с независимыми расчетами? - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 212»
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как создать дополнительные листы с независимыми расчетами? (Макросы/Sub)
Как создать дополнительные листы с независимыми расчетами?
blayd2007 Дата: Воскресенье, 12.06.2016, 23:21 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Коллеги, есть файл, с макросами, так вот в этом файле, на листе есть кнопка расчет данных, нужно сделать так, чтоб данные рассчитывались на других таких же дополнительных листах (сделать копии листов - лист1, лист2 и т.д. и изменить немного код макроса) по хорошему нужно 5 листов. Расчет должен быть независим (каждый лист имеет свои параметры и считает все по своему) . У меня получается сделать так, что дополнительные листы, берут данные с первого листа и отображают в расчете одинаковые значения. Спасибо!
К сообщению приложен файл: 2938488.zip(43Kb)
 
Ответить
СообщениеКоллеги, есть файл, с макросами, так вот в этом файле, на листе есть кнопка расчет данных, нужно сделать так, чтоб данные рассчитывались на других таких же дополнительных листах (сделать копии листов - лист1, лист2 и т.д. и изменить немного код макроса) по хорошему нужно 5 листов. Расчет должен быть независим (каждый лист имеет свои параметры и считает все по своему) . У меня получается сделать так, что дополнительные листы, берут данные с первого листа и отображают в расчете одинаковые значения. Спасибо!

Автор - blayd2007
Дата добавления - 12.06.2016 в 23:21
gling Дата: Понедельник, 13.06.2016, 10:51 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация: 325 ±
Замечаний: 0% ±

2010
Расчет должен быть независим
Если изменить строку в модуле Var, может и будет считать как надо [vba]
Код
Global Const NS_IskhData = ActiveSheet.Name '"ИСХОД. ДАННЫЕ"
[/vba]
 
Ответить
Сообщение
Расчет должен быть независим
Если изменить строку в модуле Var, может и будет считать как надо [vba]
Код
Global Const NS_IskhData = ActiveSheet.Name '"ИСХОД. ДАННЫЕ"
[/vba]

Автор - gling
Дата добавления - 13.06.2016 в 10:51
blayd2007 Дата: Понедельник, 13.06.2016, 15:40 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Да, почти так я и делал, вот код

[vba]
Код
Global Const NS_IskhData1 = "ИСХОД. ДАННЫЕ"
Global Const NS_IskhData2 = "ИСХОД. ДАННЫЕ (2)"
[/vba]

Изменить его на?:

[vba]
Код
Global Const NS_IskhData = ActiveSheet.1 '"ИСХОД. ДАННЫЕ "
Global Const NS_IskhData = ActiveSheet.2 '"ИСХОД. ДАННЫЕ (2)"
[/vba] и т.д.
а в коде самого листа прописывал:
[vba]
Код

листа 1 Set dataSheet1 = ActiveWorkbook.Worksheets(NS_IskhData1)
листа2 Set dataSheet2 = ActiveWorkbook.Worksheets(NS_IskhData2)
[/vba]

И считали остальные листы по данным с листа 1


Сообщение отредактировал blayd2007 - Понедельник, 13.06.2016, 17:11
 
Ответить
СообщениеДа, почти так я и делал, вот код

[vba]
Код
Global Const NS_IskhData1 = "ИСХОД. ДАННЫЕ"
Global Const NS_IskhData2 = "ИСХОД. ДАННЫЕ (2)"
[/vba]

Изменить его на?:

[vba]
Код
Global Const NS_IskhData = ActiveSheet.1 '"ИСХОД. ДАННЫЕ "
Global Const NS_IskhData = ActiveSheet.2 '"ИСХОД. ДАННЫЕ (2)"
[/vba] и т.д.
а в коде самого листа прописывал:
[vba]
Код

листа 1 Set dataSheet1 = ActiveWorkbook.Worksheets(NS_IskhData1)
листа2 Set dataSheet2 = ActiveWorkbook.Worksheets(NS_IskhData2)
[/vba]

И считали остальные листы по данным с листа 1

Автор - blayd2007
Дата добавления - 13.06.2016 в 15:40
blayd2007 Дата: Вторник, 14.06.2016, 14:09 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Вот мои действия:
В модуле Var прописываю:
[vba]
Код
Global Const NS_IskhData1 = "лист 1"
Global Const NS_IskhData2 = "лист 2"
Global Const NS_IskhData3 = "лист 3"
Global Const NS_IskhData4 = "лист 4"
Global Const NS_IskhData5 = "лист 5"
[/vba]

В значении листа 1 прописываю:
[vba]
Код
    Set dataSheet = ActiveWorkbook.Worksheets(NS_IskhData1)
[/vba]
листа 2
[vba]
Код
    Set dataSheet = ActiveWorkbook.Worksheets(NS_IskhData2)
[/vba]
и т.д.

Если в модуле Func, в строке:
[vba]
Код
    Set dataSheet = ActiveWorkbook.Worksheets(NS_IskhData1)
[/vba]
ставить значение 1, то расчет происходит по данным с листа 1,
если 2, то все листы берут данные с листа 2 и т.д.,
а если прописать все по очереди,
[vba]
Код
Set dataSheet = ActiveWorkbook.Worksheets(NS_IskhData1)
Set dataSheet = ActiveWorkbook.Worksheets(NS_IskhData2)
Set dataSheet = ActiveWorkbook.Worksheets(NS_IskhData3)
[/vba]
и т.д.
то расчет по последнему в списке.
А как сделать, чтобы каждый лист брал значения со своего листа?
К сообщению приложен файл: 5_.rar(49Kb)


Сообщение отредактировал blayd2007 - Вторник, 14.06.2016, 14:13
 
Ответить
СообщениеВот мои действия:
В модуле Var прописываю:
[vba]
Код
Global Const NS_IskhData1 = "лист 1"
Global Const NS_IskhData2 = "лист 2"
Global Const NS_IskhData3 = "лист 3"
Global Const NS_IskhData4 = "лист 4"
Global Const NS_IskhData5 = "лист 5"
[/vba]

В значении листа 1 прописываю:
[vba]
Код
    Set dataSheet = ActiveWorkbook.Worksheets(NS_IskhData1)
[/vba]
листа 2
[vba]
Код
    Set dataSheet = ActiveWorkbook.Worksheets(NS_IskhData2)
[/vba]
и т.д.

Если в модуле Func, в строке:
[vba]
Код
    Set dataSheet = ActiveWorkbook.Worksheets(NS_IskhData1)
[/vba]
ставить значение 1, то расчет происходит по данным с листа 1,
если 2, то все листы берут данные с листа 2 и т.д.,
а если прописать все по очереди,
[vba]
Код
Set dataSheet = ActiveWorkbook.Worksheets(NS_IskhData1)
Set dataSheet = ActiveWorkbook.Worksheets(NS_IskhData2)
Set dataSheet = ActiveWorkbook.Worksheets(NS_IskhData3)
[/vba]
и т.д.
то расчет по последнему в списке.
А как сделать, чтобы каждый лист брал значения со своего листа?

Автор - blayd2007
Дата добавления - 14.06.2016 в 14:09
Manyasha Дата: Вторник, 14.06.2016, 14:41 | Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 1586
Репутация: 661 ±
Замечаний: 0% ±

Excel 2007, 2010
blayd2007, dataSheet может содержать только одно значение. Ваша запись с присвоением листов (Set dataSheet =...) аналогична
[vba]
Код
Sub t()
x = 1
x = 2
x = 3
MsgBox x
End Sub
[/vba]В результате x будет равен 3!

Используйте массивы:
[vba]
Код
    NS_IskhData = Array("лист 1", "лист 2", "лист 3", "лист 4", "лист 5")
    For Each x In NS_IskhData
        Set dataSheet = ActiveWorkbook.Worksheets(x)
        'Работа с листом...
    Next x
[/vba]или[vba]
Код
    For i = 1 To 5
        Set dataSheet = ActiveWorkbook.Worksheets("лист " & i)
        'Работа с листом...
    Next i
[/vba]


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеblayd2007, dataSheet может содержать только одно значение. Ваша запись с присвоением листов (Set dataSheet =...) аналогична
[vba]
Код
Sub t()
x = 1
x = 2
x = 3
MsgBox x
End Sub
[/vba]В результате x будет равен 3!

Используйте массивы:
[vba]
Код
    NS_IskhData = Array("лист 1", "лист 2", "лист 3", "лист 4", "лист 5")
    For Each x In NS_IskhData
        Set dataSheet = ActiveWorkbook.Worksheets(x)
        'Работа с листом...
    Next x
[/vba]или[vba]
Код
    For i = 1 To 5
        Set dataSheet = ActiveWorkbook.Worksheets("лист " & i)
        'Работа с листом...
    Next i
[/vba]

Автор - Manyasha
Дата добавления - 14.06.2016 в 14:41
sboy Дата: Вторник, 14.06.2016, 14:54 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 196
Репутация: 48 ±
Замечаний: 0% ±

Excel 2007
Добрый день.
Листы обьявлены в переменную. Проверяйте
К сообщению приложен файл: 5_.zip(79Kb)
 
Ответить
СообщениеДобрый день.
Листы обьявлены в переменную. Проверяйте

Автор - sboy
Дата добавления - 14.06.2016 в 14:54
sboy Дата: Вторник, 14.06.2016, 14:55 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 196
Репутация: 48 ±
Замечаний: 0% ±

Excel 2007
Manyasha, там не подойдет перебор листов, т.к. на каждый лист отдельная кнопка с расчетом...

в расчете [vba]
Код
Sub doRaschet(ByVal dataSheet As Worksheet)
[/vba]

а в кнопках на листе передаем значение листа
[vba]
Код

....
doRaschet (dataSheet)
...
[/vba]


Сообщение отредактировал sboy - Вторник, 14.06.2016, 14:58
 
Ответить
СообщениеManyasha, там не подойдет перебор листов, т.к. на каждый лист отдельная кнопка с расчетом...

в расчете [vba]
Код
Sub doRaschet(ByVal dataSheet As Worksheet)
[/vba]

а в кнопках на листе передаем значение листа
[vba]
Код

....
doRaschet (dataSheet)
...
[/vba]

Автор - sboy
Дата добавления - 14.06.2016 в 14:55
blayd2007 Дата: Вторник, 14.06.2016, 20:26 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Спасибо, за вашу помощь!
Сегодня проверю варианты, завтра отпишу.
 
Ответить
СообщениеСпасибо, за вашу помощь!
Сегодня проверю варианты, завтра отпишу.

Автор - blayd2007
Дата добавления - 14.06.2016 в 20:26
blayd2007 Дата: Среда, 15.06.2016, 10:02 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
К сожалению эти варианты не подошли, вот скрины ошибок.
Надеюсь, что сумеем справится с этой задачей!
К сообщению приложен файл: 5026212.zip(71Kb)
 
Ответить
СообщениеК сожалению эти варианты не подошли, вот скрины ошибок.
Надеюсь, что сумеем справится с этой задачей!

Автор - blayd2007
Дата добавления - 15.06.2016 в 10:02
blayd2007 Дата: Среда, 15.06.2016, 10:03 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
И вот скрины по предложению от sboy
К сообщению приложен файл: 2205353.zip(82Kb)
 
Ответить
СообщениеИ вот скрины по предложению от sboy

Автор - blayd2007
Дата добавления - 15.06.2016 в 10:03
RAN Дата: Среда, 15.06.2016, 10:08 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 0% ±

2010
Никаких ошибок, просто не объявленные переменные.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНикаких ошибок, просто не объявленные переменные.

Автор - RAN
Дата добавления - 15.06.2016 в 10:08
blayd2007 Дата: Среда, 15.06.2016, 10:15 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Что-то не срастается пока...
 
Ответить
СообщениеЧто-то не срастается пока...

Автор - blayd2007
Дата добавления - 15.06.2016 в 10:15
sboy Дата: Среда, 15.06.2016, 11:13 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 196
Репутация: 48 ±
Замечаний: 0% ±

Excel 2007
Не проверял, совет из серии "а вдруг сработает"

а в кнопках на листе передаем значение листа

....
Call doRaschet (dataSheet)
...
 
Ответить
СообщениеНе проверял, совет из серии "а вдруг сработает"

а в кнопках на листе передаем значение листа

....
Call doRaschet (dataSheet)
...

Автор - sboy
Дата добавления - 15.06.2016 в 11:13
blayd2007 Дата: Среда, 15.06.2016, 21:18 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Если я правильно все понял, то проверял, вот скрин.
К сообщению приложен файл: 3.2.zip(40Kb)
 
Ответить
СообщениеЕсли я правильно все понял, то проверял, вот скрин.

Автор - blayd2007
Дата добавления - 15.06.2016 в 21:18
blayd2007 Дата: Среда, 15.06.2016, 21:25 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Или нужно еще добавить?
[vba]
Код
Call
[/vba]

Чтобы получить
[vba]
Код
Call doRaschet (dataSheet)
[/vba]
 
Ответить
СообщениеИли нужно еще добавить?
[vba]
Код
Call
[/vba]

Чтобы получить
[vba]
Код
Call doRaschet (dataSheet)
[/vba]

Автор - blayd2007
Дата добавления - 15.06.2016 в 21:25
RAN Дата: Среда, 15.06.2016, 21:44 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 0% ±

2010
вот скрин.

Вы свои скрины смотреть пробовали? >(


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
вот скрин.

Вы свои скрины смотреть пробовали? >(

Автор - RAN
Дата добавления - 15.06.2016 в 21:44
blayd2007 Дата: Среда, 15.06.2016, 22:20 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Пробовал, просто уменьшал для сайта, видно конечно плохо, но основной принцип вроде понятен.
Исправлюсь, буду меньше сжимать.
Извините!
 
Ответить
СообщениеПробовал, просто уменьшал для сайта, видно конечно плохо, но основной принцип вроде понятен.
Исправлюсь, буду меньше сжимать.
Извините!

Автор - blayd2007
Дата добавления - 15.06.2016 в 22:20
RAN Дата: Среда, 15.06.2016, 22:24 | Сообщение № 18
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 0% ±

2010
но основной принцип вроде понятен.

На ваш вопрос, почему не работает, отвечаю
Хто его знает!
Основной принцип вроде понятен. lol


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
но основной принцип вроде понятен.

На ваш вопрос, почему не работает, отвечаю
Хто его знает!
Основной принцип вроде понятен. lol

Автор - RAN
Дата добавления - 15.06.2016 в 22:24
Manyasha Дата: Среда, 15.06.2016, 23:06 | Сообщение № 19
Группа: Модераторы
Ранг: Старожил
Сообщений: 1586
Репутация: 661 ±
Замечаний: 0% ±

Excel 2007, 2010
blayd2007, если вызываете с Call, то со скобками надо
[vba]
Код
Call doRaschet(dataSheet)
[/vba]если без него, то и без скобок
[vba]
Код
doRaschet dataSheet
[/vba]
дальше не могу ничего проверить из-за миссинга в библиотеках, если убираю его, то ругается на несуществующий тип CMethodOfMetering31 в функции Priv_15


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеblayd2007, если вызываете с Call, то со скобками надо
[vba]
Код
Call doRaschet(dataSheet)
[/vba]если без него, то и без скобок
[vba]
Код
doRaschet dataSheet
[/vba]
дальше не могу ничего проверить из-за миссинга в библиотеках, если убираю его, то ругается на несуществующий тип CMethodOfMetering31 в функции Priv_15

Автор - Manyasha
Дата добавления - 15.06.2016 в 23:06
blayd2007 Дата: Суббота, 18.06.2016, 10:49 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 47
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Очень мудрено все, а для меня особенно. У меня вообще опыт "газетных шапок", а реализовать много чего хочется, буквально недавно окунулся в мир vba, и только простейшего понимания.
Простите, если вопросы мои просты или тупы:).
Спросить больше не у кого.
 
Ответить
СообщениеОчень мудрено все, а для меня особенно. У меня вообще опыт "газетных шапок", а реализовать много чего хочется, буквально недавно окунулся в мир vba, и только простейшего понимания.
Простите, если вопросы мои просты или тупы:).
Спросить больше не у кого.

Автор - blayd2007
Дата добавления - 18.06.2016 в 10:49
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как создать дополнительные листы с независимыми расчетами? (Макросы/Sub)
Страница 1 из 212»
Поиск:

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