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

Страницы: 1 2 След.
Макрорекодер некоректно записывает последовательность нажатий
 
, здравствуйте.

Мне нужно всего-то макросом отфильтровать и удалить строки, которые содержат 0 в столбце_3.
Этот вопрос можно решить путем 3-х минутного гугления, но всё же хотелось бы понять, что не так с редактором.
Макрорекодер некоректно записывает последовательность нажатий
 
Добрый день!

Столкнулся с ошибкой записи действий макрокодером.
Суть в чём:
Я пытаюсь записать макросом следующие действия: CTRL+L - поставить фильтр; В "столбец_3" в фильтре выбрать значения "0".
После остановки макрокодера и открытия редактора в записи вижу следующую картину:
Код
Sub Макрос3()
'
' Макрос3 Макрос
'

'
    .
    .EnableCancelKey("Таблица1").Type. Index := 3, Item := "0"
End Sub
При этом, строки
   .
   .EnableCancelKey("Таблица1").Type. Index := 3, Item := "0" Выделяются красным.

Раньше с таким не сталкивался.
Как поменять местами значения в разных строках диапазона?, Нужна помощь в макросе, который меняет строки местами
 
Юрий М, Верно. Рабочий день подходил к концу, спешил домой, не было времени правильно тему сформулировать)
Как поменять местами значения в разных строках диапазона?, Нужна помощь в макросе, который меняет строки местами
 
Юрий М, я Вас не так понял изначально. Спасибо большое!
Как поменять местами значения в разных строках диапазона?, Нужна помощь в макросе, который меняет строки местами
 
Юрий М, Потому что макрос далее менял значения в первом выделеном диапазоне на значение во втором и наоборот. Менял местами значения. Потому и нужно было два разных диапазона  
Как поменять местами значения в разных строках диапазона?, Нужна помощь в макросе, который меняет строки местами
 
Ігор Гончаренко, Крепкого здоровья Вам и долгих лет счастливой, богатой жизни. БЕСКОНЕЧНО БЛАГОДАРЕН
Изменено: zhmerin - 20.12.2018 23:34:01
Как поменять местами значения в разных строках диапазона?, Нужна помощь в макросе, который меняет строки местами
 
Юрий М, Я сегодня то же самое целый день пытался оъяснить специалистам на работе)

Скрипт всё выделяет правильно, на строку выше, как и в нём описано. Но он выделяет 15 и 14 строки в ОДИН диапазон, а чтоб макрос сработал дальше, нужно чтоб было выделено ДВА отдельных диапазона, т.е. А15:В15 + ctrl + А14:В14 .
Если это делать с помощью клавиатуры и мышки, то выделяем сначала А15:В15 потом зажимаем CTRL и выделяем А14:В14.
Вот именно этот момент, с двумя раздельными диапазонами я не могу решить
Как поменять местами значения в разных строках диапазона?, Нужна помощь в макросе, который меняет строки местами
 
Юрий М, Нуу, это куда больше сокращает скрипт, но не совсем решает проблему.

[img]file:///C:/Users/azhmaka/Desktop/Untitledttt.png[/img]На снимке вверху - так как сейчас макрос выделяет диапазон (А14:В15)
На снимке ниже - так как мне необходимо, чтоб макрос не выдавал ошибку "Надо выделить ДВА диапазона ячеек одинакового размера" (А14:В14 и А15:В15)
Код
Sub qqq()
Dim Rng1 As Range, Rng2 As Range
Dim ra As Range: Set ra = Selection
    Set Rng1 = Selection
    Set Rng2 = Rng1.Offset(-1)
