Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Макрос для заполнения следующей пустой ячейки, Просмотр диапазона ячеек и заполнение следующей пустой
 
Привет ;)

Помогите, пожалуйста написать код.
Смысл простой:
Нужно создать макрос, который я потом привяжу к кнопке, нажав на которую макрос "пробежится" по диапазону B2:B66 на предмет первой пустой ячейки в этом диапазоне, затем он выдаст диалоговое окно InputBox с просьбой ввести какие-либо данные. После того как я заполню ИнпутБокс данные введутся в пустую ячейку (первую после заполненных) этого диапазона.
Например в диапазоне B2:B66 все пусто, нажав на макрос, исходя из вышеописанной логики, он должен мне предложить ввести данные и затем поместить их в ячейку B2. Или если в этом диапазоне уже заняты ячейки B2:B23 (а остальные пустые вплоть до B66), например, то он(макрос) соответственно поместит введенные мной данные из IputBox'a в ячейку B24.

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

:)Спасибо заранее!:D
Макрос, срабатывающий на очистку. Защита от дурака
 
Привет. :)

Я все ломаю голову над одной задачей по защите от случайного удаления.

Суть:
Есть таблица с проектами. Уже все настроено настолько удобно, что прям страшно из-за такой степени автоматизации (шутка, мне это в кайф :D ).

Я ввожу в ячейку колонки B название проекта и дальше начинает работать макрос, благодаря которому надо просто вводить дальше данные по проекту и жмакать Enter после каждого введенного значения. Красота! Вся строка с этим проектом заполняется, проставляются значения в нужных ячейках, заранее заданных макросами, и заливка там где надо с цветом появляется.
Я решил сделать такую штуку с обратной силой, то есть если я удаляю название проекта, то и весь проект автоматом удаляется, то есть все ячейки очищаются и цвет заливки становится прежним. Супер!
Но потом я подумал, блин а если я нечаянно нажму на дэлит и весь проект похерится, и ctrl+z уже не поможет (проверено).

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

Но опять же НО(( У меня до всего этого дела была создана супер-мега кнопка, которая удаляет все и приводит таблицу к ее первозданному виду для того, чтобы можно было сохранить файл как новый для следующего отчетного месяца и начать работать по новой.
И я начал дико ржать когда он меня 66 раз (именно такой лимит строк под возможное количество проектов в месяц) спрашивал "вы точно хотите удалить проект"))))) ибо макрос то видит, что происходит пошаговая очистка всего и вся :D ))

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

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

В общем посоветуйте, можно ли запилить макрос против защиты листа для введения названия в ячейку, или можно ли запилить макрос, который автоматом жал бы за меня каждый раз кнопку -да-, если я решу нажать ту самую кнопку, которая все удаляет?

Или я в конец охерел и уже слишком много хочу от экселя и вба в частности)))? мне уже самому так кажется, но было бы так круто, если бы это желание можно было реализовать.

Спасибо за внимание и извините за лонгрид :D !
Простое двойное условие, если активная ячейка пустая
 
Привет умные люди :) . Прошу помочь. Не такому умному мне  :D  нужно доработать простенький код следующего типа:
Код
Sub Удалить_проект()
    If IsEmpty(ActiveCell) = True Then
            MsgBox "Данные о проектах полностью удалены", 64
    Else
            Dim xx
                xx = MsgBox("Данные этого проекта будут полностью удалены. Продолжить?", vbYesNo)
                If xx = 7 Then: Exit Sub     'если нет, то не выполнять макрос
                If xx = 6 Then:              'если да, то:
                Selection.Value = Empty      'поскольку ячейка связанна с исходным кодом листа, то вся трока проекта с даннми будет очищена
    End If
End Sub
1) Сейчас макрос действует так:
Если активная ячейка пустая, то сообщить, что данные проекта удалены
В ином случае выполнять остальные строки кода.

2) А нужно чтобы было так:

Проверить находится ли активная ячейка в колонке B, если нет, то:
Вывести сообщение "Выберете ячейку с названием проекта в колонке B и повторите действие еще раз".
Если да, то:
И вот тут мы продолжаем то, что описано 1 пункте:
Если активная ячейка пустая, то сообщить, что данные проекта удалены
В ином случае выполнять остальные строки кода.

Заранее искренне благодарю!  :)
Изменено: idexter08 - 29.05.2017 21:25:37
Макрос для требования ввода данных, Зацикленное сообщение
 
Привет Excel'тяне!  :)
Нужна помощь.

