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

Страницы: 1
Макрос. Копирование диапазона согласно ключа на другой лист и затем его удаление, Макрос. Отбор, копирование и удаление диапазона согласно введенного условия (ключа) пользователем
 
Здравствуйте!

Есть такая задачка, знаний по макросам для решения которой пока не хватает, к сожалению. Поиск на просторах интернета также не дал каких-то вменяемых результатов.
Суть задачки в следующем - необходимо, чтобы по введенному пользователем ключу с листа «табл» на лист «Лист1» восстанавливался весь диапазон ячеек для соответствующего ключа. На «Лист1» запись всегда происходит с ячейки A2 (без копирования заголовков, в самой ячейке А2 не важно что, данные перезаписываются).
Например, если ввести «Ключ 3», то на «Лист1» должна произойти запись диапазона ячеек А9:C12 с листа «табл» (выделено желтым). Далее, после записи на «Лист1», этот же диапазон должен удалится с листа «табл» со сдвигом ниже расположенных строк наверх соответственно на количество удаленных строк (это же кол-во строк в диапазоне).

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

Очень надеюсь на помощь знатоков данного форума.
Если есть вопросы, готов пояснить.
Изменено: bond_0790 - 10.06.2022 01:12:51 (Добавление информации)
Действие при нажатии на кнопку "Отмена" и проверка, что вводимое значение "не пусто", в InputBox в ходе выполнения макроса
 
Здравствуйте!

Пробую написать макрос (см. ниже) для преобразования таблицы в нужный вид, но столкнулся с 2 проблемами. Уже 2 дня потратил на поиски решения здесь на форуме и в принципе на просторах интернета.
Порядок макроса такой, что:
1. определяются переменные;
2. активизируется диалоговое окно для выбора файла (с нужной таблицей для преобразования) пользователем;
3. далее пользователь должен указать диапазон таблицы, с которым работать;
4. ... указывается ячейка, кол-во столбцов, наименование для каждого столбца и наименование столбца со значением (каждый раз через InputBox);
5. далее идет процесс преобразования диапазона согласно заданным условиям (его уже в коде не указывал).

Так вот, при 1-м InputBox для указания диапазона, если пользователь нажимает кнопка "Отмена" макрос прерывается и выдает ошибку, аналогично для 2-го InputBox для выбора ячейки.
Для последующих InputBox, т.к. они не объекты, а значения, то просто использую проверку на False с If (эквивалентно нажатию на кнопку "Отмена"). Все работает корректно.
Чтобы при нажатии на кнопку "Отмена" в 1-м и 2-м InputBox макрос выдавал сообщение и заканчивал работу попробовал использовать On Error GoTo. Однако все бы ничего, но теперь при последнем InputBox (str2 = Application.InputBox(Prompt:="наименование столбца со значением", Title:="Укажите...", Type:=2)) независимо от того, ввожу я наименование или нажимаю "Отмена", выдается сообщение и макрос закрывается. Однако в случае ввода наименования все должно корректно работать, и начинаться процесс преобразования. Вот в этом и состоит проблема, может есть возможность ее решить?

Так же еще не получается сделать (как я думаю здесь нужен цикл) проверку на то, что пользователь не вводит наименования столбца и далее столбца со значением.
Вот, например, здесь
Код
str2 = Application.InputBox(Prompt:="наименование столбца со значением", Title:="Укажите...", Type:=2)
If str2 = False Then
'Вывод информационного окна с сообщением при нажатии кнопки "Отмена"
MsgBox "Отмена преобразования данных!", vbCritical, "Информационное сообщение"
Exit Sub
End If
Т.е. если наименование не вводится пользователем, который при этом нажимает кнопку "Ок", должно выводиться сообщение, что такое название необходимо ввести, и снова отображаться InputBox для введения наименования. Такое возможно сделать?


Код
Sub ConvertData()

Dim FName As Variant
Dim r As Range
Dim r2 As Range
Dim r3 As Range
Dim z As Long
Dim N As Integer
Dim Hold As Variant
Dim wb As Workbook
Dim ws As Worksheet
Dim ColNum As Integer
Dim i As Long
Dim k As Long
Dim j As Long
Dim l As Long
Dim str As String
Dim str2 As String
Dim QC As Integer

FName = Application.GetOpenFilename(FileFilter:="Excel Workbooks,*.xl*", Title:="Выберите файл, который надо открыть", MultiSelect:=False)
If FName <> False Then
Workbooks.Open Filename:=FName
End If

On Error GoTo Inform
Set r3 = Application.InputBox(Prompt:="Диапазон:", Title:="Выберете диапазон ячеек", Type:=8)
r3.Select