Application.Union(Range(Rng2.Address), Range(Rng1.Address)).Select
msg1 = "Надо выделить ДВА диапазона ячеек одинакового размера"
msg2 = "Надо выделить 2 диапазона ячеек ОДИНАКОВОГО размера"
If ra.Areas.Count <> 2 Then MsgBox msg1, vbCritical, "Ошибка": Exit Sub
If ra.Areas(1).Count <> ra.Areas(2).Count Then MsgBox msg2, vbCritical, "Ошибка": Exit Sub
Application.ScreenUpdating = False
arr2 = ra.Areas(2).Value
ra.Areas(2).Value = ra.Areas(1).Value
ra.Areas(1).Value = arr2
End Sub

Как поменять местами значения в разных строках диапазона?, Нужна помощь в макросе, который меняет строки местами
 
Юрий М, Вообще я должен выбрать (ЛКМ) только десятую строку, а девятая должна сама макросом выбраться вторым диапазоном. У меня получается выбрать отдельныме диапазоны, только если диапазоны разделены хотя бы одной строкой. если диапазоны идут подряд (10 и 9 строка), то макрос его выбирает как один диапазон
Код
 a = Application.ActiveCell.Row
ThisWorkbook.Sheets("Транспорт зеркало").Activate
Application.Union(Range(Cells(a, 1), Cells(a, 2)), Range(Cells(a - 1, 1), Cells(a - 1, 2))).Select
Как поменять местами значения в разных строках диапазона?, Нужна помощь в макросе, который меняет строки местами
 
Ігор Гончаренко, я понимаю, что он выбирает через строку. Но я не понимаю как работает блок ниже.

Чтоб заменить данные в диапазонах, мне нужно выбрать 1 и 2 диапазон (ЛКМ диапазон1 + CTRL +ЛКМ диапазон2), если я выбираю вручую 9 и 10 строку, и запускаю код
Код
Dim ra As Range: Set ra = Selection
msg1 = "Надо выделить ДВА диапазона ячеек одинакового размера"
msg2 = "Надо выделить 2 диапазона ячеек ОДИНАКОВОГО размера"
If ra.Areas.Count <> 2 Then MsgBox msg1, vbCritical, "Ошибка": Exit Sub
If ra.Areas(1).Count <> ra.Areas(2).Count Then MsgBox msg2, vbCritical, "Ошибка": Exit Sub
Application.ScreenUpdating = False
arr2 = ra.Areas(2).Value
ra.Areas(2).Value = ra.Areas(1).Value
ra.Areas(1).Value = arr2
то всё работает, так как я выбрал два диапазона, но если я выберу 10 и 9 строку в один диапазон, то выпадает ошибка. помогите понять, как с помощью ВБА выбрать две соседние строки, но в разные диапазоны.
Как поменять местами значения в разных строках диапазона?, Нужна помощь в макросе, который меняет строки местами
 
Всем привет.

У меня есть скрипт, который берёт, например, 10-ю строку листа и меняет её на 8-ю строку, и 8-ю строку на 10 соответственно.
Меняться должны лишь данные, без вырезания строк, так как на соседнем листе формулы, которые сбиваются при вырезании столбцов.
Скрипт уже готов, но проблема в том, что можно выбрать диапазон лишь через строку, если выбрать две соседние строки (10,9), то скрипт ругается.
Нужно сделать так, чтоб выделялись две соседние строки отдельно, а не в один диапазон, так как потом идёт работа с Areas.

Буду благодарен любой помощи

Код
Sub Макрос5()
Application.ScreenUpdating = False
Set pl = ThisWorkbook.Sheets("Транспорт")
Set zt = ThisWorkbook.Sheets("Транспорт зеркало")
 a = Application.ActiveCell.Row
ThisWorkbook.Sheets("Транспорт зеркало").Activate
Application.Union(Range(Cells(a, 1), Cells(a, 2)), Range(Cells(a - 2, 1), Cells(a - 2, 2))).Select
Dim ra As Range: Set ra = Selection
msg1 = "Надо выделить ДВА диапазона ячеек одинакового размера"
msg2 = "Надо выделить 2 диапазона ячеек ОДИНАКОВОГО размера"
If ra.Areas.Count <> 2 Then MsgBox msg1, vbCritical, "Ошибка": Exit Sub
If ra.Areas(1).Count <> ra.Areas(2).Count Then MsgBox msg2, vbCritical, "Ошибка": Exit Sub
Application.ScreenUpdating = False
arr2 = ra.Areas(2).Value
ra.Areas(2).Value = ra.Areas(1).Value
ra.Areas(1).Value = arr2
pl.Select
Application.ScreenUpdating = True
End Sub
Картинка под размер видимого диапазона, Как вставить картинку под размер видимого диапазона VBA
 
