2013-11-06 4 views
0

Я пытаюсь форматировать большой текстовый файл в Excel. Он похож на это, чтобы начать с:Выберите диапазон ячеек между строками с указанными значениями

Headings 
---------- 
Data 
Data 
Data 
ENDROW 
Other Information 

Я хочу, чтобы выбрать ячейки между ---------- и EndRow, а затем использовать текст, столбцы функционировать на основе выбранных ячеек. Я записал макрос для текста в столбцы бит, и в конце концов я хочу использовать его для циклического преобразования по всему документу.

Sub findRange() 
Dim nRow As Long 
Dim nStart As Long, nEnd As Long 

' Figure out where the range should start. 
For nRow = 1 To 65536 
If Range("A" & nRow).Value = "----------" Then 
nStart = nRow 
Exit For 
End If 
Next nRow 

' Figure out where the range should end. 
For nRow = nStart To 65536 
If Range("A" & nRow).Value = "ENDROW" Then 
nEnd = nRow 
Exit For 
End If 
Next nRow 
nEnd = nEnd - 1 

Range("A" & nStart & ":D" & nEnd).Select 
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _ 
     FieldInfo:=Array(Array(0, 1), Array(16, 1), Array(21, 1), Array(27, 1), Array(56, 1), _ 
     Array(59, 1), Array(60, 1), Array(73, 1)), TrailingMinusNumbers:=True 
    Selection.ColumnWidth = 16.33 
    Range("B:B,F:F,D:D,H:H").Select 
    Range("H1").Activate 
    Selection.Delete Shift:=xlToLeft 

End Sub 

Это ошибка, и любой ввод оценивается. Я новичок, пытающийся научиться этому.

+0

Каковы значения nStart и nEnd непосредственно перед линейным диапазоном («A» & nStart & »: D» и nEnd). Выберите –

+0

Когда он выйдет из строя, он должен дать вам конкретное сообщение об ошибке, а также параметр «отлаживать». Если вы можете нажать кнопку отладки и указать, какая строка кода вызывает эту проблему, отредактируйте свой вопрос, чтобы добавить конкретное сообщение об ошибке и строку кода, которая его вызывает, что очень сильно помогло бы. – Blackhawk

+0

более быстрый запуск (такая же идея может быть использована для эндроуса): 'nStart = range (" A1: A65535 "). Find (" ---------- ", LookAt: = xlWhole) .Row' - гораздо быстрее, чем проверка каждой ячейки. – SeanC

ответ

0

Кажется, что Microsoft может конвертировать только одну колонку за раз. Попробуйте заменить Range ("A" & nStart & ": D" & Nend) .Select С Range ("A" & nStart & ": А" & Nend) .Select И петля через другие три колонки ,

+0

Это было частью проблемы, я очистил все это, а затем понял, что тире давали мне неприятности. –

Смежные вопросы