Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Слияние ячеек на не активном листе
 
Спасибо, вем за ответы. Вот, что получилось. Теперь все работет!  
 
   For Each ws In ActiveWorkbook.Worksheets  
       Select Case ws.Name  
           Case "5 - Top Network Facilities", _  
               "5b - Top Arb Facilities"  
               For i = 0 To 9  
                   Set rgX = ws.Cells(2 + i * 5, 1).MergeArea  
                   With rgX  
                       If .MergeCells Then  
                           .Cells(1, 1).UnMerge  
                       End If  
                   End With  
               Next i  
       End Select  
   Next ws
Слияние ячеек на не активном листе
 
Эээ, ну я, собственно говоря, именно эту конструкцию и использовал. Если р лист не активен, то на строчке p.Cells.MergeCells = False вылезaет ошибkа.
Слияние ячеек на не активном листе
 
Спасибо, за отет. На 2x обозначенных листах объединенные ячейки есть. On Error Resume Next проблему не решает. Oшибку, конечно, не выдает, но и объеднение не отменяет.
Слияние ячеек на не активном листе
 
Здравствуйте, я пытаюсь отменить слияние ячеек на не aктивном лисе. Ниже приведен мой код, правда, он не работает. После For i = 0 To 9 выскакивает ошибка “Run-time error '1004': Application-defined or object-defined error”. На сколько я понял, проблема в том, что объект Worksheets/Sheets не поддерживает UnMerge свойство, но я могу и ошибаться. Если я добавляю ws.Activate (как в test2) все рабтает нормаьно. Вопрос: "Можно ли осуществить данную процедуру БЕЗ активации каждого листа?" Заранее благодарен за ответ.  
 
Sub test1()  
   Dim i As Integer, ws As Worksheet  
     
   For Each ws In ActiveWorkbook.Worksheets  
       Select Case ws.Name  
           Case "5 - Top Network Facilities", _  
               "5b - Top Arb Facilities"  
               For i = 0 To 9  
                   ws.Range(Cells(2 + i * 5, 1), _  
                       Cells(6 + i * 5, 1)).UnMerge  
               Next i  
           Case Else  
       End Select  
   Next ws  
End Sub  
 
Sub test2()  
…  
               For i = 0 To 9  
                   ws.Activate  
                   Range(Cells(2 + i * 5, 1), _  
                       Cells(6 + i * 5, 1)).UnMerge  
               Next i  
…  
End Sub
VBA копирование ячеек между листами без переключения листов
 
Юрий, вы гений, все заработало, спасибо вам огромное. Последняя просьба, не могли бы вы пояснить, пожалуйста, в чем разница между  
rgX.Copy .Range(Cells(rgX2.Row, rgX2.Column + 9), Cells(intNumRow2, rgX2.Column + 9))  
и  
rgX.Copy Range(.Cells(rgX2.Row, rgX2.Column + 9), .Cells(intNumRow2, rgX2.Column + 9))  
То что точки в разных местах стоят, я заметел, но почему в одном случае все работает, а в другом нет?  
 
Или может ткнете носом, где можно почить про это. Еще раз большое вам спасибо
VBA копирование ячеек между листами без переключения листов
 
вот файл с прикрепленным макросом
VBA копирование ячеек между листами без переключения листов
 
Юрий, большущее вам спасибо за столь оперативный ответ. Ваш код работает на приведенном мною примере, однако, когда я пытаюсь применить его в своем файле, все равно возникает ошибка.  
 
В связи с этим я решил прикрепить файл с которым я работаю. По сути дела мне надо преобразовать данные, содержащиеся на Листе 1 согласно примеру на Листе 2. Проблема у меня возникает, когда я пытаюсь перенести информацию из 3ий строки (Period X) на Лист 2 в Столбец J. Я попробовал конструкцию With – End With, предложенную Юрием, но она не сработала.    
 