Казанский, Шикарно, спасибо большое!
Картинка под размер видимого диапазона, Как вставить картинку под размер видимого диапазона VBA
 
Dima S,

Спасибо, почти то, что нужно!

Интересно, что картинка подгонятся по указаному мною размеру только по строкам.

Например, если я указываю Range("A1:V28").Height, то картинка расширяется точно до 28 строки (меняя кол-во строк в диапазоне, меняется и размер картинки).

Вот только со столбцами это не работает. На данный момент у меня растягивается конкретно до колонки N.

Пример скрипта оставлю ниже
Код
Sub copypicday()
        Dim i As Integer
        Sheets("BBX day").Select
        Set r = [L7]
    Worksheets("BBX day").Range("J1").Value = Format(Now, "hh:mm:ss")
    ActiveSheet.Range(r).CopyPicture
    Application.Wait (Now + TimeValue("0:00:1"))
        On Error Resume Next
        Sheets("Лист5").Select
        ActiveSheet.Pictures.Delete
    Range("A1").Select
        Application.DisplayFullScreen = True
    ActiveSheet.Pictures.Paste.Select.Name = "Pic1"
    ActiveSheet.Shapes.Range(Array("Pic1")).Select
        Selection.ShapeRange.LockAspectRatio = msoFalse
    'Selection.ShapeRange.ScaleWidth 1.4769513017, msoFalse, msoScaleFromTopLeft
    'Selection.ShapeRange.ScaleHeight 1.7025162669, msoFalse, msoScaleFromTopLeft
    Selection.ShapeRange.Height = Range("A1:Z29").Height
    ActiveWindow.Zoom = 100
End Sub



переменная r - это формула в ячейке, которая вычисляет диапазон таблицы
Картинка под размер видимого диапазона, Как вставить картинку под размер видимого диапазона VBA
 
Доброго времени суток.

Есть у меня макрос, который копирует таблицу и вставляет на новый лист, как картинку. Это что-то типа презентации. каждые 5 минут картинка обновляется (показывается производительность.)
Я всё пытаюсь её подогнать под размер видиого диапазона (для этого  скрыл строку с формулами, ленту и т.д.)

Использую сейчас такие стркоки
Код
        Selection.ShapeRange.LockAspectRatio = msoFalse
    Selection.ShapeRange.ScaleWidth 1.5635949894, msoFalse, msoScaleFromTopLeft
    Selection.ShapeRange.ScaleHeight 1.3539124464, msoFalse, msoScaleFromTopLeft
Поскаижите, можно ли как-то подогнать картинку под размер видимого диапазана или вставить картинку от ячейки до ячейки (например: левый верхний угол в А1, а правый нижний в V28)?
Изменено: zhmerin - 24.09.2018 22:32:52
Excel to Power Point изменить размер изображения VBA, Как изменить размер изображения при копирования из Excel в PPT?
 
Добрый день.

Есть макрос, который  копирует таблицу как изображение из Екселя и переносит его на слайд в ПП.

Всё работает отлично, но есть одно НО. я никак не могу заставить вставлять изображение определённого размера.

Дело в том, что Диапазон таблицы может быть от 10 до 40 строк.

Я хочу, чтоб при вставке в ПП. Изображение растягивалось по всему слайду (размер слайда 16:9)

Перерыл уже все форумы, нигде ничего не нашёл. последняя надежда на Вас.

