Страницы: 1
RSS
Выбор данных для копирования в зависимости от значения в другой ячейке
 
Здравствуйте!
Не могу сообразить как реализовать в макросе функцию если по условию.
Действующий код:
Код
BazaSheet = "Формирование остатков"
    If (ProtocolSklad.Worksheets(BazaSheet).Cells(48, 5)) Then
        'Копируем остатки
        ProtocolSklad.Worksheets(BazaShee).Cells(40, 4) = BazaBook.Worksheets(BazaSheet).Cells(1, 2)
        ProtocolSklad.Worksheets(BazaShee).Cells(40, 6) = BazaBook.Worksheets(BazaSheet).Cells(2, 2)
    End If

А вот как должно выглядеть в идеале:

Код
 If (ProtocolSklad.Worksheets(BazaSheet).Cells(48, 5)) Then
        'Копируем остатки
        ProtocolSklad.Worksheets(BazaShee).Cells(40, 4) = BazaBook.Worksheets(BazaSheet).Cells(1, 2)      ' Оставить как есть эту строку выполняет корректно!
А уже после, нужна функция условия: Если ячейка B48 =1, то копирует данные с
ProtocolSklad.Worksheets(BazaShee).Cells(40, 6) = BazaBook.Worksheets(BazaSheet).Cells(2, 2)
А если ячейка B48 =2, то ProtocolSklad.Worksheets(BazaShee).Cells(40, 6) = BazaBook.Worksheets(BazaSheet).Cells(3, 2)
End If
Помогите пожалуйста поправить код. Заранее спасибо!
 
Если - всегда с условием. Предложите название темы, отражающее суть задачи. Модераторы заменят.
 
идеально выглядит макрос, который выполняет задуманные операции
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Да, после первой строчки, всегда с условием у ячейки B48, макрос должен подставлять либо строчку 2 или 3 по условию 1 или 2.
 
Цитата
Tyoma написал: Если ячейка B48
Эта ячейка в какой книге и на каком листе? ИЗ которой копируем или В которую?
Согласие есть продукт при полном непротивлении сторон
 
Эта ячейка B48? находится в том листе "ProtocolSklad.Worksheets(BazaShee).Cells(40, 6)", в который копируются данные с  BazaBook.Worksheets(BazaSheet).Cells(2, 2) или  BazaBook.Worksheets(BazaSheet).Cells(2, 3) по значению в ячейке В48= 1 или 2.
 
необходимо исходные данные записать в матрицу, а потом по значениям обратной мактрицы, полученным для транспонированной исходной, решать что куда записввать
так точно должно получиться
да, и аналог функции ЕСЛИ в VBA  функция IIf
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Tyoma, сообщение №2 адресовано Вам
 
vikttur, Я Вам ответил сообщением №4.
 
Ігор Гончаренко, Не совсем понятен для меня Ваш метод.
 
И в #4 есть вариант нового названия?
 
Вы должны сами сформулировать название темы
 
Юрий М, Я считаю что название темы корректно названо.
vikttur, Что ещё сформулировать я Вас не понимаю, чем Вам не нравится название темы?
 
А Вы правила форума прочитайте. Поймете.
 
vikttur, Прочитал правила и не увидел нарушения в названии моей темы. Если название темы Вас не устраивает, то измените сами по своему усмотрению, мне как то всё равно, как она будет называться, я пришёл на форум за помощью и суть проблемы объяснил в сообщении.    
 
Цитата
Tyoma написал:
мне как то всё равно, как она будет называться
Tyoma, форум не для Вас одного. Любой человек, зашедший на форум в поисках решения аналогичной проблемы, должен по названию понять, что это ТА САМАЯ тема.
 
Цитата
Tyoma написал:
Прочитал правила
На пункт 3.10 внимание обратите.
 
Юрий М, Я это прекрасно понимаю, но я так и не могу перефразировать и заново назвать тему поэтому и попросил модератора!
 
Цитата
Tyoma написал:
суть проблемы объяснил в сообщении
тут не подкопаешься - обьяснено яснее ясного!
Tyoma,
как Вы думаете, почему у Вас все еще нет ответа на вопрос:
1. потому что вопрос такой сложный, что никто не знает как решить
2. потому что пока не сформулирован вопрос и никто не понимает что решать
и вариант зо звездочкой
3* потому что обьяснения такие мутные, что никто пока не понимает сути вопроса и соотв. не может даже помочь Вам его сформулировать  
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Больно смотреть уже на все это  :D
Тема: Выбор данных для копирования в зависимости от значения в другой ячейке
Код
Dim shBaza As Worksheet
Set shBaza = BazaBook.Worksheets(BazaSheet)
With ProtocolSklad.Worksheets(BazaSheet)
    If .Cells(48, 5) Then .Cells(40, 4) = shBaza.Cells(1, 2)
    .Cells(40, 6) = IIf(.Cells(48, 2) = 1, shBaza.Cells(2, 2), shBaza.Cells(3, 2))
End With
Изменено: Sanja - 22.07.2019 20:43:10
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Tyoma написал:
я так и не могу перефразировать и заново назвать тему поэтому и попросил модератора!
Tyoma, а модератор и не должен за Вас придумывать название. Он должен поменять на новое, которые должны сформулировать Вы. Неужели Вы не знаете, в чём заключается проблема и не можете это кратко сформулировать?
 
Sanja,

Попробовал показывает ошибку на этапе:
Скрытый текст

Пишет: ошибка: дубликатная декларация в текущем объёме :(.
 
Цитата
Timyr написал: Dim EtalonBook As Worksheet
В моем коде такой строки нет.
По тексту ошибки понятно, что где то в коде переменная EtalonBook объявлена как минимум дважды
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Наверх