Помогите мне решить вопрос с макросом. Есть макрос - который сохраняет два диапазона - в txt как один диапазон - в виде табулированного текста.
Начало первого диапазона - записано в ячейке OL5 Конец первого диапазона - записано в ячейке OM5 Начало первого диапазона - записано в ячейке OL5 Конец первого диапазона - записано в ячейке OM5
Вопрос в том - как не заносить в текст ту часть диапазона - которая ограничивается строками, записанными вOL7 и OM7 - и как после этого скопировать содержимое из txt на лист5 - чтобы проверить, что табулированный текст - скопировался нормально ?
Начало выреза записано в ячейке OL7 Конец выреза записан в ячейке OM7 (в этих ячейках записаны строки - которые вообще не надо копировать в txt) Эта часть которую не нужно копировать - находится как бы внутри диапазона.
Здравствуйте.
Помогите мне решить вопрос с макросом. Есть макрос - который сохраняет два диапазона - в txt как один диапазон - в виде табулированного текста.
Начало первого диапазона - записано в ячейке OL5 Конец первого диапазона - записано в ячейке OM5 Начало первого диапазона - записано в ячейке OL5 Конец первого диапазона - записано в ячейке OM5
Вопрос в том - как не заносить в текст ту часть диапазона - которая ограничивается строками, записанными вOL7 и OM7 - и как после этого скопировать содержимое из txt на лист5 - чтобы проверить, что табулированный текст - скопировался нормально ?
Начало выреза записано в ячейке OL7 Конец выреза записан в ячейке OM7 (в этих ячейках записаны строки - которые вообще не надо копировать в txt) Эта часть которую не нужно копировать - находится как бы внутри диапазона.Lizard
А чем не подходит решение разбить диапазон на два? Координаты же у Вас уже есть! 1. от начала исходного диапазона - до строки, предшествующей вырезу. 2. от строки, последующей вырезу до конца исходного диапазона. Ну и не забыть проверить границы вхождений, конечно. Мало ли какие значения туда могут попасть по ошибке
А чем не подходит решение разбить диапазон на два? Координаты же у Вас уже есть! 1. от начала исходного диапазона - до строки, предшествующей вырезу. 2. от строки, последующей вырезу до конца исходного диапазона. Ну и не забыть проверить границы вхождений, конечно. Мало ли какие значения туда могут попасть по ошибке excelius
Сообщение отредактировал excelius - Понедельник, 08.04.2019, 18:41
excelius, так диапазон вставляемый сейчас в txt - и так уже состоит из двух частей. Но если сложно сделать такую вырезку - то хотя бы скажите, как заменить эти "удаляемые" строки диапазона - нулями в табулированном txt (вместо удаления) ?
Просто в эти строки (с 10 по 19) - входит много информации, которую удалять нельзя и переносить в txt тоже нельзя. Поэтому их надо как-то или вырезать или просто обнулить.
excelius, так диапазон вставляемый сейчас в txt - и так уже состоит из двух частей. Но если сложно сделать такую вырезку - то хотя бы скажите, как заменить эти "удаляемые" строки диапазона - нулями в табулированном txt (вместо удаления) ?
Просто в эти строки (с 10 по 19) - входит много информации, которую удалять нельзя и переносить в txt тоже нельзя. Поэтому их надо как-то или вырезать или просто обнулить.Lizard
диапазон вставляемый сейчас в txt - и так уже состоит из двух частей
Ну вот. А я предлагаю сделать из трех (вернее даже из четырех) просто. Ведь все координаты уже есть на листе!
Вместо [vba]
Код
With Sheets("Лист3") Set iRng1 = .Range(.Range("OL5").Value & ":" & .Range("OM5").Value) Set iRng2 = .Range(.Range("ON5").Value & ":" & .Range("OO5").Value) End With
[/vba]
Сделать [vba]
Код
With Sheets("Лист3") Set iRng1BottomRight = .Cells(.Range("OL7").value - 1, .Range(.Range("OM5").value).Column) Set iRng2TopLeft = .Cells(.Range("OM7").value + 1, .Range(.Range("OL5").value).Column) Set iRng3BottomRight = .Cells(.Range("OL7").value - 1, .Range(.Range("OO5").value).Column) Set iRng4TopLeft = .Cells(.Range("OM7").value - 1, .Range(.Range("ON5").value).Column)
Set iRng1 = .Range(.Range("OL5").Value & ":" & iRng1BottomRight) Set iRng2 = iRng2TopLeft & ":" & .Range("OM5").Value) Set iRng3 = .Range(.Range("ON5").Value & ":" & iRng3BottomRight) Set iRng4 = iRng4TopLeft & ":" & .Range("OO5").Value) End With
[/vba]
Просто придумайте, как задать эти ячейки-диапазоны. Или еще по одной ячейке на листе выделить под формулы, либо в макросе рассчитать значения.
диапазон вставляемый сейчас в txt - и так уже состоит из двух частей
Ну вот. А я предлагаю сделать из трех (вернее даже из четырех) просто. Ведь все координаты уже есть на листе!
Вместо [vba]
Код
With Sheets("Лист3") Set iRng1 = .Range(.Range("OL5").Value & ":" & .Range("OM5").Value) Set iRng2 = .Range(.Range("ON5").Value & ":" & .Range("OO5").Value) End With
[/vba]
Сделать [vba]
Код
With Sheets("Лист3") Set iRng1BottomRight = .Cells(.Range("OL7").value - 1, .Range(.Range("OM5").value).Column) Set iRng2TopLeft = .Cells(.Range("OM7").value + 1, .Range(.Range("OL5").value).Column) Set iRng3BottomRight = .Cells(.Range("OL7").value - 1, .Range(.Range("OO5").value).Column) Set iRng4TopLeft = .Cells(.Range("OM7").value - 1, .Range(.Range("ON5").value).Column)
Set iRng1 = .Range(.Range("OL5").Value & ":" & iRng1BottomRight) Set iRng2 = iRng2TopLeft & ":" & .Range("OM5").Value) Set iRng3 = .Range(.Range("ON5").Value & ":" & iRng3BottomRight) Set iRng4 = iRng4TopLeft & ":" & .Range("OO5").Value) End With
[/vba]
Просто придумайте, как задать эти ячейки-диапазоны. Или еще по одной ячейке на листе выделить под формулы, либо в макросе рассчитать значения.excelius
Сообщение отредактировал excelius - Вторник, 09.04.2019, 12:13
excelius, добавил этот код в макрос. Но он почему-то не работает.
[vba]
Код
Sub Macro2()
Dim iRng1 As Range Dim iRng2 As Range With Sheets("Лист3") Set iRng1BottomRight = .Cells(.Range("OL7").Value - 1, .Range(.Range("OM5").Value).Column) Set iRng2TopLeft = .Cells(.Range("OM7").Value + 1, .Range(.Range("OL5").Value).Column) Set iRng3BottomRight = .Cells(.Range("OL7").Value - 1, .Range(.Range("OO5").Value).Column) Set iRng4TopLeft = .Cells(.Range("OM7").Value - 1, .Range(.Range("ON5").Value).Column)
Set iRng1 = .Range(.Range("OL5").Value & ":" & iRng1BottomRight) Set iRng2 = iRng2TopLeft & ":" & .Range("OM5").Value Set iRng3 = .Range(.Range("ON5").Value & ":" & iRng3BottomRight) Set iRng4 = iRng4TopLeft & ":" & .Range("OO5").Value End With
iRng1.Copy Workbooks.Add With ActiveSheet .Paste iRng2.Copy .Cells(1, iRng1.Columns.Count + 1).Select ' взамен .Range("A" & .Cells(2, 1).End(xlDown).Row + 2).Select .Paste End With ActiveWorkbook.SaveAs Filename:="F:\1\1.txt", FileFormat:= _ xlText, CreateBackup:=False, Local:=True ActiveWorkbook.Close
Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub
[/vba]
Пишет ошибку Run-time error 1004
Как это исправить ?
excelius, добавил этот код в макрос. Но он почему-то не работает.
[vba]
Код
Sub Macro2()
Dim iRng1 As Range Dim iRng2 As Range With Sheets("Лист3") Set iRng1BottomRight = .Cells(.Range("OL7").Value - 1, .Range(.Range("OM5").Value).Column) Set iRng2TopLeft = .Cells(.Range("OM7").Value + 1, .Range(.Range("OL5").Value).Column) Set iRng3BottomRight = .Cells(.Range("OL7").Value - 1, .Range(.Range("OO5").Value).Column) Set iRng4TopLeft = .Cells(.Range("OM7").Value - 1, .Range(.Range("ON5").Value).Column)
Set iRng1 = .Range(.Range("OL5").Value & ":" & iRng1BottomRight) Set iRng2 = iRng2TopLeft & ":" & .Range("OM5").Value Set iRng3 = .Range(.Range("ON5").Value & ":" & iRng3BottomRight) Set iRng4 = iRng4TopLeft & ":" & .Range("OO5").Value End With