Код:
Код
Sub aaaextoppt()
        Dim PP As PowerPoint.Application
        Dim PPPres As PowerPoint.Presentation
        Dim PPSlide As PowerPoint.Slide
        Dim i As Integer
        Sheets("BBX day").Select
        Set r = [Q22]
        Set PP = New PowerPoint.Application
        Set PPPres = PP.Presentations.Item("C:\адрес\адрес\адрес\Презентация Microsoft PowerPoint (2).pptm")
        PP.Visible = True
                ActiveSheet.Range(r).CopyPicture
                Application.Wait (Now + TimeValue("0:00:1"))
                Set PPSlide = PPPres.Slides(1)
                On Error Resume Next
                Set PPShape = PPSlide.Shapes(1)
                PPSlide.Select
                PPShape.Delete
                PPSlide.Shapes.Paste
                PP.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, msoTrue
                PP.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, msoTrue
        Set PPSlide = Nothing
        Set PPPres = Nothing
        Set PP = Nothing
End Sub
Изменено: zhmerin - 18.09.2018 16:14:43
Таблица excel в powerpoint vba, Как обновить подключения в слайдах в POWERPOINT
 
Добрый день.

Я только начал разбираться в VBA в экселе, как тут же поступила задача с PP.

Дело в том, что у меня есть три слайда, на которых есть таблицы Excel. В них есть внешние подключения (отчёты), которые обновляются.

Как я могу настроить обновление сразу всех таблиц через VBA?
Не срабатывает Макрос с командой Application.OnTime VBA, Макрос выполняется в хаотичном порядке
 
Добрый день.

Полазив по этим вашим интернетам, я нашёл несколько команд и слепил из них макрос
Код
Sub ReLinks()
    Sheets("BBX").Activate
ThisWorkbook.RefreshAll
    Application.CalculateUntilAsyncQueriesDone
   Application.OnTime Now + TimeValue("00:01:00"), "one"
    Application.OnTime Now + TimeValue("00:00:10"), "two"
    Application.OnTime Now + TimeValue("00:00:10"), "three"
End Sub

Sub one()
Sheets("Диаграмма1").Activate
End Sub
Sub two()
Sheets("Приведи друга").Activate
End Sub
Sub three()
Call ReLinks
End Sub
При запуске макроса Relinks должен обновиться отчёт. Через минуту после обновления открывается лист Диаграмма1, через 10 секунд Приведи друга и через 10 секунд опять открывается лист BBX , обновляется ждёт минуту и т.д.

Столкнулся с тем, что после обновления отчёт вовсе не ждёт минуту. Он переключается на лист Приведи друга, затем опять обновляется и затем опять какие-то беспорядочные действия.

Подскажите, как можно пофиксить? Желательно, не используя Wait.
Изменено: zhmerin - 14.09.2018 12:05:04
Преобразование во временной формат VBA, Не срабатывает макрос для преобразования из общего формата в число
 
Добрый день!

Суть вопроса: у меня есть SQL запрос, который выводит данные в таблицу в общем формате.
С помощью макроса, я хотел сделать Месседжбокс, который показывает минимальное и максимальное время.

Но столкнулся с тем, что макрос не видит никакое значение.

Формула =МИН() тоже не выводит ни одно значение из диапазона, пока я дважды не клацну по ячейке и значение само не преобразуется.

Вручную перебирать каждую ячейку из 100 строк тоже не комильфо.

Может подскажете макрос, который преобразует из общего в время?
VBA. Как с помощью команды ActiveChart.SeriesCollection выбрать все значения?
 
Казанский,Спасибо!)
VBA. Как с помощью команды ActiveChart.SeriesCollection выбрать все значения?
 
Добрый вечер!

Имеется скрипт, который в Гистограмме (сводной) добавляет подписи данных.
Он небольшой, выполняется быстро и более 10 значений в гистограмме не бывает, но всё же хотелось бы узнать,
что можно написать в скобках, чтоб не повторять по две строки для каждого значения, а записать всё в одну.