Sub Reformatin_Fcst_with_Jugmt()  
   Dim i As Integer, rgX As Range, rgX2 As Range, DetFields As Range  
   Dim intNumRow As Integer, intNumRow2 As Integer, intNumCol As Integer  
     
   Worksheets("Sheet2").Cells.Clear  
   Worksheets("Sheet2").Range("B1").Value = "Project + Period"  
   Worksheets("Sheet2").Range("C1").Value = "WBS Org Level 2"  
   Worksheets("Sheet2").Range("D1").Value = "Project"  
   Worksheets("Sheet2").Range("E1").Value = "Project2"  
   Worksheets("Sheet2").Range("F1").Value = "PRJ Customer2"  
   Worksheets("Sheet2").Range("G1").Value = "PRJ Resp Person2"  
   Worksheets("Sheet2").Range("H1").Value = "PRJ Admin2"  
   Worksheets("Sheet2").Range("I1").Value = "Fiscal Quarter"  
   Worksheets("Sheet2").Range("J1").Value = "Fiscal year/period"  
   Worksheets("Sheet2").Range("K1").Value = "Plan Revenue"  
   Worksheets("Sheet2").Range("L1").Value = "Plan Total Incurred Cost"  
   Worksheets("Sheet2").Range("M1").Value = "EGM%"  
     
   Set rgX = Range("a1").End(xlDown).Offset(-1)  
   Set rgX2 = Worksheets("Sheet2").Range("a2")  
   intNumRow = Range("a1").End(xlDown).CurrentRegion.Rows.Count  
   Set DetFields = Range(Cells(Range("a1").End(xlDown).Row + 1, 1), Cells(intNumRow, 5))  
   For i = 1 To Application.WorksheetFunction.CountIf(Rows("3:3"), "Period*")  
       Set rgX = Rows("3:3").Find(What:="Period", After:=rgX)  
       DetFields.Copy Worksheets("Sheet2").Cells(rgX2.Row, rgX2.Column + 2)  
       Range(Cells(rgX.Row + 2, rgX.Column), Cells(intNumRow, rgX.Column + 1)).Copy _  
       Worksheets("Sheet2").Cells(rgX2.Row, rgX2.Column + 10)  
       intNumRow2 = rgX2.Offset(0, 2).End(xlDown).CurrentRegion.Rows.Count  
         
       With Sheets("Sheet2")  
           rgX.Copy .Range(Cells(rgX2.Row, rgX2.Column + 9), Cells(intNumRow2, rgX2.Column + 9))  
       End With  
     
       Set rgX2 = Worksheets("Sheet2").Cells(intNumRow2 + 1, 1)  
   Next i  
End Sub  
 
Может у меня руки кривые, помогите, пожалуйста. Мне принципиально скопировать без переключения листов, поскольку у меня достаточно много листов, и поэтому с переключением, даже с выключенным ScrenUpdate это займет много времени. Спасибо.
VBA копирование ячеек между листами без переключения листов
 
{quote}{login=Юрий М}{date=28.07.2009 11:57}{thema=}{post}Можно. Конструкцию With - End With применить.{/post}{/quote}  
 
Юрий,  
 
Большое спасибо за быстрый ответ. Не могли бы вы, пожалуйста, по-подробнее объяснить ваше решение, не совсем понимаю.
VBA копирование ячеек между листами без переключения листов
 
Коллеги, здравствуйте.  
 
Нужна помощь с копированием ячеек между разными листами при помощи VBA. Скажем я нахожусь на Sheet1 и хочу скопировать ячейку А1 на этом листе в Sheet2 ячейки В1:В10, причем не переключаясь между листами. Код Worksheets(“Sheet1”).Range(“A1”).Copy Worksheets(“Sheet2”).Range(“B1:10”) не работает, выдает Application-defined or object-defined error. Если же дописать строчку переключения между листами, все работает, но хотелось бы знать можно ли это сделать без переключения.  
 
Заранее благодарен за помощь.
Страницы: 1
Наверх