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

Страницы: 1 2 3 4 5 6 7 8 След.
Добавить строки в умную таблицу
 
Я начал делать код для своего второго варианта. Строки под таблицей добавляются. Пока не получается написать новый диапазон для таблицы
Код
Private Sub CommandButton1_Click()
 Dim vRetVal
 Dim fcell3 As Variant
 Dim b As Variant
Dim LastRow3 As Integer
Dim vrowCol
Dim a As String
Dim c As String
 Dim d As Variant
'Поиск заголовка над таблицей
Set fcell3 = Columns("A:A").Find(БазаФурнитуры.ИмяПодраздела.Text)
If Not fcell3 Is Nothing Then
'активная ячейка для определения имени таблицы
Worksheets(БазаФурнитуры.ИмяРаздела.Text).Range("A" & fcell3.Row + 2).Activate
End If
'Определение имени таблицы
Dim Obj As ListObject
 If ActiveSheet.ListObjects.Count = 0 Then Exit Sub
 For Each Obj In ActiveSheet.ListObjects
    If Not Intersect(ActiveCell, Obj.Range) Is Nothing Then
       'MsgBox Obj.Name 'ИМЯ ТАБЛИЦЫ
  d = Obj.Name
    Debug.Print ActiveSheet.ListObjects(Obj.Name).Range.Address
 a = Range(ActiveSheet.ListObjects(Obj.Name).Range.Address(0, 0)).Row 'Первая строка в таблице
        'MsgBox a
'Определение количества строк в таблице
LastRow3 = Range(Obj.Name).rows.Count
MsgBox LastRow3
b = a + LastRow3 + 1 'первая строка под таблицей для определения вставки строк
'MsgBox b
Sheets(ИмяРаздела.Text).Range("A" & b).Activate
    End If
Next

'Определение количества строк для вставки и их вставка
vrowCol = InputBox("Сколько строк добавить?", "Ввод значений")
vrowCol = Val(vrowCol): If vrowCol = 0 Then Exit Sub
With ActiveCell
Application.ScreenUpdating = False
c = CStr(.Row) & ":" & CStr(.Row + vrowCol - 1)
'Range(CStr(.Row) & ":" & CStr(.Row + vrowCol - 1)).HorizontalAlignment = xlCenter  'выравнивание текста по центру ячейки в таблице, кроме наименования
'Range(CStr(.Row) & ":" & CStr(.Row + vrowCol - 1)).EntireColumn.AutoFit 'автоширина ячейки
rows(c).Insert Shift:=xlDown
Application.ScreenUpdating = True
End With

'Увеличение диапазона таблицы на количество вставленных строк

With ActiveSheet.ListObjects(d)
  .Resize .Range.Resize(a + vrowCol)
End With
   
End Sub

Добавить строки в умную таблицу
 
Sanja, здравствуйте. Пробовал. Excel сразу закрывается
Добавить строки в умную таблицу
 
Здравствуйте. Пока предложенные варианты не работают.
Попробуйте просто на листе выделить несколько строк, чтобы первая выделенная строка входила в одну таблицу, а последняя была в одной из следующих таблиц, правой кнопкой мыши "вставить" - "вставить" не активная, значит действие выполнить невозможно. А если выделить несколько строк, чтобы первая выделенная строка входила в одну таблицу, а последняя не доходила до следующей таблицы ниже, то вставить можно. Может попробовать тогда такой вариант: число строк, которые нужно вставить, делить на 3+6+9+12 и т.д (вставляем 3 строки, далее вставляем 6, потом 9 - пока не вставится необходимое количество указанное в InputBox, но в всё в одном коде). В этом случае перекрытия следующей таблицы не будет и строки будут добавляться. Здесь видимо нужно сделать цикл, который  мне не сделать.
Или другой вариант: под каждой таблицей есть строка, которая не входит в диапазон таблиц. Если нужное количество вставляемых строк начинать с неё, то любое количество вставляется, но они не входят в диапазон таблицы, которая расположена выше и для которой строки должны добавляться. Если после добавления строк на это количество увеличить диапазон таблицы, то, возможно, это был бы "живой" вариант. Выглядеть код будет примерно так: определяем диапазон таблицы, в которую нужно добавить строки; начиная со следующей строки добавляем нужное количество строк; увеличиваем нижнюю границу таблицы на введённое количество строк.
С реализацией у меня будут сложности. Прошу помочь
Добавить строки в умную таблицу
 