Set r = r3

Set r2 = Application.InputBox(Prompt:="ячейку, с которой необходимо начать преобразование:", Title:="Выберете...", Type:=8)

QC = Application.InputBox(Prompt:="количество столбцов:", Title:="Укажите...", Type:=1)
If QC = False Then
'Вывод информационного окна с сообщением при нажатии кнопки "Отмена"
MsgBox "Отмена преобразования данных!", vbCritical, "Информационное сообщение"
Exit Sub
End If

ReDim strarr(QC)
For i = 1 To QC
strarr(i) = Application.InputBox(Prompt:="наименование столбца " & CStr(i), Title:="Укажите...", Type:=2)
If strarr(i) = False Then
'Вывод информационного окна с сообщением при нажатии кнопки "Отмена"
MsgBox "Отмена преобразования данных!", vbCritical, "Информационное сообщение"
Exit Sub
End If
Next i

str2 = Application.InputBox(Prompt:="наименование столбца со значением", Title:="Укажите...", Type:=2)
If str2 = False Then
'Вывод информационного окна с сообщением при нажатии кнопки "Отмена"
MsgBox "Отмена преобразования данных!", vbCritical, "Информационное сообщение"
Exit Sub
End If


'..........
'..........
'Здесь идет код по преобразованию таблицы в нужный вид (не так важно уже)
'..........
'..........


Inform:
'Вывод информационного окна с сообщением об ошибке (при нажатии кнопки "Отмена")
MsgBox "Отмена преобразования данных!", vbCritical, "Информационное сообщение"
Exit Sub

End Sub
Изменено: bond_0790 - 17.01.2022 11:46:03
Заполнение одних ячеек в зависимости от суммы значений накопительным итогом в других (макрос), Макрос по заполнению ячеек
 
Всем доброго времени суток!

Возникла вот такая вот интересная задача: по проданной позиции (например, ящик) в количестве 35 шт. отразить покупателя по строкам.

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

Здесь однозначно нужен макрос, но вот собственных знаний для его написания не хватает. Может кто сможет помочь.
Файл с примером прилагается.
Макрос по копированию значений в не последний заполненный столбец
 
Доброго времени суток!

Я не особо знаток макросов, но иногда их использую их на простом уровне.
Подскажите, пожалуйста, как можно записать месяц в ячейку B1, если имеется такая простая таблица (см. пример во вложении)?
Много времени искал, смог смастерить только, что просматривается вся строка, и уже после нее в последний столбец вставляются данные. А вот как надо, не получается.
Подскажите, пожалуйста, что изменить в коде?

Пока есть такой код.
Код
Sub запись()

    Application.ScreenUpdating = False
    
    Sheets("Лист2").Select
    Range("D4").Select
    Selection.Copy
    
    Sheets("Лист1").Select
    
    Dim NextColumn As Long
    NextColumn = Range("A2:F2").End(xlToRight).Column + 1
    Cells(1, NextColumn).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub
Макрос по переименованию листа с нужным именем
 
Доброго времени суток, товарищи!
Подскажите, пожалуйста, макрос по копированию листа и переименованию его в требуемом формате с проверкой на наличие уже имеющего листа с таким названием.
Суть:
- имеется лист "оборот_апр.18";
- его необходимо скопировать с новым названием "оборот_май.18", т.е. изменив только месяц и год и предварительно проверив, нет ли уже листа с аналогичным названием. В случае ошибки выдавать сообщение, что такой лист уже есть, и выходить из макроса;
Доп условия:
- множественное количество листов (ручное их переименование не подходит);
- нужна форма для ввода названия месяца в формате МММ.ГГ (например, авг.18).
Для примера добавил файл.
Преобразование текста в ссылку на диапазон
 
Доброго времени суток, уважаемые знатоки!
Подскажите, пожалуйста, как полученный с помощью формул текст "Лист1:Лист3!N5" преобразовать в ссылку на диапазон для последующего суммирования значений в ячейке N5 с указанных листов.
Расчет остатков в НЕ отсортированном массиве данных
 
Доброго времени суток, уважаемые гуру Excel !

Очень прошу Вас мне подсказать, если это возможно в принципе, решение следующего вопроса. Может какой-либо составной формулой это можно сделать, функцией или макросом?
Имеется неотсортированный массив данных (см. приложенный файлы), в котором в том числе есть дата поступления/списания средств с различных счетов по организациям.
Задача состоит в том, чтобы корректно и последовательно (по датам) рассчитать остатки после поступления и списания средств на счетах в столбце Остатки (выделен зеленым). Отображать остаток за одну дату только напротив одной (последней) из этих дат.
Изначально предполагается, что на счете было 0, затем имеется приход - расход, получается какой-то остаток. Данные взяты примерные, возможны и отрицательные остатки.
А также есть ли возможность сделать так, что бы красным подсвечивались одинаковые (дублирующиеся) строки? Подсвечивалось красным и выводилось сообщение, что есть дубль (не знаю, насколько это осуществимо).