Суть.
Есть макрос в исходном тексте листа, который делает следующее:
Если я ввожу какое-либо значение в ячейку столбца B (название проекта), то выводится InputBox, который в свою очередь требует ввести данные для ячейки столбца K (дедлайн проекта) в той же строке, за тем после его ввода выводятся по порядку так же еще несколько InputBox'ов для ввода остальных значений (сколько поступит денег от заказчика и сколько необходимо заплатить одному или нескольким исполнителям) в ячейки других столбцов этой же строки.

Что нужно изменить.
Нужно сделать так, чтобы инпут боксы не схлопывались переходя на следующий инпут бокс по порядку пока не кончится последний (всего их 5 штук, в определенном порядке — дедлайн > доход > издержки1 > издержки2 > издержки3).
Ибо на данный момент, если не ввести в инпут бокс никакого значения и просто нажать ок или Esc, то макрос прекратится,
так как стоит после каждого инпут бокса If val = "" Then Exit Sub

А надо, но только для двух первых ( дедлайн > доход >) из них задать некий "цикл", т.е. вместо If val = "" Then Exit Sub написать такой код, который бы выводил этот же инпут бокс (например инпут бокс для дедлайн >) до тех пор пока не будет введено значение, как только значение будет введено, только после этого переходим к следующему инпут боксу, со следующим тоже самое, а в остальных трех не обязательно (так как бывают проекты без издержек)

То есть смысл в том, чтобы нечаянное нажатие Enter или Esc не обрекло на пропуск ввода необходимого значения, дабы не рисковать и избежать возможных потерь.

Надеюсь объяснил подробно. Буду благодарен доработке кода.
На данный момент (это не весь код с исходного листа, но та часть, которую необходимо изменить в соответствии с вышеописанным) код выглядит так:
Код
'Далее задаем параметры для выхода диалоговых окон, в которые будет предложенно ввести значения

Dim xVal1 As String 'xVal1 для будущего заполнения ячейки столбца E
Dim xVal2 As String 'xVal2 для будущего заполнения ячейки столбца C
Dim xVal3 As String 'xVal3 для будущего заполнения ячейки столбца G
Dim xVal4 As String 'xVal4 для будущего заполнения ячейки столбца I
Dim xVal5 As String 'xVal5 для будущего заполнения ячейки столбца K

xVal5 = InputBox("Введите Deadline", "Регистрация проекта", , 13000, 4000) 'при нажатии на кнопку с этим макросом будет выведено сообщение
        If xVal5 = "" Then Exit Sub 'если значение не будет указано, то при нажатии ОК - значение ячейки НЕ изменится
                Range("K" & cell.Row) = xVal5  'определяем в какую ячейку будет введено значение

xVal4 = InputBox("Введите бюджет проекта. ВНИМАНИЕ! Для десятичных значений использовать только «.»", "Регистрация проекта", , 13000, 4000) 'при нажатии на кнопку с этим макросом будет выведено сообщение
        If xVal4 = "" Then Exit Sub 'если значение не будет указано, то при нажатии ОК - значение ячейки НЕ изменится
                Range("I" & cell.Row) = xVal4  'определяем в какую ячейку будет введено значение

xVal1 = InputBox("Введите бюджет для Нурии", "Регистрация проекта", , 13000, 4000) 'при нажатии на кнопку с этим макросом будет выведено сообщение
        If xVal1 = "" Then Exit Sub 'если значение не будет указано, то при нажатии ОК - значение ячейки НЕ изменится
                Range("E" & cell.Row) = xVal1  'определяем в какую ячейку будет введено значение

xVal2 = InputBox("Введите бюджет для Татьяны", "Регистрация проекта", , 13000, 4000) 'при нажатии на кнопку с этим макросом будет выведено сообщение
         If xVal2 = "" Then Exit Sub 'если значение не будет указано, то при нажатии ОК - значение ячейки НЕ изменится
                Range("C" & cell.Row) = xVal2  'определяем в какую ячейку будет введено значение

xVal3 = InputBox("Введите бюджет для Unknown", "Регистрация проекта", , 13000, 4000) 'при нажатии на кнопку с этим макросом будет выведено сообщение
         If xVal3 = "" Then Exit Sub 'если значение не будет указано, то при нажатии ОК - значение ячейки НЕ изменится
                Range("G" & cell.Row) = xVal3  'определяем в какую ячейку будет введено значение
Автозаполнение даты, Доработка кода
 
Привет.
Во-первых хочу сказать спасибо за тему (Автоматическая вставка текущей даты в ячейку при вводе данных) ;), которую в свое время создал Николай, да и вообще за весь его  :excl: проект по Экселю :excl:

Я немного доработал под себя код :oops: , добавив еще одно правило, а именно выделение ячейки цветом. То есть помимо внесения даты в ячейку столбца А на основании изменения ячейки столбца B, выделяется ячейка столбца E определенным цветом.
Тут все работает как надо.

Но я бы хотел сделать еще одно условие в этом коде (что у меня собственно и не выходит пока что) :( .
Суть такая :idea: :
Я ввел значение в ячейку столбца B и два описанных правила сработали, но если я удаляю значение в этой же (или любой другой) ячейке столбца B, то оба правила работают так же, ибо они ссылаются на любые изменения в столбце B :cry: (в т.ч. очистку). А я бы хотел, чтобы при удалении значения в этом пресловутом столбце B, правила для столбцов A и E - нивелировались 8) , то есть попросту отчищались от даты в столбце А и приходили к исходному цвету в столбце Е :) .

Файл с примером во вложении.
Код прилагаю ниже, буду рад вашей помощи :D
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     
    For Each cell In Target   'проходим по всем измененным ячейкам
       If Not Intersect(cell, Range("B2:B66")) Is Nothing Then  'если измененная ячейка попадает в диапазон B2:B66
            With Range("A" & cell.Row)         'вводим в ячейку, в столбец A дату
               .Value = Date
            
            End With
            
            With cell.Offset(0, 3)         'помечаем ячейку столбца E цветом
                  .Interior.ColorIndex = 22
                  
            End With
            
       End If
    
    Next cell
    
End Sub
Как активировать кнопку "Прогрессия"
 
Тупость конечно, но уменя не работает автозаполнение. Например пишу в первой ячейке 1 в нижней ячейке 2 - выделяю их и по навность пологаю что при протаскивании далее вниз получу 3, 4, 5 и т.д. Но он тупо повторяет 1, 2, 1, 2 и т.д. Посмотрел на меню Заполнить, а там оказывается не активна кнопка Прогрессия вообще. Как ее активировать?
При том это проблема в самом файле как я понял, ибо в других все ок, функция же поумолчанию работает изначально.
Офис pro 10.

Спасибо, извините за тупость.
Изменено: idexter08 - 11.11.2016 18:56:45
Как создать кликабельную ячейку со списком в Excel
 
Сразу поясню, как создать выпадающий список я знаю, только я хочу не только на треугольник нажимать чтобы список выпадал, а прям на саму ячейку чтоб нажать и он так же выпадал. Просто мелкий треугольник не так удобно нажимать, нежели сразу на большую (относительно треугольника) ячейку.
Так точно можно, у меня рабочие доки такие, только они заблочены и я не имею возможности выяснить как это было сделано.
Спасибо умникам эксель заранее.
На гифке показано то что я имею в виду.
Как сделать функцию "Если" выполняющую много условий?
 
Привет всем.
Непростая задача:
Есть значение, которое может быть меньше 500, или больше 500, но меньше 1000, или больше 1000, но меньше 1500, или больше 1500, но меньше 2000, или в то же время может иметь целые значения такие как , 500, 1000, 1500, 2000 и так далее.
Мне нужно написать формулу с несколькими лог выражениями и несколькими истинами соответственно В ОДНУ ЯЧЕЙКУ:
Если C3<500 то C3 = 0,5; если нет, то C3\1000 (делим на тысячу имеется в виду если C3 целое 500 ил 1000 или 1500 и т.д.)
Если C3>500 но C3<1000, C3=1; если нет, то C3\1000 и так далее далее и все эти если нужно впихнуть в одну ячейку например D3, так чтобы когда я ввожу в С3 865, то в D3 автоматом появлялось 1, если в C3 ввожу 389, то в D3 автоматом появлялось 0,5. Если ввожу в С3 1369, то в D3 автоматом появлялось 1,5, если в C3 ввожу 3889, то в D3 автоматом появлялось 4.
Надеюсь суть задачи я вам объяснил, очень хотелось бы создать такую формулу, она в принципе простая, но я не знаю как написать к ней код в макросах, а в стандартной функции если к сожалению можно написать только одно лог выражение и получить только одну истину или ложь.
Вот например чего я максимум добился =ЕСЛИ(И(C3>500;C3<1000);1;C3/1000) с помощью этой функции можно посчитать только от 501 до 999 чтоб он мне выдавал 1 в ячейке D3 но если я поставлю в C3 1265 к примеру он тупо поделит ее на тыщу даст в Д3 1,3, а мне нужно 1,5 в этом случае.

Спасибо за ранее)
Страницы: 1
Наверх