Здравствуйте. Код работает, когда число добавляемых сторк не превышает количества строк до следующей умной таблицы. Если нужно добавить 20 или 40, то выходит ошибка. Как макросом можно добавить любое количество строк? Для теста нужно выбрать имя производителя (заголовок таблицы) и кнопку добавления строк. Заранее спасибо
Замена данных в столбце всех умных таблиц
 
Замечательно. Спасибо. Ещё раз с наступающим новым годом
Замена данных в столбце всех умных таблиц
 
Сейчас в книге не все таблицы. Во время работы их может добавляться много. Может эта информация нужна
Замена данных в столбце всех умных таблиц
 
На форме "Параметры" Textbox "НовыеКоэфф". В него вносим число, на которое нужно заменить все коэффициенты, расположенные во всех таблицах книги (кроме Калькуляции и Копии) в столбцах "Коэф-нт". Код к кнопке "СменитьКоэффициенты".  
Замена данных в столбце всех умных таблиц
 
С игнорированием постараюсь разобраться, а с заменой данных во всех таблицах поможите?
Результат работы макроса на лист
 
Sanja, спасибо. вас тоже с наступающим. Желаю здоровья, успехов в работе и счастья
Замена данных в столбце всех умных таблиц
 
Здравствуйте. Насобирал код по замене значений в столбце "Коэф-нт" в выбранной таблице (строка в Listbox). А как сделать, чтобы заменить значения во всех таблицах книги? Таблицы все однотипные. Нужно только игнорировать листы "Калькуляция" и "Копия" - на них другие таблицы. Файл приложил
Результат работы макроса на лист
 
Здравствуйте. Возможно изменить код, который сделал Sanja, чтобы игнорировались таблицы листов "Калькуляция" и "Копия" (чтобы их данные не приходили на лист "Настройки")?
Выделение активной ячейки
 
Ответ нашёл. Спасибо за предложения
Код
Sub No_Fill_Wb()

Dim ws as worksheet

For each ws in Thisworkbook.Worksheets
    ws.Cells.Interior.ColorIndex = 0
Next ws

End Sub
Выделение активной ячейки
 
БМВ, здравствуйте. Спасибо за ответ. Я в начале кода вставил, что снимается заливка со всего листа, потом по коду выбирается активная ячейка, которая заливается. При следующем выборе combobox ранее выбранная ячейка теряет заливку и заливается новая. Всё вроде бы нормально, но после окончания работы остаётся залитой последняя выбранная ячейка. Подскажите как будет выглядеть код "снять заливки на всех листах книги"? Я его поставлю на открытие книги.
Выделение активной ячейки
 
Здравствуйте. По умолчанию цвет рамки курсора зелёного цвета. Можно её программно изменить на красный? Если невозможно, то другой вопрос. При выборе combobox (на форме), ячейка становится активной. Возможно её залить, к примеру в жёлтый, но при выборе следующей ячейки через combobox, с прежней выбранной ячейки снималась заливка, а заливалась новая выбранная? Нюанс ещё в том, что ячейки выбираются в умной таблице со стилем "TableStyleLight21" и, если отменять заливку на бесцветный, то у таблицы будет вид с белыми "дырами", а определять какая заливка была ранее у аткивной ячейки наверно нереально. Я не настаиваю именно на таком решении вопроса. Может что-то посоветуете, но в идеале было бы сменить цвет рамки курсора.  
Результат работы макроса на лист
 
