Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2011, 13:57   #1
Sergey112233
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 82
По умолчанию счет строк диапазона с форматом текстовый

Уважаемые форумчане.
Помогите, пожалуйста с таким вопросом.
В столбце помещены цифры. Но формат установлен текстовый, т.к. перед цифрами с 1 до 9 нужно проставить ноль. 01213, 02213 и т.д.

Код:
Dim rng As Range
Dim Min As Variant, Max As Variant
Dim I As Integer, nColumn As Integer, nRow As Integer
 
  nRow = 1
  nColumn = 1
  With ActiveSheet.UsedRange
MyUsedRange = .Address
nUsedRows = .Rows.Count
nUsedCols = .Columns.Count
LastRow = .Rows(nUsedRows).Row
lastCol = .Columns(nUsedCols).Column
End With

  Set rng = Range(Cells(lastCol, lastCol), Cells(LastRow, lastCol))
      Max = rng.Cells(1)
      For I = 1 To rng.Count
          If rng.Cells(I) > Max Then
             Max = rng.Cells(I)
          End If
       Next I
    Max1 = Left(Max, Len(Max) - 3) 'Левая часть номера
    Max1 = Max1 + 1 'к номеру прибавить 1
    Max2 = Right(Max, 3) 'Код исполнителя - правая часть номера
    Max = Max1 & Max2 'новый номер СП
    Debug.Print Max
      Cells(LastRow + 1, nRow) = CStr(Max)
Когда в очередной пустой строке стоит формат общий или числовой nUsedCols = .Columns.Count считает правильно количество строк диапазона.
А если в очередной пустой строке стоит формат текстовый, а в ячейке ничего нет, то nUsedCols = .Columns.Count считает ее как ячейку диапазона.
Как сделать так, чтобы считались только те ячейки, которые заполнены. А формат столбца оставался текстовым?
Вложения
Тип файла: rar Книга22-1.rar (8.3 Кб, 8 просмотров)
Sergey112233 вне форума Ответить с цитированием
Старый 04.03.2011, 14:12   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

nUsedRows = .Cells(Rows.Count, 1).End(xlUp).Row '.Rows.Count
Вернее даже так:
LastRow = .Cells(Rows.Count, 1).End(xlUp).Row
А nUsedRows выкинуть.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 04.03.2011 в 14:14.
Hugo121 вне форума Ответить с цитированием
Старый 04.03.2011, 14:24   #3
Sergey112233
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 82
По умолчанию

Классно, работает!
Спасибо.
А в чем проблема была?
Sergey112233 вне форума Ответить с цитированием
Старый 04.03.2011, 15:48   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

В форматах. UsedRange кончается там, где кончаются форматы, а не данные...
Вот вчера как раз для другого форума пример на эту тему делал: http://forum.ixbt.com/post.cgi?id=attach:23:32362:895:1
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 04.03.2011, 16:42   #5
Sergey112233
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 82
По умолчанию

А каким образом можно определить (посмотреть) окончание форматов?
Url форума положите, пожалуйста. Или др.
Sergey112233 вне форума Ответить с цитированием
Старый 04.03.2011, 16:45   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ctrl+End поможет - вот как раз UsedRange и покажет.
А url давать некорректно (хотя уже дал)...
Но этот форум лучше.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 04.03.2011, 16:52   #7
Sergey112233
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 82
По умолчанию

Согласен. Спасибо.
Извините за некорректность.
Sergey112233 вне форума Ответить с цитированием
Старый 04.03.2011, 16:54   #8
Sergey112233
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 82
По умолчанию

А как эти форматы снимать? Пробовал ставить формат-общий. Не снимается. Только через удаление строк.
Sergey112233 вне форума Ответить с цитированием
Старый 04.03.2011, 17:33   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Можно Очистить-Форматы. Иногда помогает.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 05.03.2011, 10:14   #10
Sergey112233
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 82
По умолчанию

Hugo121,
Спасибо.
Sergey112233 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить в VBA номера строк выделенного диапазона? Chelentano Microsoft Office Excel 10 04.11.2010 14:25
Создать в редакторе текстовый файл, внести в него 10 строк произвольного текста. Разработать программу, к Pan_rust Паскаль, Turbo Pascal, PascalABC.NET 0 24.05.2010 23:04
Считывание диапазона строк из файла. Niodar PHP 11 27.02.2010 14:43
Дан текстовый файл. Вывести количество содержащихся в нем символов и строк Настенька..Блонди Помощь студентам 4 12.02.2009 19:28
не могу разобраться с форматом строк Bezdar Microsoft Office Excel 2 14.11.2008 11:32