Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 85 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2018, 11:02   #1
Oleg34
Пользователь
 
Регистрация: 09.09.2011
Сообщений: 48
По умолчанию Задал имя листу из переменной, как к нему теперь обратиться?

я сохраняю ежемесячный итог в Книге "БД", для этого из другой Книги выбираю необходимый диапазон данных, в переменную записываю текущий месяц, открываю Книгу "БД", добавляю новый Лист даю ему Имя из переменной. А вот как теперь к нему обратиться? То есть выбрать этот Лист и стелать его активным? Это место я пометил звездочками в коде '***
Код:
Sub CopyPaste()

Dim bookconst As Workbook  'куда копируем
Dim abook As Workbook      'откуда копируем
Dim Filename As String, number As Integer
Dim nMonth As String
Dim nDate As Date

On Error Resume Next
nDate = Date

number = Month(nDate)

' в переменнуя nMonth записываем текущий месяц
Select Case number
Case Is = 1
    nMonth = "январь"
Case Is = 2
    nMonth = "февраль"
Case Is = 3
    nMonth = "март"
Case Is = 4
    nMonth = "апрель"
Case Is = 5
    nMonth = "май"
Case Is = 6
    nMonth = "июнь"
Case Is = 7
    nMonth = "июль"
Case Is = 8
    nMonth = "август"
Case Is = 9
    nMonth = "сентябрь"
Case Is = 10
    nMonth = "октябрь"
Case Is = 11
    nMonth = "ноябрь"
Case Is = 12
    nMonth = "декабрь"
    End Select

'присваиваем переменную активной книге
Set abook = ActiveWorkbook
'присваиваем переменную книге, куда копируем
Set bookconst = Workbooks.Open("C:\Users\01405\Documents\Расчет выработки\31.07.18\БД.xlsx")
'переходим в активную книгу откуда копируем данные
abook.Worksheets("ИТОГИ").Activate
'выбираем диапазон
Range("A2:H26").Copy

'добавляем новый лист и называем из переменной nMonth
bookconst.Sheets.Add.Name = nMonth
'активируем нужный лист куда вставляем диапазон данных


'проверяемсуществование данного листа в книге
'If WorksheetIsExist("nMonth") Then
'MsgBox "Лист с таким именем уже существует", vbExclamation, "Ошибка"
'Exit Sub
'End If

'******************************************************
bookconst.Worksheets("& nMonth").Activate 'активируем лист куда 
'необходимо вставить данные
'******************************************************
Range("A2:H26").Select 'встаем на ячейку А2
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'вставляем только форматы ячеек
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'сохранить текущую книгу
bookconst.Save
'Закрыть книгу
bookconst.Close
abook.Activate
End Sub

Private Function WorksheetIsExist() 'функция для проверки имени
Dim iList As Worksheet
For Each iList In Worksheets
    If StrComp(iList.Name, IName$, vbTextCompare) = 0 Then
        WorksheetIsExist = True
        Exit Function
    End If
  Next
  WorksheetIsExist = False
End Function
Oleg34 вне форума Ответить с цитированием
Старый 05.08.2018, 11:50   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,163
По умолчанию

Добрый день.
Ну обращаетесь правильно, другое дело что вряд ли в той книге есть лист с названием "& nMonth"
Там очевидно есть лист nMonth, т.е. bookconst.Worksheets(nMonth), если имя удалось задать.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 05.08.2018 в 11:52.
Hugo121 вне форума Ответить с цитированием
Старый 05.08.2018, 13:11   #3
Oleg34
Пользователь
 
Регистрация: 09.09.2011
Сообщений: 48
По умолчанию

Спасибо, я уже совсем кажется отупел)))
Oleg34 вне форума Ответить с цитированием