МатросНаЗебре, спасибо
Результат работы макроса на лист
 
Sanja, здравствуйте. Подскажите, пожалуйста, как в код можно добавить значение ячейки, находящейся на строку выше от таблицы в столбце А, где   .Range("D" & I) = LO.Parent.Name - это ниаменование листа; .Range("F" & I) = LO.Range.Address - это диапазон таблицы? Результат в  .Range("E" & I) = (искомый текст). Или как извлечь из адреса отдельно номер строки?
Результат работы макроса на лист
 
Sanja. Вы, как всегда, на высоте. Большое спасибо. Загружается как надо
Результат работы макроса на лист
 
Здравствуйте. Прошу доработать код. Полученные значения "а" чтобы записывались на лист "Настройки" в столбец "C"  с третьей строки и ниже. Полученные значения "b" чтобы записывались на лист "Настройки" в столбец "D"  с третьей строки и ниже. Полученные значения "c" чтобы записывались на лист "Настройки" в столбец "F"  с третьей строки и ниже. Спасибо
Код
Private Sub CommandButton1_Click()
 Dim a As Variant
 Dim b As Variant
 Dim c As Variant
Dim sheet As Worksheet, LO As ListObject
For Each sheet In Sheets
For Each LO In sheet.ListObjects
With LO
  a = .Name
  'MsgBox a
  b = .Parent.Name
  'MsgBox b
  c = .Range.Address
  'MsgBox c
End With
Next
Next
End Sub
Заполнение ListBox и уданение из него значения
 
Неожиданно - какая дискуссия. Спасибо за советы. Буду пробовать разбираться
Заполнение ListBox и уданение из него значения
 
Здравствуйте. Может спрашиваю чушь несусветную: можно как-то заполнять ListBox, не задействуя лист и не вписявая вручную в UserForm_Initialize. А, к примеру, как у меня на форме, вносим в TextBox значение, кнопкой 1 заносим его в ListBox, а это значение бы записывалось в  UserForm_Initialize. И наоборот, при выборе в ListBox, кнопкой 2 удалялось. Просто ради небольшого списка держать лист... Что скажите?
Не выполняется часть действий в макросе
 
asesja, изначально код таким и был, только он не в том порядке выполнял работу. Я его и выложил, чтобы найти причину. В нём нужно "расставить запятые типа "Казнить нельзя помоловать"". Я поставил "запятую", код работает, но пряталась лента Ribbon. Добавил строку для её восстановления. Теперь вопрос - всё нормально, не помешает активация ленты вообще для Excel. По поводу непорядка в коде. Я согласен. Формирую коды из кусков найденных. Если можете, то напишите что исправить. А вообще - спасибо за поддержку и участие
Не выполняется часть действий в макросе
 
Добавил после копирования листа в новую книгу
Код
ActiveWorkbook.Close True
Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"",True)"
и стало всё работать. Но это нормально? Не повлияет на Excel?
Не выполняется часть действий в макросе
 
