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

Страницы: 1
Макрорекодер некоректно записывает последовательность нажатий
 
Добрый день!

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

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

Раньше с таким не сталкивался.
Как поменять местами значения в разных строках диапазона?, Нужна помощь в макросе, который меняет строки местами
 
Всем привет.

У меня есть скрипт, который берёт, например, 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
 
Доброго времени суток.

Есть у меня макрос, который копирует таблицу и вставляет на новый лист, как картинку. Это что-то типа презентации. каждые 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 выбрать все значения?
 
Добрый вечер!

Имеется скрипт, который в Гистограмме (сводной) добавляет подписи данных.
Он небольшой, выполняется быстро и более 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
    '''''
        ''''
Сохранить цвет ячейки при запросе из другой книги
 
Добрый день.

Сегодня столкнулся с ситуацией, что при выполнении запроса из другой книги, данные выводятся в таблицу, при этом, не сохраняя цвет и формат ячеек из исходной книги.
Есть ли способ обойти данную фичу, так как цвет ячейки из книги, с которой делается запрос - крайне необходимый параметр при последующих вычислениях.
Возможно, при выполнении запроса макросом, можно установить где-то параметр, который бы сохранял данные о ячейке?  
Преобразовать дату в число 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())) пробовал так, но не выходит.
Искомое значение из textbox, Не получается в впр вставить значение из textbox
 

Добрый день.

Хочу сделать форму, в которую я буду вводить значение, а оно потом будет вставляться в формулу ВПР

Код
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
    If TextBox1.Value = "" Then
        MsgBox ("введите артикул")
        Else
        ActiveCell.FormulaR1C1 = "=VLOOKUP(UserForm1.TextBox1.Value,'Паллеты к отгрузке'!C[-10]:C[-8],3,0)"
        End If
        End If
        End Sub

а в итоге получается это: =ВПР(UserForm1.TextBox1.Value;'Паллеты к отгрузке'!A:XFC;3;0)
Подскажите, как правильно всё оформить?

Изменено: zhmerin - 15.06.2018 17:16:44
Перенос строки кода в VBA, не получается перенести часть кода SQL, написаного в VBA
 
Добрый день.

На форумах видел много инфы и вариантов переноса строк, однако, всё попытки заставляют VBA ругаться.
Нужно перенести часть кода, который выполняет SQL запрос. Пробовал как только можно, но ничего не выходит.
Ниже пример запроса, подскажите, как можно перенести строку?
Код
  varSQL = "select codact, codpro, ds1pro _
    from fge50fmddk.gepro where codact = 'U20'"
Изменено: zhmerin - 14.06.2018 10:58:46
Подсчёт значений без дублей, не могу найти комбинацию формул, которые считают значение в столбце без дублей
 
Добрый день.

Такая ситуация: В столбце А есть перечень номеров поставщиков, но они могут повторятся по 5-10 раз,
Какую комбинацию формул следует использовать, чтоб посчитать конкретно каждого поставщика 1 раз?
Например:
1111
2222
3333
1111
2222
Итого: 3 поставщика
Пропустить пустые ячейки в диапазоне поиска (VBA), Подскажите комманду в VBA, которая игнорирует пустые строки в выбраном диапазоне
 
Добрый день.

Прошу помочь мне с решением задачи. Есть скрипт, который в выделенном диапазоне подсвечивает дубликаты попарно:
Код
Sub DuplicatesColoring()
     
    Dim Dupes()     'объявляем массив для хранения дубликатов
    ReDim Dupes(1 To Selection.Cells.Count, 1 To 2)
     
    Selection.Interior.ColorIndex = -4142   'убираем заливку если была
    i = 3
    For Each cell In Selection
        If WorksheetFunction.CountIf(Selection, cell.Value) > 1 Then
            For k = LBound(Dupes) To UBound(Dupes)
                'если ячейка уже есть в массиве дубликатов - заливаем
                If Dupes(k, 1) = cell Then cell.Interior.ColorIndex = Dupes(k, 2)
            Next k
            'если ячейка содержит дубликат, но еще не в массиве - добавляем ее в массив и заливаем
            If cell.Interior.ColorIndex = -4142 Then
                cell.Interior.ColorIndex = i
                Dupes(i, 1) = cell.Value
                Dupes(i, 2) = i
                i = i + 1
            End If
        End If
    Next cell
End Sub

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

Пробова запихнуть SkipBlanks: = True, но не могу угадать куда именно. (ещё толком не знаком с VBA)

В ячейках, по которым ведётся поиск есть формула ЕСЛИ, которая при значении ИСТИНА выводит номера автомобилей (значения, которые нужно попарно подсветить дубликаты), а при значении ЛОЖЬ выводит "" (пустая ячейка).
Изменено: zhmerin - 05.06.2018 10:41:04
Формула, записанная макрорекодером, падает в ошибку
 
Буду краток.

Записываю эту формулу:
Скрытый текст

Всё отлично считает. Нажимаю запись макроса. Дважды жму на ячейку. Ентер. Остановить запись макроса.
При попытке запустить макрос ловлю ошибку: "application defined error or object defined error"
Макрос сразу "преобразовывается" в FormulaR1C1.
Может нужно что-то вручную исправить?
Подскажите.
Страницы: 1
Наверх