Страницы: 1
RSS
Нумерация строк сквозь объединенные ячейки
 
Добры вечер!

Пытаюсь сделать нумерацию строк не учитывая объединенные ячейки, подскажите что я делаю не так?
И объясните пожалуйста как правильно ставить перенос строки и разделитель ":", т. к. ставлю больше по наитию, чем по знанию....(((
Код
Sub dfs()
Dim i%, n%, ilastrow&, sh As Object

Set sh = ThisWorkbook.Worksheets("Лист1")

n = 1
ilastrow = sh.Cells(Rows.Count, 3).End(xlUp).Row
'ilastrow = ilastrow + 1
For i = 8 To ilastrow
  If .Cells(i, 2).MergeCells = True Then i = i + 1: _
    ElseIf sh.Cells(i, 2).MergeCells = False Then sh.Cells(i, 2) = n: n = n + 1: _
    With sh.Cells(i, 2): _
  .Font.Bold = False: _
  .HorizontalAlignment = xlCenter: _
  .VerticalAlignment = xlCenter: _
    End With
    End If
Next
End Sub
Изменено: tsutse - 27.12.2018 22:41:04
 
чтобы сказать что Вы делаете не так, нужно понимать что Вы делаете вообще, т.е. нужно знать задачу, которая требует решения.
из того что есть в наличие что сделано не так?
не так выбрано название темы
это название ни о чем, ответы (если они будут) будут ровно о том же - НИ О ЧЕМ.
полагаете это сдвинет проблему с места? (Вы сильно продвинулись к решению, прочитав мой ответ?)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко,ни на йоту. Но Вы перед собой и не ставили такой задачи...
 
Код
Sub dfs()
Dim i%, n%, ilastrow&
   n = 1
  ilastrow = Cells(Rows.Count, 3).End(xlUp).Row
For i = 8 To ilastrow
  If Cells(i, 2).MergeCells = False Then
     Cells(i, 2) = n: n = n + 1
    With Cells(i, 2)
     .Font.Bold = False
     .HorizontalAlignment = xlCenter
     .VerticalAlignment = xlCenter
    End With
  End If
Next
End Sub
 
tsutse, а что за переменная vm? Откуда она взялась?
У Вас дебагер не ругается? Не подсказывает ничего?
Если вторая таблица - это желаемый результат, то зачем третья таблица?
 
Юрий М, 2я и 3я - просто показывают что в конце может быть объединенная строка, а может и не быть.
А за vm - пардон, sh должна быть(

Kuzmich, спасибо большое!
А по разделителю не подскажете? Не могу понять когда он нужен а когда нет.
 
Ещё момент: у Вас неправильно объявлены переменные: i и n - Integer, а ilastrow - Long. Подумайте, что случится, если переменная номера последней строки будет больше 65 536?
 
Юрий М, в таблице уверен на 110% строк не может быть больше 1000.
А ilastrow - Long - от невнимательности, спасибо что подметили!
 
Цитата
tsutse написал:
А ilastrow - Long - от невнимательности
Наоборот - это правильно, а вот у первых двух переменных поменяйте )) Просто забудьте про Integer.
 
извините, провтыкал, что файл есть. это должно сработать
Код
Sub SetNums()
  Dim c As Range, N&
  For Each c In Columns(3).SpecialCells(2): c.Offset(0, -1) = N + 1: N = N + 1: Next
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Юрий М,эээээх, придется забыть школьный курс информатики))))
Страницы: 1
Наверх