Добрый день. Вопрос конечно глупый и возможно уже был на форуме, если был дайте ссылку. В общем в двух ячейках находится адрес ячейки которую необходимо активировать. Не получается по ним ее активировать. В ячейках Row и cols находятся цифры столбца и строки. Задача состоит в том чтобы именно из данных ячеек, содержащих номер строки и столбца, активировать нужную ячейку.
Код
Sub tert()
Row = Cells(1, 2).Value
cols = Cells(1, 3).Value
Лист2.Cells(Row, cols).Activate
End Sub
Фишка в том, что если дата просрочена файл удаляет вкладки, сохраняется и закрывается, о том что стоит дата проверки никто не знает, я ее по умолчанию обновляю, а старые файлы этого отчета никто не смотрит, всем нужны новые и файл собирается накопительно ежедневно. Файл как раз открываетсяч на компах в рабочих группах, но кто-то может его забрать домой.
Как раз этот макрос и выводит 00:00:00 ((( Запретить макрос могут, но тогда отчет не будет считаться и данные будут бесполезны. А на счет отключить интернет, такого не получиться, так как интернет корпоративный и нужны админ права, да еще до такого додуматься нужно. А я две проверки зашью, одну из интернета, другую от виндоус.)))
У меня зашит штатный таймер в файл, который отпраляеется группе лиц в том числе руководству, и если дата больше указанной в коде - файл самоудаляет вкладки и выкл макрос. Проблема в том, что данные пользователи, будучи безграмотными в макросах не смогут исправить код, а вот дату в виндоус перевести на месяц назад смогут и файл не удалит вкладки. Решил попробовать доставать дату из интернета а не из виндоус, чтобы дату откатить не могли. И на макрос я наложил пароль, чтобы не так просто было его поправить если вдруг все же додумаются и сам код очень коряво написал, для плохой читабельности.
Всем добрый день. Подсмотрел в интернете макрос по получению даты и времени из интернета, при запуске процедуры "ВывестиТекущуюДатуИВремя" выводит вместо даты 00:00:00, может кто сможет подсказать что не так?
Код
Function GetRealTime(Optional ByVal GMT& = 4) As Date
On Error Resume Next: Err.Clear: Dim http As Object, URL$, GMT_Time$, m$, mv$
'GetRealTime = Now ' значение по-умолчанию
Set http = CreateObject("Microsoft.XMLHTTP")
URL$ = "http://yandex.ru/" ' можно указать практически любой сайт
http.Open "GET", URL$, False
http.Send
GMT_Time = http.GetResponseHeader("Date")
Set http = Nothing
' пример полученной строки: Sun, 27 Apr 2014 06:14:44 GMT
'If Not (GMT_Time Like "???, *# ??? #### ##:##:##*GMT*") Then Exit Function
GMT_Time = Trim(Split(GMT_Time, ",")(1))
GMT_Time = Trim(Split(GMT_Time, "GMT")(0))
m$ = Trim(Split(GMT_Time)(1))
mv$ = (InStr(1, "janfebmaraprmayjunjulaugsepoctnovdec", m$, vbTextCompare) + 2) / 3
GMT_Time = Replace(GMT_Time, " " & m$ & " ", "." & Format(mv$, "00") & ".")
GetRealTime = CDate(GMT_Time) + Val(GMT&) / 24
End Function
Sub ВывестиТекущуюДатуИВремя()
t = GetRealTime
MsgBox t, vbInformation, "Текущее время (в Москве)"
End Sub
Спасибо за ссылку, я уже разобрался. Помог комментарий из прошлых ответов: В данном варианте много нюансов: 1. .GetFromClipboard не возвращает массив, а работает ТОЛЬКО с текстом единой строкой. Значит надо на массив разбивать по переносу строки, а вдобавок и по табуляции, т.к. могут быть и столбцы. Первый нюанс в том, что разбиение может произойти некорректно, если внутри ячеек так же есть перенос на строки или табуляции. Плюс внутри UDF в том виде, в котором она сейчас не предусмотрен вывод в несколько ячеек - только в одну. Нужно переделывать под формулу массива, но второй нюанс в том, что UDF некорректно обрабатывает структуры ячеек из буфера, т.к. в момент вызова функции из ячейки листа буфер будет очищен. Если эти нюансы отбросить, то можно соорудить процедуру:
Код
Sub S_ClipboardText()
Dim asr, asc, lr&
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.GetFromClipboard
asr = Split(.GetText, vbNewLine)
For lr = LBound(asr) To UBound(asr)
If asr(lr) <> "" Then
asc = Split(asr(lr), vbTab)
ActiveCell.Offset(lr, 0).Resize(, UBound(asc) + 1).value = asc
End If
Next
End With
End Sub
Но если Вам нужен не только текст ячеек, но и другие свойства(заливка, границы, формулы и т.д.) - то Вам нужен принципиально другой подход. И лучше описать словами что хотите получить. Изменено: Дмитрий(The_Prist) Щербаков - 15 янв 2020 09:29:22
Добрый день. Прошу Вас подсказать функцию которая может из буфера обмена вставить данные в двумерный массив. Ручным способом все просто: выделяю в 1с диапазон, нажимаю Ctrl+C, открываю Excel Ctrl+V и диапазон скажем А1:j10 заполнен. Мне необходимо чтобы я после копирования Ctrl+C нажал на свою кнопку в Excel (или нажал сочетание клавиш, которые присвоил макросу) и данные из буфера памяти вставились в указанный(в макросе) диапазон также как после нажатия в выбранной ячейке Ctrl+V.
Добрый день. Нуждаюсь в помощи Гуру VBA. Не получается разработать формулу для поиска значения по двум параметрам в вба. Во вложении файл, в нем необходимо при запуске макроса в синей ячейке находилось значение по двум параметрам из желтых ячеек. (как по формуле excel в синей ячейке)
Добрый день. Прошу помочь разобраться с формулой. Задача состоит в следующем: В 1ом и 2ом столбце стоят данные, например 1й столбец содержит названия складов: склад1, склад2, склад3. Второй столбец содержит названия полок: полка 1, полка2 полка три. В третьем толбце стоят цены. Необходимо в vba найти цену напротив нужного склада в котором нужная полка. Например склад1 полка2 найденная цена - 100р. Если например склады были бы в первом столбце со строки 3 до строки 5, а полки стояли бы на пример на второй строке с 2го по 4й столбец формула была бы следующей: в Excel =Индекс(B3:D5;ПОИСКПОЗ("склад1";A3:A5;0);ПОИСКПОЗ("полка2";B2:D2;0)) в VBA c = Application.Match("склад1", Range(Cells(3, 1), Cells(5, 1)), 0) d = Application.Match("полка2", Range(Cells(2, 2), Cells(2, 4)), 0) Cells(7, 1).Value = Application.Index(Range(Cells(3, 2), Cells(5, 4)), c, d) Эта формула работает А как оформить формулу в вба если в ecxel следующее: Excel =Индекс(C3:C5;ПОИСКПОЗ("склад1"&"полка2";A3:A5&B3:B5;0)) а как в ВБА?
Формула в Ecxel считается нормально, у меня весь отчет в формулах рассчитан, теперь переписываю на VBA чтобы формул в ячейках не было видно в Excel выглядит так:= СУММЕСЛИМН($FS$200:$FS$5000; $HY$200:$HY$5000;">="&$T$6;$HY$200:$HY$5000;"<="&$A$3) А в VBA не получается как только не пробовал.По формуле как указал New в ячейке появляется значение ИМЯ! Ячейка Т6 заполняется по макросу от ячейки А3 Cells(6, 20) = DateSerial(DatePart("YYYY", Cells(3, 1)), DatePart("M", Cells(3, 1)), 1) Проставил Value получилось вот так Cells(21, 21).Value = Application.SumIfs(Range("FS200:FS5000"), Range("HY200:HY5000"), ">=" & Range("T6").Value, Range("HY200:HY5000"), "<=" & Range("A3").Value) В ячейке ответ 0,00 ((( а должно быть 4 424
День добрый. Прошу помочь поправить формулу в VBA Задача в следующем. В столбце FS содержатся суммы, в столбце HY даты в которые эти суммы были получены. Ячейка Т6 всегда содержит дату первого дня выбранного месяца, а ячейка A3 содержит выбранную дату данного месяца. Пример: Ячейка T6 содержит 01.08.2020. Ячейка А3 содержит 21.08.2020. Необходимо найти диапазон дат в столбце HY и суммировать относительно этого диапозона данные из стобца FS. Другими словами, необходимо суммировать все значения в столбце FS соответствующие датам с 01.08.2020 до 21.08.2020.