Было бы решением данного вопроса отсортировать данный массив по дате и счетам, а затем элементарными формулами +/- рассчитать остаток. Но вся сложность в том, что периодически и довольно часто в конец этого массива будут добавляться новые строки, естественно в таком же виде (неотсортированном). При формировании массива уже в несколько тысяч данный процесс становится очень трудоемким и затратным по времени.
Изменено: bond_0790 - 21.02.2017 17:20:46
Разделение столбца макросом на два с нужным форматом ячеек
 
Уважаемые знатоки, доброго времени суток!

Помогите, пожалуйста, со следующим вопросом. Может он уже где-то встречался, но не найти пока.
Имеется выгрузка в указанном формате (см. файл), где указано Изначально. Столбцы С и D, в которых указана дата и время, необходимо с помощью макроса разделить на два каждый (указано в файле Необходимо) с соответствующими заголовками. В одном столбце остается дата, в соседнем указывается время. Все происходит на этом же листе.
Количество строк может быть любое, столбцы неизменны.
Изменено: bond_0790 - 12.01.2017 02:03:24
Автоматическое проверочное поле
 
Уважаемые форумчане, может подскажете, как реализовать следующий вопрос.

Имеется макрос, который копирует введенные значения из таблицы и переносит их на другой лист, затем сохраняет файл.
Можно ли сделать некое проверочное поле, где отображалось бы "сохранен/не сохранен", суть которого в следующем?
После отработки макроса в данном поле отображалось бы "сохранен". Затем, если вводим в одну из ячеек таблицы (набор ячеек) ну или вообще в любую ячейку на листе какое-то значение, то теперь бы в поле отображалось "не сохранен", и до тех пор, пока снова не будет запущен макрос, последнее действие которого, как и писал выше, сохранение файла.

Дело в том, что забудешь нажать на кнопку отработки макроса, отвлечешься, потом новые значения начнешь вводить, не сохранив старые.  :(
Заполнение макросом VBA шаблона Word из файла Excel
 
Доброго времени суток, знатоки!

Помогите, пожалуйста, разобраться в вопросе написания макроса заполнения шаблона в Word (файл "Шаблон_черновик") из файла Excel ("Пример"), т.е. можно ли сделать так, чтобы при нахождении в экселевском файле, нажать на копку, и сформировался бы заполненный файл ворд и сохранился с именем, например,"Наименование №... от..."? Нужно, чтобы заполнялись все поля, выделенные желтым цветом, все они имеются в обоих файлах (правда кое-где могут отличаться написанием, но их в принципе можно переименовать под одну гребенку).

Необходимость существует именно в макросе, т.к. подразумевается, что данная операция будет повторятся бесчисленное количество раз (слияние - не вариант).

Буду очень благодарен за помощь.
Изменено: bond_0790 - 18.03.2016 22:48:22
Автоматическое формирование макросом порядкового номера
 
Уважаемые знатоки, доброго времени суток!

Я не особо силен в VBA, поэтому прошу у вас помощи и совета в решении данной задачи. Поиски на просторах интернета, к сожалению, не дали особых результатов.

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

Требуется, чтобы заданиям автоматически присваивался порядковый номер в столбце В. Причем в формате нн/мм, где нн-порядковый номер и мм-порядковый номер месяца. Также такое условие, чтобы при смене месяца нумерация начиналась заново, т.е., например, было последнее задание в октябре месяце номер 23/10, наступил новый месяц ноябрь, получили первое задание и его номер будет 1/11. Номера заданий не зависят от числа месяца, только 2-я часть номера задания от самого порядкового номера месяца после слеша "/" (прошу прощения за тавтологию).

Я так понимаю, что эту задачу можно решить при помощи макроса, но вот как его написать, пока себе не представляю.
Вставка рисунка в зависимости от выбранного текстового значения в ячейке
 
Добрый день!

Подскажите, пожалуйста, возможно ли вставлять рисунок в зависимости от выбираемого текстового значения в ячейке?
Необходимо следующее: что бы при выборе типа в ячейке B1, подставлялся нужный рисунок (см. файл в приложении).

Наткнулся вот на такую тему на нашем форуме (http://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=8&TID=4951), в принципе то, что нужно, не не разобрался, откуда там берутся рисунки. Может этот момент вы мне подскажите.
Страницы: 1
Наверх