Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Кнопка


Автор: zhenya2010 22.4.2010, 12:24
ПРивет, гениям VBA! 

для кнопки пишу такое 
Код



Private Sub CommandButton1_Click() 

Sheets.Add(, Sheets(Sheets.Count)).Name = [СВАТ!B3] 
[A1] = [СВАТ!B5] 
[B1] = [СВАТ!C5] 

End Sub


программа делает новый лист с названием ячейки B3. А вот почему то ячеки которые я хочу что бы были заполнены на новом листе(A1,B1) заполняются на старом листе. Как сделать так чтобы ячейки с листа СВАТ переносились на новый лист( с названием ячейки В3)? 

и еще(просто думаю что не надо создавать новую тему по даному вопросу) а есть какаето команда которая будет перед началом "переноса ячеек" проверять есть ли лист с названием совпадающем с названием ячейки В3 и удалять его. Потому что при повторном выполнении программы, выдается новость о существовании даного листа и не работает( 

заранее спасибо
_________________

Автор: RockClimber 22.4.2010, 12:51
Интересненько, я такой записи ([A1] = [СВАТ!B5]) не встречал нигде, но она работает  smile 
Короче, я рекомендую общепринятую запись обращения к ячейкам (через Range или Cells).
Чтобы в макросе на листе обратиться к ячейкам другого листа, надо указать лист явно:
Код
Sheets("Другой лист").Range("A1") = "траляля"

Проверить наличие листа можно, обратившись к нему и словив (или не словив) исключение:
Код

On Error Resume Next
Sheets("Неизвестный лист").Select
If Err.Number <> 0 Then
   MsgBox "Нет такого листа"
End If

Автор: zhenya2010 22.4.2010, 17:43
Логично. Спасибо за ответ.

Автор: Akina 22.4.2010, 17:49
Можно сразу получить ссылку на вставленный лист:
Код

Dim sht As WorkSheet
Set sht = Sheets.Add(...)

и использовать
Код

sht.Range("A1") = "траляля"
msgbox sht.Name

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)