Примерно понял в чём проблема. Хоть и написано в коде после копирования листа в новую книгу, что она закрывается (ActiveWorkbook.Save
   wb1.Close True 'закрываем новую книгу), но она остаётся открытой и действие Call Очистка применяется в новой книге, а рабочая закрывается неочистившись. Я добавил для закрытия новой книги ActiveWorkbook.Close True - всё стало работать, но пропадает верхняя лента на листе и приходится при открытии любой книги Excel её восстановливать. Как всё-же закрыть новую книгу без лишних вопросов, чтобы только после этого происходила очистка и закрывалась с сохранением рабочая книга?
Не выполняется часть действий в макросе
 
Sanja, здравствуйте. У меня было сделано как вы предлагаете. Насколько я понял оба мои варианта не работают, так как книга закрывается и макрос "Очистка" уже не в деле (до этого был макрос "Замена Калькуляции"). Может нужно дописать что-то перед Call Очистка, чтобы активная книга работала (оставалась открытой).
По поводу добавления строк: таблицы без заполнения имеют по 3 строки; очистка происходит в таблице, если строк больше трёх. Я его пробовал, код работает. Но сейчас мне нужно пройти другое действие, точнее бездействие макроса перед закрытием книги
Не выполняется часть действий в макросе
 
asesja, здравствуйте. Должно быть наоборот: копируемый и сохраняемый лист в новой книге после заполнения - со всеми изменениями, а, который остаётся в рабочей книге, очищается и сохраняется рабочая книга. Call Очистка должен сработать после сохранения заполненного листа в новой книге
Не выполняется часть действий в макросе
 
Здравствуйте. В процессе работы в книге заполняется лист "Калькуляция". После окончания работы лист "Калькуляция" копируется, сохраняется в новой книге, которая закрывается. В книге, которой вели заполение, таблицы очищаются от заполнения и книга закрывается с сохранением (чистый шаблон для новой работы).
Макрос:
1. Копирование листа из книги №1 и сохранение его в новой
2. Очистка таблиц на листе в книге №1
3. Закрытие книги №1 с сохранением
Первый и третий пункты выполняются, а второй нет. Посмотрите, пожалуйста, в чём причина. Для теста нужно внести любой текст в А1 (учавствует в имени нового файла), какие-нибуди записи в таблицы, любую цифру в столбце "Стоимость" и нажать на кнопку "Сохранить"
Сохранение листа в новой книге
 
Спасибо. Я убрал макросы с листа. Снятие защиты не потребовалось и с расширением вопрос отпал.
Сохранение листа в новой книге
 
В листе "Калькуляция" в ячейке А1 написать любой текст (наименование, которое пойдёт в имя листа) и поставить любую сумму в любую таблицу (в "итого цена" не должно быть 0); правая кнопка для запуска действия
Сохранение листа в новой книге
 
irabel, Sanja, здравствуйте. На листе "Калькуляция" умные таблицы. Вчера день пытался сделать сохранение листа "Калькуляция" в новой книге. Потом нашёл, что умные таблицы  - это проблема для такого сохранения. Нашёл и вставил код для перевода перед сохранением таблиц в диапазоны. Дело сдвинулось, но подсвечивается строка с переименованием листа. Оба ваши варианта испробовал, но строка так и светится. Может в файле посмотрите? Есть ещё лист "Копия". Таблица с этого листа, после сохранения листа "Калькуляция" в новой книге, копируется на лист "Калькуляция" и основная книга сохраняется с изменениями - это, чтобы, если в процессе работы вносили изменения в таблицы книги, то в итоге книга сохранялась как шаблон с пустой калькуляцией. Написал, чтобы вас не смущал лист "Копия"
Сохранение листа в новой книге
 
Нашёл ещё такой код. Он создаёт новую книгу с нужным листом, но закрываются обе книги - книга с скопированным листом и книга, из которой копировали. Нужно, чтобы новая книга закрылась, а из которой копировали нет - в ней перед закрытием нужно ещё выполнить один код. Может по этому макросу подскажите как написать закрытие только новой книги
Код
Private Sub СохранитьРасчёт2()
'Сохраняем Калькуляцию в новой книге с выбором места сохранения
    With Application.FileDialog(msoFileDialogSaveAs)
        .InitialFileName = ThisWorkbook.Path & "\" & "Калькуляция, " & Range("A1").Value
              If .Show = 0 Then Exit Sub
        ThisWorkbook.ActiveSheet.Copy
        Application.DisplayAlerts = False
        .Execute
        Application.DisplayAlerts = True
    End With
   
    
 'удаляем все пустые листы
    Application.DisplayAlerts = False
    Dim sh2 As Worksheet
    For Each sh2 In Sheets
        If IsEmpty(sh2.UsedRange) Then sh2.Delete
    Next
  ActiveWorkbook.Close
  
End Sub
Страницы: 1 2 3 4 5 6 7 8 След.
Наверх