Новости:

Теперь на форум можно залогиниться / зарегистрироваться с помощью ВКонтакте. Уже существующие пользователи могут связать свою учетную запись с аккаунтом ВКонтакте одним кликом в профиле пользователя http://forum.msexcel.ru/index.php?action=profile;area=account

Главное меню

Автоматическое создание листа и присвоение ему имени в формате текущая дата

Автор vladturbo, 21.01.2011, 18:38

« назад - далее »

vladturbo

Доброго времени суток!
Написал макрос, который создает в рабочей книге лист и переименовывает его в формат текущая дата (месяц) + постоянное значение (допустим гос. № автомобиля) используя функцию =СЦЕПИТЬ. Макрос работает, однако для отображения в ячейке текущей даты в формате (месяц) пришлось использовать функцию =ЕСЛИ(И, т.к. при присвоении имени листу дата выводится только в числовом формате (допустим 40564) и имя листа получается 40564 А 123 АА 199, а необходимо Январь А 123 АА 199.
Повторяю, все работает, однако функция ЕСЛИ работает только с 7 аргументами (т.е. до Июля, а необходимо все 12 месяцев). Вот код макроса:
Sub Макрос6()
ActiveWorkbook.Sheets.Add Before:=Worksheets(Worksheets.Count)
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "=TODAY()"
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "=MONTH(R[-1]C)"
    Range("A3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(AND(R[-1]C=1),""Январь"",IF(AND(R[-1]C=2),""Февраль"",IF(AND(R[-1]C=3),""Март"",IF(AND(R[-1]C=4),""Апрель"",IF(AND(R[-1]C=5),""Май"",IF(AND(R[-1]C=6),""Июнь"",IF(AND(R[-1]C=7),""Июль"",)))))))"
        Selection.Copy
    Range("A4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("A5").Select
    ActiveCell.FormulaR1C1 = " А 123 АА 199"
    Range("A6").Select
    ActiveCell.FormulaR1C1 = "=CONCATENATE(R[-2]C,R[-1]C)"
Dim myWorksheet As Worksheet
For Each myWorksheet In Worksheets
If myWorksheet.Range("A1").Value <> "" Then
myWorksheet.Name = myWorksheet.Range("A6").Value
End If
Next
    Range("A1:A6").Select
    Selection.ClearContents
    Range("A1").Select
End Sub

Прошу помогите!

nilem

Попробуйте так:
Sub Макрос6()
ActiveWorkbook.Sheets.Add Before:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Format(Month(Date), "mmmm") & " А 123 АА 199"
End Sub

vladturbo

Спасибо, есть такой код:           
Dim sname As String
sname = CStr(Format(Now, "dd.mm.yy") & " М096ВО")
ActiveWorkbook.Sheets.Add Before:=Worksheets(Worksheets.Count)
ActiveSheet.Name = sname