Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2010, 21:52   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Как в модуле, менять значение переменной в зависимости от выбранного Листа

Модуль:
Код:
Sub ПроверкаЗарПлаты()
Application.EnableEvents = False: Application.ScreenUpdating = False
    For dat = 0 To 30
        With Cells(dat * 44 + 39, 7) 
            .FormulaR1C1 = "=(R[-4]C[1]-R[4]C[1])*процент"
                .NumberFormat = "0"
            .Value = .Value
        End With
    Next
Application.EnableEvents = True: Application.ScreenUpdating = True
End Sub
Лист1 процент = 0,039
Лист2 процент = 0,042
Лист3 процент = 0,0465
valerij вне форума Ответить с цитированием
Старый 01.11.2010, 22:01   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Пока писал,Валера прикид успел поменять


Select Case WS_Name

Case "Лист1"

процент = 0,039
Case "Лист2"
процент = 0,042
---------
End Select
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 01.11.2010, 22:23   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
прикид успел поменять
Ага, но с кодом не получается, что не так?
Код:
Sub ПроверкаЗарПлаты()
Application.EnableEvents = False: Application.ScreenUpdating = False
    Select Case WS_Name
        Case "Лист1": процент = 0.039
            Case "Лист2": процент = 0.042
        Case "Лист3": процент = 0.0465
    For dat = 0 To 30
    With Cells(dat * 44 + 39, 7)
        .FormulaR1C1 = "=(R[-4]C[1]-R[4]C[1])*процент"
            .NumberFormat = "0"
        .Value = .Value
    End With
    Next
    End Select
Application.EnableEvents = True: Application.ScreenUpdating = True
End Sub
valerij вне форума Ответить с цитированием
Старый 01.11.2010, 22:30   #4
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Вот так можно:
Код:
Function Procent()

If (ActiveSheet.Name = "Ëèñò1") Then Procent = 0.039
If (ActiveSheet.Name = "Ëèñò2") Then Procent = 0.042
If (ActiveSheet.Name = "Ëèñò3") Then Procent = 0.0465

End Function
motorway вне форума Ответить с цитированием
Старый 01.11.2010, 22:33   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от valerij Посмотреть сообщение
Ага, но с кодом не получается, что не так?
WS_Name - это имя Листа ,с которым работаешь.
Я дал только как пример
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 01.11.2010, 22:34   #6
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
но с кодом не получается, что не так?
End Select пропущен
Вернее, стоит поздно
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499

Последний раз редактировалось VictorM; 01.11.2010 в 22:36.
VictorM вне форума Ответить с цитированием
Старый 01.11.2010, 22:42   #7
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
End Select пропущен
Вернее, стоит поздно
Пробовал и так в MsgBox процент, пусто
Код:
Sub ПроверкаЗарПлаты()
Application.EnableEvents = False: Application.ScreenUpdating = False
    Select Case WS_Name
        Case "Лист1": процент = 0.039
            Case "Лист2": процент = 0.042
        Case "Лист3": процент = 0.0465
    End Select
        MsgBox процент
Application.EnableEvents = True: Application.ScreenUpdating = True
End Sub
valerij вне форума Ответить с цитированием
Старый 01.11.2010, 22:45   #8
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Понятно, что если нет такой переменной WS_Name, вряд ли можно чего-то ожидать. Не хотите ли подставить туда ActiveSheet.Name?
motorway вне форума Ответить с цитированием
Старый 01.11.2010, 22:47   #9
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от motorway Посмотреть сообщение
Понятно, что если нет такой переменной WS_Name, вряд ли можно чего-то ожидать. Не хотите ли подставить туда ActiveSheet.Name?
Код:
If (ActiveSheet.Name = "Лист1") Then Procent = 0.039
If (ActiveSheet.Name = "Лист2") Then Procent = 0.042
If (ActiveSheet.Name = "Лист3") Then Procent = 0.0465
        MsgBox Procent
То же, MsgBox Procent, пусто
Может надо объявить переменную, не помогло?

Последний раз редактировалось valerij; 01.11.2010 в 22:52.
valerij вне форума Ответить с цитированием
Старый 01.11.2010, 22:50   #10
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Ну тогда заодно выведите в Msgbox и ActiveSheet.Name
motorway вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Значение выбранного диапазона. Vasek007 Microsoft Office Excel 2 29.09.2010 21:53
Как отследить значение переменной в другом приложении vramil Общие вопросы Delphi 7 23.05.2010 16:27
Вывести текст в зависимости от выбранного Polotenchik HTML и CSS 2 16.04.2010 13:44
как получить значение переменной smoke888 PHP 3 20.06.2008 02:11
Как получить значение системной переменной в С++ PersonaGrata Общие вопросы C/C++ 2 29.02.2008 22:14