Добрый день! Подскажите, пожалуйста, имею таблицу, ежемесячно делаю по ней отчет. Посоветуйте как через VBA правильно будет оставить только отчетный месяц. Хочу через inputbox указывать месяц и чтобы все строки с другими месяцами удалялись. И причем месяц оставался только того года, который сейчас на дворе, т.к. таблица за много лет ведется. Пока только догадался прописывать каждый день отдельно типа 01.01.2018 = январь, 01.02.2018 = февраль и т.д., но это бред какой-то, придется 365 строк таких для каждого года делать. В фильтре в таблице дни как рак таки группируются по месяцам, это же можно как-то использовать) Помощь нужна только с тем, чтобы Excel понимал, что если я ввожу Ноябрь, то имеются ввиду строки 01.11.2018, 02.11.2018 и т.д., как удалить потом все, это понятно))
whateverlover написал: через inputbox указывать месяц
Это плохая идея, которая превратит всё в тыкву при опечатке, например, "янвфрь". Должен быть выбор из комбобокса. Далее всё просто - берёте переменную например, Mnth и присваиваете ей значение:
Код
Mnth=ComboBox1.ListIndex+1
и сравниваете полученное с Month(CDate(Дата)), где Дата - это она самая.
Можно запросить месяц и через InputBox с низкой вероятностью случайной ошибки:
Код
' Возвращает номер месяца или 0 при отказе пользователя от ввода
Function GetMonth() As Long
Dim v As String, t As String, s As String, i As Long
t = "Введите номер месяца (от 1 до 12):"
For i = 1 To 12
t = t & vbLf & Format(DateSerial(0, i, 1), "M MMMM")
s = s & " " & i
Next i
While True
v = InputBox(t)
If v = "" Then Exit Function
If InStr(1, s & " ", " " & v & " ") > 0 Then
GetMonth = CLng(v)
Exit Function
End If
Wend
End Function
Sub test()
MsgBox GetMonth()
End Sub