Здравствуйте. Давно не беспокоил вас. И уже очень соскучился)
мне тут когда-то давно помогли с написанием такого макроса:
[vba]
Код
Sub Change_date() ActiveWorkbook.Names.Add Name:="myDate", RefersToR1C1:=Format(Date, "dd.mm.yyyy") Dim DateA Do DateA = InputBox("Введите актуальную дату. Вызвать изменение даты можно нажав Ctrl+Q", "Запрос.", Date + 1) Loop While Not IsDate(DateA) ActiveWorkbook.Names("myDate").RefersToR1C1 = DateA End Sub
[/vba]
При открытии файла у меня появляется окошко где уже задана дата завтрашенего дня и я могу либо согласиться либо исправить на нужную мне например сегодняшнюю.
Подскажите пожалуйста как внутрь этого модуля еще вписать много подобных формул например yearApple, yearApple, yearpotatoes и чтоби они вниз под первым каждая выводилась и можно было каждую задавать отдельно. Попробовал сам добавить клон первого модуля но вышла чепуха. В идеале бы конечно чтобы он еще запоминал последнее введенное число а не действовал по принципу завтрашнего дня. как в формуле myDate
Спасибо огромное.
[vba]
Код
Sub Change_date() ActiveWorkbook.Names.Add Name:="myDate", RefersToR1C1:=Format(Date, "dd.mm.yyyy") Dim DateA Do DateA = InputBox("Введите актуальную дату. Вызвать изменение даты можно нажав Ctrl+Q", "Запрос.", Date + 1) Loop While Not IsDate(DateA) ActiveWorkbook.Names("myDate").RefersToR1C1 = DateA
ActiveWorkbook.Names.Add Name:="yearApple", RefersToR1C1:=Format(Date, "yyyy") Dim DateB Do DateB = InputBox("Введите актуальный год для яблока. Вызвать изменение даты можно нажав Ctrl+Q", "Запрос.", Date + 1) Loop While Not IsDate(DateB) ActiveWorkbook.Names("yearApple").RefersToR1C1 = DateB
End Sub
[/vba]
Не выводить все списком спрашивает два раза. ну а это естественно не удобно если переменных будет много. И не может год показывать как именно год почему не смотря на то что я указал Format(Date, "yyyy") всеравно спрашивает и месяц и день.
Здравствуйте. Давно не беспокоил вас. И уже очень соскучился)
мне тут когда-то давно помогли с написанием такого макроса:
[vba]
Код
Sub Change_date() ActiveWorkbook.Names.Add Name:="myDate", RefersToR1C1:=Format(Date, "dd.mm.yyyy") Dim DateA Do DateA = InputBox("Введите актуальную дату. Вызвать изменение даты можно нажав Ctrl+Q", "Запрос.", Date + 1) Loop While Not IsDate(DateA) ActiveWorkbook.Names("myDate").RefersToR1C1 = DateA End Sub
[/vba]
При открытии файла у меня появляется окошко где уже задана дата завтрашенего дня и я могу либо согласиться либо исправить на нужную мне например сегодняшнюю.
Подскажите пожалуйста как внутрь этого модуля еще вписать много подобных формул например yearApple, yearApple, yearpotatoes и чтоби они вниз под первым каждая выводилась и можно было каждую задавать отдельно. Попробовал сам добавить клон первого модуля но вышла чепуха. В идеале бы конечно чтобы он еще запоминал последнее введенное число а не действовал по принципу завтрашнего дня. как в формуле myDate
Спасибо огромное.
[vba]
Код
Sub Change_date() ActiveWorkbook.Names.Add Name:="myDate", RefersToR1C1:=Format(Date, "dd.mm.yyyy") Dim DateA Do DateA = InputBox("Введите актуальную дату. Вызвать изменение даты можно нажав Ctrl+Q", "Запрос.", Date + 1) Loop While Not IsDate(DateA) ActiveWorkbook.Names("myDate").RefersToR1C1 = DateA
ActiveWorkbook.Names.Add Name:="yearApple", RefersToR1C1:=Format(Date, "yyyy") Dim DateB Do DateB = InputBox("Введите актуальный год для яблока. Вызвать изменение даты можно нажав Ctrl+Q", "Запрос.", Date + 1) Loop While Not IsDate(DateB) ActiveWorkbook.Names("yearApple").RefersToR1C1 = DateB
End Sub
[/vba]
Не выводить все списком спрашивает два раза. ну а это естественно не удобно если переменных будет много. И не может год показывать как именно год почему не смотря на то что я указал Format(Date, "yyyy") всеравно спрашивает и месяц и день.koyaanisqatsi
_Boroda_, Я правда старался сформулировать. У меня с этим всегда проблемы. хотя наверно это популярная проблема новичков. И согласен что у меня вышло плохо. Пробую еще раз. пожалуйста подскажите в этот раз получилось или лучше сформулировать иначе ? (хотя последний вопрос конечно глупо звучит) На самом деле это очень ценное правило. Сам не раз убеждался. Не поверите может. но я это даже на собственной шкуре испытывал. Я вводил запрос в яндекс и находил свои темы на этом форуме и понимал потом как сделать надо.
_Boroda_, Я правда старался сформулировать. У меня с этим всегда проблемы. хотя наверно это популярная проблема новичков. И согласен что у меня вышло плохо. Пробую еще раз. пожалуйста подскажите в этот раз получилось или лучше сформулировать иначе ? (хотя последний вопрос конечно глупо звучит) На самом деле это очень ценное правило. Сам не раз убеждался. Не поверите может. но я это даже на собственной шкуре испытывал. Я вводил запрос в яндекс и находил свои темы на этом форуме и понимал потом как сделать надо.koyaanisqatsi
Сообщение отредактировал koyaanisqatsi - Вторник, 14.11.2017, 13:48
Sub Change_date() ActiveWorkbook.Names.Add Name:="myDate", RefersToR1C1:=Format(Date, "dd.mm.yyyy") Dim DateA txt_ = "Введите актуальную дату." txt_ = txt_ & vbLf & "Вызвать изменение даты можно нажав Ctrl+Q" Do DateA = InputBox(txt_, "Запрос.", Date + 1) Loop While Not IsDate(DateA) ActiveWorkbook.Names("myDate").RefersToR1C1 = DateA
ActiveWorkbook.Names.Add Name:="yearApple", RefersToR1C1:=Format(Date, "yyyy") Dim DateB txt_ = "Введите актуальный год для яблока." txt_ = txt_ & vbLf & "Вызвать изменение даты можно нажав Ctrl+Q" Do DateB = InputBox(txt_, "Запрос.", Format(Date + 1, "yyyy")) Loop While Not IsDate("1/1/" & DateB) ActiveWorkbook.Names("yearApple").RefersToR1C1 = DateB End Sub
[/vba]
Ага, новичок с 645-ю сообщениями за 4.5 года.
Так получше. Тоже не особо, но хоть как-то
Вы про вот так имели в виду? [vba]
Код
Sub Change_date() ActiveWorkbook.Names.Add Name:="myDate", RefersToR1C1:=Format(Date, "dd.mm.yyyy") Dim DateA txt_ = "Введите актуальную дату." txt_ = txt_ & vbLf & "Вызвать изменение даты можно нажав Ctrl+Q" Do DateA = InputBox(txt_, "Запрос.", Date + 1) Loop While Not IsDate(DateA) ActiveWorkbook.Names("myDate").RefersToR1C1 = DateA
ActiveWorkbook.Names.Add Name:="yearApple", RefersToR1C1:=Format(Date, "yyyy") Dim DateB txt_ = "Введите актуальный год для яблока." txt_ = txt_ & vbLf & "Вызвать изменение даты можно нажав Ctrl+Q" Do DateB = InputBox(txt_, "Запрос.", Format(Date + 1, "yyyy")) Loop While Not IsDate("1/1/" & DateB) ActiveWorkbook.Names("yearApple").RefersToR1C1 = DateB End Sub
_Boroda_, Да действия правильно теперь выполняет но спрашиват дважды. Хотелось чтобы в одном диалоговом окне было много окошек куда можно вводить данные 1 текущая дата 2 год на яблоки 3 год на капусту 4 год на свеклу 5 год на апельсины
и если можно чтобы запоминал последние введенные данные. про запоминал могу чтото на подобии как было с принтером сделать он сохранял в ячейку на отдельном листе хотя((( я сам конечно не смогу разобраться как это сделать. но в макросе для выбора принтера там он запоминает последний выбранный.
[vba]
Код
Sub Печать_на_Zebra() Dim aPr$, s$, AllPrinters As Object, printer As Object, n%, m, primary_printer$, print_name$ primary_printer = Sheets("printer").Cells(1, "a").Value ' Вместо "doPDF v7" - впишите нужный принтер по умолчанию ' primary_printer = "ZDesigner GC420d (перенаправлено 16)" ' Вместо "doPDF v7" - впишите нужный принтер по умолчанию aPr = Application.ActivePrinter Set AllPrinters = GetObject("winmgmts://./root/CIMV2").ExecQuery("SELECT * FROM Win32_Printer", , 48) 'Получаем список принтеров For Each printer In AllPrinters n = n + 1 s = s & vbCr & n & ": " & printer.Name If printer.Name = primary_printer Then print_name = primary_printer: Exit For ' если primary_printer найден в списке доступных Next s = Right(s, Len(s) - 1) 'Если такого принтера не найдено: If print_name = "" Then If InStr(1, s, vbCr, vbTextCompare) = 0 Then MsgBox "Error no printers": Exit Sub m = Split(s, vbCr) n = Val(InputBox("input Number of printer:" & vbCr & s, "Not found:" & primary_printer, 1)) If n > UBound(m) Or n = 0 Then MsgBox "Error no printers with this number": Exit Sub print_name = Split(m(n - 1), " ", 2)(1) Sheets("printer").Cells(1, "a").Value = print_name End If '=============================== ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:=print_name 'Application.ActivePrinter = aPr ' Возврат активного принтера End Sub
[/vba]
PS: Ну я имел ввиду в экселе новичок. С формулами немного уже понимаю а вот с VBA совсем ничего не знаю. конечно новичок.
_Boroda_, Да действия правильно теперь выполняет но спрашиват дважды. Хотелось чтобы в одном диалоговом окне было много окошек куда можно вводить данные 1 текущая дата 2 год на яблоки 3 год на капусту 4 год на свеклу 5 год на апельсины
и если можно чтобы запоминал последние введенные данные. про запоминал могу чтото на подобии как было с принтером сделать он сохранял в ячейку на отдельном листе хотя((( я сам конечно не смогу разобраться как это сделать. но в макросе для выбора принтера там он запоминает последний выбранный.
[vba]
Код
Sub Печать_на_Zebra() Dim aPr$, s$, AllPrinters As Object, printer As Object, n%, m, primary_printer$, print_name$ primary_printer = Sheets("printer").Cells(1, "a").Value ' Вместо "doPDF v7" - впишите нужный принтер по умолчанию ' primary_printer = "ZDesigner GC420d (перенаправлено 16)" ' Вместо "doPDF v7" - впишите нужный принтер по умолчанию aPr = Application.ActivePrinter Set AllPrinters = GetObject("winmgmts://./root/CIMV2").ExecQuery("SELECT * FROM Win32_Printer", , 48) 'Получаем список принтеров For Each printer In AllPrinters n = n + 1 s = s & vbCr & n & ": " & printer.Name If printer.Name = primary_printer Then print_name = primary_printer: Exit For ' если primary_printer найден в списке доступных Next s = Right(s, Len(s) - 1) 'Если такого принтера не найдено: If print_name = "" Then If InStr(1, s, vbCr, vbTextCompare) = 0 Then MsgBox "Error no printers": Exit Sub m = Split(s, vbCr) n = Val(InputBox("input Number of printer:" & vbCr & s, "Not found:" & primary_printer, 1)) If n > UBound(m) Or n = 0 Then MsgBox "Error no printers with this number": Exit Sub print_name = Split(m(n - 1), " ", 2)(1) Sheets("printer").Cells(1, "a").Value = print_name End If '=============================== ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:=print_name 'Application.ActivePrinter = aPr ' Возврат активного принтера End Sub
[/vba]
PS: Ну я имел ввиду в экселе новичок. С формулами немного уже понимаю а вот с VBA совсем ничего не знаю. конечно новичок.koyaanisqatsi
Сообщение отредактировал koyaanisqatsi - Вторник, 14.11.2017, 15:05