Можно ли воспользоваться For each? Если да, то подскажите, пожалуйста, как правильно записать?
Код
ActiveSheet.ChartObjects("Диаграмма 6").Activate
    ActiveChart.SeriesCollection(1).Select
    ActiveChart.SeriesCollection(1).ApplyDataLabels
        ActiveChart.SeriesCollection(2).Select
    ActiveChart.SeriesCollection(2).ApplyDataLabels
        ActiveChart.SeriesCollection(3).Select
    ActiveChart.SeriesCollection(3).ApplyDataLabels
        ActiveChart.SeriesCollection(4).Select
    ActiveChart.SeriesCollection(4).ApplyDataLabels
        ActiveChart.SeriesCollection(5).Select
    ActiveChart.SeriesCollection(5).ApplyDataLabels
        ActiveChart.SeriesCollection(6).Select
    ActiveChart.SeriesCollection(6).ApplyDataLabels
        ActiveChart.SeriesCollection(7).Select
    ActiveChart.SeriesCollection(7).ApplyDataLabels
           ActiveChart.SeriesCollection(.Select
    ActiveChart.SeriesCollection(.ApplyDataLabels
           ActiveChart.SeriesCollection(9).Select
    ActiveChart.SeriesCollection(9).ApplyDataLabels
           ActiveChart.SeriesCollection(10).Select
    ActiveChart.SeriesCollection(10).ApplyDataLabels
Вывести значение справа VBA, Как с помощью VBA скрипта вывести значение в ячейке справа?
 
Добрый вечер.

У меня есть скрипт
Код
Sub tt()
Dim cc As Range
For Each cc In Range("C6:C31")
If cc.Value = "Etherium" Then MsgBox (cc.Address)
Next
End Sub

При его выполнении мне выводится адрес ($C$8). Как мне правильно прописать команду, чтоб выводился адрес на три столбца правее ($F$8)?

Пробовал прицепить Offset, но как-то не особо получилось
Изменено: zhmerin - 03.09.2018 19:51:51
не вставляется значение ячейку VBA, при выполнении скрипта - ошибка object doesn't support this property or method
 
Добрый день.

При выполнении скрипта
Код
Sheets("Лист4").Select
    Columns("A:A").Select
    Selection.Find(What:="4000" & place, After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    Selection.FormulaR1C3 = "Нет машины"
    End If
Next: [place+1]
'
End Sub
Вылазит ошибка object doesnt support this property or method.

Ругается на строку 26 (Selection.FormulaR1C3 = "Нет машины"). Он должен в диапазоне А:А искать 4000 и place( в моём случае это 10) и от найденой ячейки через 2 столбца (в моём случае это ячейка С6) вставить "НЕТ МАШИНЫ"
Изменено: zhmerin - 03.09.2018 17:11:38
[ Закрыто] Оптимизация VBA скрипта, Зациклить скрипт
 
Добрый день.

Помогите, пожалуйста, зациклить скрипт.

В примере указан кусок скрипта, так как таких "кейсов" у меня около 30-ти и для каждоко нужно прописывать соответсвующую ячейку.

У меня есть скрипт, который для каждой ячейки, в диапазоне Н6:Н31 выполянет поиск соответствия на другом листе.
В столбце Н находятся числа:
101112131416171820213437383940426364
Они выделены жёлтым цветом. Макрос ищет на листе 4 сцепку в формате (65535 + значение в ячейке столба Н + сегодняшняя дата ( в формате числа))
и если находит значение, то в ячейку напротив (в столбец С) вставляет "Есть машина", если нет, то "НЕТ МАШИНЫ".

Это всё прописано вручную. Весь скрипт занимает более 300 строк, хотя по-сути выполняет одно и то же действие , только для разных  значений в ячейке

Как можно указать, чтоб в поиск ".Find(What: ="65535"" вставлялось значение из ячейки H6, далее ,если есть соответствие, в ячейку С6: вставлялось "Есть машина"
И потом макрос начал проверять ячейку Н7 и выполнять с ней опять те же действия?
Код
Sub ihatemacro()
Application.ScreenUpdating = False
Range("H6:H31").Select
Dim c As Range
For Each c In Selection
    Select Case c
    ''''
    Case 10: Sheets("Лист1").Select
    Set fcell = Columns("A:A").Find(What:="6553510" & CLng(Date) & 1, After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
If Not fcell Is Nothing Then
    fcell.Select
    Selection.Copy
    Sheets("Лист4").Select
    Range("C6").Select
    ActiveCell.FormulaR1C1 = "Есть машина"
Else
Sheets("Лист1").Select
    Range("C6").Select
    ActiveCell.FormulaR1C1 = "НЕТ МАШИНЫ"
End If
    End Select
    '''''
        ''''
            Select Case c
    Case 11: Sheets("Лист").Select
    Set fcell = Columns("A:A").Find(What:="6553511" & CLng(Date) & "1", After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
If Not fcell Is Nothing Then
    fcell.Select
    Selection.Copy
    Sheets("Лист4").Select
    Range("C7").Select
    ActiveCell.FormulaR1C1 = "Есть машина
Else
Sheets("Лист4").Select
    Range("C7").Select
    ActiveCell.FormulaR1C1 = "НЕТ МАШИНЫ"
End If
    End Select
    '''''
        ''''
Сохранить цвет ячейки при запросе из другой книги
 
PooHkrd,Открывать, копировать и закрывать книгу макросом - как-то мне не комильфо. хочется чтоб был один запрос, который "дублирует" лист книги в другую
Сохранить цвет ячейки при запросе из другой книги
 
PooHkrd, Значит, это всё же возможно?) Меня только это волнует. Там я уже сам разбираться буду
Сохранить цвет ячейки при запросе из другой книги
 
PooHkrd, Данные - Из других источников - из импорта данных XML, далее нахожу путь книги.

В строке подключение :
Provider=Microsoft.ACE.OLEDB.12.0;User ID=###;Data Source=###Адрес###;Mode=Share Deny Write;Extended Properties="HDR=YES;";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Engine Type=37;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False;Jet OLEDB:Bypass UserInfo Validation=False
Сохранить цвет ячейки при запросе из другой книги
 
Добрый день.

Сегодня столкнулся с ситуацией, что при выполнении запроса из другой книги, данные выводятся в таблицу, при этом, не сохраняя цвет и формат ячеек из исходной книги.
Есть ли способ обойти данную фичу, так как цвет ячейки из книги, с которой делается запрос - крайне необходимый параметр при последующих вычислениях.
Возможно, при выполнении запроса макросом, можно установить где-то параметр, который бы сохранял данные о ячейке?  
Преобразовать дату в число VBA, Не могу преобразовать дату в числовой формат VBA
 
Казанский, спасибо! Именно то, что нужно
Преобразовать дату в число VBA, Не могу преобразовать дату в числовой формат VBA
 
iMrTidy, Если сделать так, то макрокодер запишет в .Find только то, что я в строке поиска записал. У меня в массиве данных  дата записана в числовом формате. Т.е. если мне нужно найти сегодняшнюю дату, то макрос должен искать не 31.08.2018, а 43343
Преобразовать дату в число VBA, Не могу преобразовать дату в числовой формат VBA
 
Добрый день.

У меня имеется макрос

Код
Sheets("Лист1").Select
Set fcell = Columns("A:A").Find("6553518")
If Not fcell Is Nothing Then
    MsgBox "Найдено в строке: " + CStr(fcell.Row)
End If
который ищет ячейку по цвету и дате.
6553543343
где 65535 - цвет ячейки, 43343 - дата в числовом формате
как правильно будет записать скрипт?
.Find("65535" & DateValue(Now())) пробовал так, но не выходит.
Страницы: 1 2 След.
Наверх