Выбираем ячейки, которые нужно перенести по типу «СЦЕПИТЬ». Затем запускаем макрос через кнопку или другим удобным способом. После запуска макрос попросит указать, куда должна появиться информация — выбираем нужное место и готово! =)
Код
Sub Selectmacros()
Dim selectedRange As Range
Dim outputCell As Range
Dim resultString As String
Dim cell As Range
' Получаем диапазон выделенных ячеек
Set selectedRange = Selection
' Проверяем, выделены ли ячейки
If selectedRange.Count = 0 Then
MsgBox "Выберите хотя бы одну ячейку.", vbExclamation
Exit Sub
End If
' Формируем строку из содержимого выбранных ячеек
For Each cell In selectedRange
If Len(resultString) > 0 Then
resultString = resultString & ", "
End If
resultString = resultString & Trim(cell.Text)
Next cell
' Выбрать ячейку для вывода строки
On Error Resume Next
Set outputCell = Application.InputBox("Укажите ячейку для отображения результата:", Type:=8)
On Error GoTo 0
If Not outputCell Is Nothing Then
outputCell.Value = resultString
Else
MsgBox "Операция отменена.", vbInformation
End If
End Sub
(resultString = resultString & ", " можете менять на другой символ по желанию.)
Чтобы запустить макрос комбинацией клавиш Alt + Enter, нужно назначить горячие клавиши в настройках Excel.
Чтобы настроить быстрое выполнение макроса:
Назначение горячей клавиши для макроса: Перейдите во вкладку Файл → Параметры → Настроить ленту. Кликните внизу окна ссылку «Настройка клавиатуры…» (либо откройте Вид → Макросы → нажмите на значок настроек рядом с полем поиска макросов и выберите пункт Назначить сочетания клавиш). В появившемся окне найдите категорию макросов (Макросы) и выберите ваш макрос (он называется Selectmacros). Если макрос не появился, убедитесь, что он сохранён в файле рабочей книги (*.xlsm), иначе макрос может быть скрыт. Поле ввода комбинации клавиш оставьте пустым и введите вручную сочетание клавиш Alt + Enter. Щёлкните кнопку Назначить и закройте настройки.
Итоговый алгоритм действий: Выделение нужных ячеек. Нажатие Alt + Enter для запуска макроса. Выбор целевой ячейки, куда вставляется результат.
"ПОКРАСКА %% выполнения" Проблема заключается в том, что проверка условия <>"0" работает некорректно для числовых значений. Это связано с тем, что символ "0" воспринимается как текстовая строка, а не число. Когда ваша формула получает числовое значение 0, оно не считается текстом, и условие выполняется неправильно. Для правильного решения используйте проверку на равенство числу 0: =ЕСЛИОШИБКА(ЕСЛИ(ГПР(СВОД!$P$1; ГР!$A$9:$BJ$58; 30; 0)=0; ""; ГПР(СВОД!$P$1; ГР!$A$9:$BJ$58; 30; 0)); "")
"Доковая часть %% выполнения" Формула в Excel, которую вы привели, проверяет наличие значения в ячейке и выводит пустое значение (" ") вместо нуля. Если вы хотите убрать нули из отображаемых результатов, но оставить возможность вывода значений в виде текста или чисел, можете изменить условие следующим образом: =ЕСЛИОШИБКА(ЕСЛИ(ГПР(СВОД!$P$1; ГР!$A$9:$BJ$58; 40; 0)="";" ";ГПР(СВОД!$P$1; ГР!$A$9:$BJ$58; 40; 0)); "")
Можно еще эту формулу помучить =) =ЕСЛИОШИБКА(ЕСЛИ(ГПР(СВОД!$P$1; ГР!$A$9:$BJ$58; 40; 0)>0; ГПР(СВОД!$P$1; ГР!$A$9:$BJ$58; 40; 0); ""); "")
Есть макрос который создает и сохраняет каждый документ отдельным файлом в формате ".PDF" их может быть сотни (тысячи) при желании. Также этот макрос даёт выбор или сохранить в формате PDF или только отправить на печать каждый документ отдельно.
Нужно дописать в макросе чтобы он мог сохранять каждый документ в формате "excel" тоже отдельным файлом без сохранения формул (диспетчер имен) и т.д если такое там будет. Тобишь чистым документом.
Одним словом добавить в окне где кнопка Печать, ещё одну функцию сохранить в формате excel.
Может есть другой способ как решить эту задачу с выводом информации?
Вроде понимаю что одна формула ссылается на соседнюю и каждая зависит друг от друга. Но честно пока не нашел как решить вывод информации без конфликтов, может сказывается что пока я еще во многом зеленый.
Помогите, пожалуйста, решить задачу с "промежуточными итогами".
Когда в ячейку ставлю формулу =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(103;$I$7:I7) выдаёт "0", возможно но не уверен что конфликт происходит из-зи того что в соседней ячейке куда ссылается ПРОМЕЖУТОЧНЫЕ стоит "ИНДЕКС;ПОИСКПОЗ" решения пока я не нашёл.
ПРОМЕЖУТОЧНЫЕ нужны для макроса которые скрывает пустые строки при заполнении если такие имеется.
Буду признателен если у кого-то есть макрос с автонумерацией строк игнорируя "пустые строки" и "0" в ячейке если такое имеется.
Помогите, пожалуйста, решить проблему с "промежуточными итогами".
Когда в ячейку ставлю формулу =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(103;$I$7:I7) выдаёт "0", возможно что конфликт происходит из-зи того что в соседней ячейке куда ссылается ПРОМЕЖУТОЧНЫЕ стоит "ИНДЕКС;ПОИСКПОЗ" но решения я не нашёл.
ПРОМЕЖУТОЧНЫЕ нужны для макроса которые скрывает пустые строки при заполнении если такие имеется.
Буду признателен если у кого-то есть макрос с автонумерацией строк игнорируя "пустые строки" и "0" в ячейке если такое имеется.
Помогите решить проблему с макросом и понять почему макрос повреждает документ.
После заполнения таблицы ведет себя хорошо, после много кратного сохранения и закрытия документа нет косяков. Но на второй день при открытии документа все слетает и таблица деформируется, повторяется уже 2 день подряд.
И еще одна просьба При добавление в таблице D2 из выпадающего списка (Наименование материалов ) в таблице F2 из выпадающего списка (Ру PN, Мпа (кгс/см2)) цифры с точкой (пример 4.6) цифры слетают и показывает только 4 вместо 4.6 если запетая 4,6 то все нор, как это можно исправит?
в самом файле Пример для форума (таблица D2) и (таблице F2) перед началом работы с документом (Норм.xlsm) надо нажать кнопку "Обновить списки" и тогда появиться выпадающие списки (таблица D2)
Вся информация из выпадающего списка храница в вкладке "DATA"
Прикрепил файл Норм.xlsm - (нормальный файл) Дифект.xlsm - (повреждённый файл) этот файл становится таким после открытия на второй день.
Есть база где через макрос генерирует документ выдергивая нужную информацию из базы.
Этот макрос может сохранить (формировать) десятки документов одним нажатием кнопки, но только в формате PDF.
Нужно чтобы он сохранял в формате .xlsx или .xls это нужно чтобы другой человек мог редактировать какой-то определенный документ отправленный ему по почте, а не передавать ему саму базу где сидит все макросы и вся база
Добрый день ребята. Помогите разобраться или подскажите как будет правильно.
Есть 2 кнопки: сохранить диапазон листа в формате PDF и XLSX. Так как я только начинаю изучать макрос, пока немного коряво выходит.
Проблема в сохранения в формате XLSX
Код для PDF
Код
Private Sub CommandButtonPdf_Click()
Dim i, j, x1, x2
Dim PathDbf$, filename$, ActSh$
PathDbf = GetFolderPath("Выберите папку для сохранения файлов", ThisWorkbook.path)
' Задаем имя папки
If PathDbf = "" Then Exit Sub
' Выходим, если имя листа не выбрано из активного листа
ActSh = ActiveSheet.Name
j = 0
With Me.ListBoxSpec
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
'MsgBox .List(i)
Range(nNomerLinii) = .List(i)
'filename = PathDbf & Format(i, "0") & ". " & ActSh & " - " & .List(i)
filename = PathDbf & ActSh & " - " & .List(i)
With Sheets(ActSh)
.Range(.PageSetup.PrintArea).ExportAsFixedFormat Type:=xlTypePDF, filename:=filename & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End With
j = j + 1
End If
Next
MsgBox "Создано " & j & " файлов pdf", , "ГОТОВО!"
End With
End Sub
Выдает ошибку "Variable not defined" Код для XLSX
Код
Private Sub CommandButtonExcel_Click()
Dim i, j, x1, x2
Dim PathDbf$, filename$, ActSh$
PathDbf = GetFolderPath("Выберите папку для сохранения файлов", ThisWorkbook.path)
' Задаем имя папки
If PathDbf = "" Then Exit Sub
' Выходим, если имя листа не выбрано из активного листа
ActSh = ActiveSheet.Name
j = 0
With Me.ListBoxSpec
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
'MsgBox .List(i)
Range(nNomerLinii) = .List(i)
'filename = PathDbf & Format(i, "0") & ". " & ActSh & " - " & .List(i)
filename = PathDbf & ActSh & " - " & .List(i)
With Sheets(ActSh)
.Range(.PageSetup.PrintArea).ExportAsFixedFormat Type:=xlTypeXLSX, filename:=filename & ".xlsx", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End With
j = j + 1
End If
Next
MsgBox "Создано " & j & " файлов Excel", , "ГОТОВО!"
End With
End Sub
В теории должно быть правильно, но почему-то выдаёт ошибку "Variable not defined"
Помогите, пожалуйста, решить следующую проблему. Есть база с макросом, после добавления новой строки или нажатья кнопки "Обновить списки" вроде все хорошо, но после сохранения файла и повторного открытия появляется окно с ошибкой "Ошибка в части содержимого в книге".
Самое интересное если удалить все до 7 строки и сохранить файл, ошибка исчезает и документ открывается нормально.
Ігор Гончаренко, Точнее в закладке "Главная" G3. Этот фокус я пробовал, да этом методом убирается 0, но тут только один минус что если забудешь про пробел то в документе будет постоянно фигурировать 0.
К примеры есть 3 столбца с текстом где через СЦЕПИТЬ в другой вкладке указывается вид работ. Удалив текст из 2-х столбцов получается вот так: Монтаж горячего водоснабжения 0 0
Я пытался прикрутить код чтобы сохранял именно область печати и каждый файл сохранялися под своим названием линии, но понимаю что что-то делаю не правильно и код на меня ругается.
Если я бы знал как будет правильно, я бы не просил помощи! Я только начинаю макрос изучать и я признаю что пока я чайник в этом. Все мы были зелёные в этом деле. Самое обидное что некоторые кто знают хорошо макросы, смеются над чайниками которые ещё не понимают как пишется правильно макрос. Это самое обидное!
Код
Private Sub CommandButtonXls_Click()
Dim i, j, x1, x2
Dim PathDbf$, filename$, ActSh$
PathDbf = GetFolderPath("Выберите папку для сохранения файлов", ThisWorkbook.path) ' Запрашиваем имя папки
If PathDbf = "" Then Exit Sub ' выход, если пользователь отказался от выбора папки
ActSh = ActiveSheet.Name
j = 0
With Me.ListBoxSpec
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
'MsgBox .List(i)
Range(nNomerLinii) = .List(i)
filename = PathDbf & .List(i)
With Sheets(ActSh)
.Range(.PageSetup.PrintArea).ActiveSheet.SaveAs , filename:=filename & ".xls", FileFormat:=56, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End With
j = j + 1
End If
Next
MsgBox "Создано " & j & " файлов ", , "ГОТОВО!"
End With
End Sub
Option Explicit
Private Sub CommandButtonPdf_Click()
Dim i, j, x1, x2
Dim PathDbf$, filename$, ActSh$
PathDbf = GetFolderPath("Выберите папку для сохранения Файла", ThisWorkbook.path)
If PathDbf = "" Then Exit Sub
ActSh = ActiveSheet.Name
j = 0
With Me.ListBoxSpec
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
'MsgBox .List(i)
Range(nNomerLinii) = .List(i)
filename = PathDbf & .List(i)
With Sheets(ActSh)
.Range(.PageSetup.PrintArea).ExportAsFixedFormat Type:=xlTypePDF, filename:=filename & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End With
j = j + 1
End If
Next
MsgBox "Создано " & j & " файлов pdf", , "ГОТОВО!"
End With
Помогите, пожалуйста, решить вопрос с сохранением документов в разных форматах. Есть файл, макросы писал не я. Сам попытался сделать, но у меня это коряво выходит.
В закладке (СПЕЦИФИКАЦИЯ) есть кнопка печать где есть выбор сохранить файл в pdf или отправить на печать. Помогите, пожалуйста, добавить ещё 2 кнопки с возможностью сохранить в формате Excel и Word. Если не получается в Word, хотя-бы добывать возможность сохранять новый файл в Excel без формул или макросов.