Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Рамка / 21 сообщений из 21, страница 1 из 1
14.07.2005, 14:32:27
    #33166073
Loll
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рамка
Как обвести ячейки в рамку от скажем "A1" до последней ячейке в которой есть хоть какая-то информация....

То есть:
A B C D E
1 2 3 4 5
2 6 7
3 8 9

Обвести надо все ячейки от A1 до E3, но они каждый раз будут разные и если в строке 4 появиться текст, то обведение должно продолжиться... а если очистить столбец E, то рамка на него распространяться не должна...
Надеюсь нормально объянила.
...
Рейтинг: 0 / 0
14.07.2005, 14:50:05
    #33166133
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рамка
[quot Loll ]....объянила.[/quot] нормально...
Есть оооочень хорошее - справочники (как на бумаге, так и в Helpe и в инете), пользуйся ими, не заставляй читать курс лекций по введению в программирование...
Не плохо см. по поиску в форумах...
Сначала тебе нада найти "пустую ячейку", затем применить "обведение" . Енто делается так: нажимаешь на запись макроса, выделяешь диапазон в котором будешь енто всё делать, Выбираешь в строке формул нужную функцию (следует учесть разницу NULL и EMPTY), закрепляешь последнюю непустую ячейку и "обводишь с нее до которой начинала...
Можно сразу писать по схеме: найти пустую ячейку в цикле в диапазоне с логикой - если не пустая-обводи, если пустая -Stop/перейди к след. диапазону...
Stepler (щёлк-щёлк!!)

Код: plaintext
 P.S.Присутствовали ли Вы, когда Вас фотографировали?  
...
Рейтинг: 0 / 0
15.07.2005, 09:27:08
    #33167447
Рамка
Stepler не выдержал. :)

Вот набросал. Выделяем диапазон (хоть весь лист) и запускаем.
Претензии не принимаются. (c) Victosha

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
Sub TestRange()
    Dim rng As Range
    Dim rng2 As Range
    Dim intCol As Integer
    Dim intI As Integer
    Dim intMax As Integer
    Dim intCurRec As Integer
    Dim intEmptyCol As Integer

    Set rng = Selection
    
    ' Очищаем заливку ячеек на листе.
    Cells.Interior.ColorIndex = xlNone
    
    ' Очищаем границ ячеек на листе.
    With Cells
        .Borders(xlEdgeLeft).LineStyle = xlNone
        .Borders(xlEdgeTop).LineStyle = xlNone
        .Borders(xlEdgeBottom).LineStyle = xlNone
        .Borders(xlEdgeRight).LineStyle = xlNone
        .Borders(xlInsideVertical).LineStyle = xlNone
        .Borders(xlInsideHorizontal).LineStyle = xlNone
    End With
    
    ' intCol - количество столбцов в выделенном диапазоне.
    ' intMax - максимальное число непустых строк по столбцам.
    ' intEmptyCol - количество пустых столбцов.
    intCol = rng.Columns.Count
    intMax =  0 
    intEmptyCol =  0 
    
    On Error GoTo HandleErr
    
    For intI =  1  To intCol
        ' Сравниваем данные столбца с ячейкой 65536 (пустая ячейка).
        Set rng2 = Columns(intI).ColumnDifferences(comparison:=Cells( 65536 , intI))
        intCurRec = rng2.Areas(rng2.Areas.Count).Cells.Count
        If intCurRec > intMax Then
            intMax = intCurRec
        End If
    Next intI
    
    ' По-умолчанию начало диапазона - Cells(1, 1).
    
    ' Заливка диапазона с данными желтым цветом.
    With Range(Cells( 1 ,  1 ), Cells(intMax, intCol - intEmptyCol)).Interior
        .ColorIndex =  6 
        .Pattern = xlSolid
    End With
    ' Установка границ для диапазона данных.
    With Range(Cells( 1 ,  1 ), Cells(intMax, intCol - intEmptyCol)).Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Range(Cells( 1 ,  1 ), Cells(intMax, intCol - intEmptyCol)).Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Range(Cells( 1 ,  1 ), Cells(intMax, intCol - intEmptyCol)).Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Range(Cells( 1 ,  1 ), Cells(intMax, intCol - intEmptyCol)).Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    
ExitHere:
    Exit Sub

HandleErr:
    Select Case Err.Number
        Case  1004 
            ' Считаем сколько пустых столбцов.
            intEmptyCol = intEmptyCol +  1 
            Resume Next
        Case Else
            Resume ExitHere
    End Select
End Sub

Ограничение:

1234526738913453

Выделит только первые 4 строки.
...
Рейтинг: 0 / 0
15.07.2005, 09:28:49
    #33167450
Рамка
Рисунок.
...
Рейтинг: 0 / 0
15.07.2005, 09:59:32
    #33167524
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рамка
' Сравниваем данные столбца с ячейкой 65536 (пустая ячейка).
Set rng2 = Columns(intI).ColumnDifferences(comparison:=Cells(65536, intI))
А если А 65536-IV65536 заняты - то "кранты"...... :)
Stepler (щёлк-щёлк!!)

Код: plaintext
 P.S.Присутствовали ли Вы, когда Вас фотографировали?  
...
Рейтинг: 0 / 0
15.07.2005, 10:01:59
    #33167530
Рамка
Пользователь2Претензии не принимаются. (c) Victosha

Оптимизируйте и изменяйте код исходя из ваших условий и требований.
...
Рейтинг: 0 / 0
15.07.2005, 10:04:28
    #33167540
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рамка
:) :) :)
Stepler (щёлк-щёлк!!)

Код: plaintext
 P.S.Присутствовали ли Вы, когда Вас фотографировали?  
...
Рейтинг: 0 / 0
15.07.2005, 10:29:38
    #33167611
Рамка
Stepler:) :) :)
...
Рейтинг: 0 / 0
15.07.2005, 10:37:23
    #33167638
Loll
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рамка
Ребята! Я не прогер, для меня все это такой темный лес!
Давайте упростим задачу левая верхня ячейка всегда занята и она имеет адрес A1, нижняя правая тоже всегда занята, но конкретного адреса не имеет... Все ячейки нужно выделить по периметру...
...
Рейтинг: 0 / 0
15.07.2005, 10:38:46
    #33167644
Рамка
LollВсе ячейки нужно выделить по периметру...
Я код для кого писал?
...
Рейтинг: 0 / 0
15.07.2005, 11:25:08
    #33167789
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рамка
Я та тоже не ПРОГЕР .....
Код Пользователь2 написал подробно, я даже понял :)

Stepler (щёлк-щёлк!!)

Код: plaintext
 P.S.Присутствовали ли Вы, когда Вас фотографировали?  
...
Рейтинг: 0 / 0
15.07.2005, 11:37:49
    #33167842
Рамка
Я же специально комментарии добавил. :)

Stepler . :)
...
Рейтинг: 0 / 0
15.07.2005, 11:58:11
    #33167948
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рамка
LollРебята! Я не прогер, для меня все это такой темный лес!
Давайте упростим задачу левая верхня ячейка всегда занята и она имеет адрес A1, нижняя правая тоже всегда занята, но конкретного адреса не имеет... Все ячейки нужно выделить по периметру...
Типа как мы не справились с задачкой...
"Бездари, тогда задачу упрощаю : не 2*2, а 1+1=?"
>Пользователь2 Отвечать будешь?, а то родителей в школу вызовут....
>Loll Я понимаю, что тебе хочется решенного вопроса кем-то. Времени для решения твоих вопросов уже ушло много, а твои задачи не решены полностью.
Выводы : либо учи язык, либо ставь конкретную задачу (сначала обдумай ее), чтобы на форуме по возможности дали точный ответ, а не наметки решения задачи....
Задача по поиску и преобразованию текста.... Получил мой код? Но енто тоже направления решения, ведь надо в ентой заготовке исчо прописать вариант повторений значения поиска, частоту использования (уже перемещен и выделен текст) и т.д. А лучше вообще вставить в цикл с переменной р="Текст1", потом выполняется поиск, преобразование... после ентого р="Текст2" и на исходную по поиску....
...
Рейтинг: 0 / 0
15.07.2005, 12:46:42
    #33168167
Loll
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рамка
Окей! Задача целиком и полность, потому, что я устала уже сама колупаться :( Программа bCAD Exel файл его нужно привести к необходимому виду... Для этого нужно найти ячеки с определенным текстом(несколько ячеек 3-7 на в среднем) выделить жирным текстом, перенести вправо, добавить сверху пустую строку. Если текст не найден - сообщить об этом, но не обо всех, а только об одном(который я часто забываю добавить). потом все полученное обвести рамкой внутри и снаружи.
И еще добавть формулу которая будут перемножать содержимое двух столбцов, но не во все подряд, а если в строках по этим столбцам ячейки не пустые, если пустые то соответственно формулу вставлять не надо.

То есть в B и D есть числа, но только в строках 1 и 3, соответственно в C1 и С3 должна появиться формула перемножающая B и D, а C2 останеться пустой так как в B2 и D2 чисел нет.

A B C D
1
2
3

Ничего из этого я сделать не могу...
То есть вот код:

Attribute VB_Name = "Module1"
Sub Смета()
'
' Макрос5 Макрос
' Макрос записан 14.07.2005 (Konstruktor)
'

'Материалы основы
On Error GoTo V
Cells.Find(What:="Панели: Материалы основы", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
Selection.Font.Bold = True
Selection.Cut
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
ActiveSheet.Paste
Selection.EntireRow.Insert

' Материалы кромок
R1: Resume n
n: On Error GoTo V1
Cells.Find(What:="Панели: Материалы кромок", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
Selection.Font.Bold = True
Selection.Cut
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
ActiveSheet.Paste
Selection.EntireRow.Insert

' Крепеж
R2: Resume n1
n1: On Error GoTo V2
Cells.Find(What:="Крепёж", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
Selection.Font.Bold = True
Selection.Cut
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
ActiveSheet.Paste
Selection.EntireRow.Insert

'Вспомогательные материалы
R3: Resume n2
n2: On Error GoTo V3
Cells.Find(What:="Вспомогательные материалы", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
Selection.Font.Bold = True
Selection.Cut
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
ActiveSheet.Paste
Selection.EntireRow.Insert

'Профили
R4: Resume n3
n3: On Error GoTo V4
Cells.Find(What:="Профили: Материалы основы", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
Selection.Font.Bold = True
Selection.Cut
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
ActiveSheet.Paste
Selection.EntireRow.Insert
GoTo R5

V: MsgBox "В проекте отсутстуют Панели: Материалы основы"
GoTo R1
V1: MsgBox "В проекте отсутстуют Панели: Материалы кромок"
GoTo R2
V2: MsgBox "В проекте отсутствует Крепёж"
GoTo R3
V3: MsgBox "В проекте отсутстуют Вспомогательные материалы"
GoTo R4
V4: MsgBox "В проекте отсутстуют Профили: Материалы основы"
GoTo R5

' Удаление и перемещение ненужных столбцов
R5: Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
Columns("C:D").Select
Selection.Delete Shift:=xlToLeft
Columns("F:G").Select
Selection.Delete Shift:=xlToLeft
Columns("H:H").Select
Selection.Delete Shift:=xlToLeft
Columns("C:C").Select
Selection.Cut
Columns("B:B").Select
Selection.Insert Shift:=xlToRight
Columns("D:D").Select
Selection.Cut
Columns("H:H").Select
Selection.Insert Shift:=xlToRight
Columns("D:D").Select
Selection.Delete Shift:=xlToLeft
Range("D1").Select
ActiveCell.FormulaR1C1 = "Цена"
Range("E1").Select
Cells.Select
Cells.EntireColumn.AutoFit

End Sub

Попробуйте ради интереса запустить и увидите как все глючит, то есть выводит сообщение о том что материала нет, если нет слудующего :( Кароче все стремно, криво и мне жутко обидно %(
...
Рейтинг: 0 / 0
15.07.2005, 12:52:48
    #33168199
Loll
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рамка
2Stepler
Код редактировала с учетом твоего послания... Но толку :(
...
Рейтинг: 0 / 0
15.07.2005, 14:00:13
    #33168506
Рамка
Что-то вы топиком ошиблись.

Топик про поиск здесь .
...
Рейтинг: 0 / 0
15.07.2005, 16:22:49
    #33169101
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рамка
Пользователь2Что-то вы топиком ошиблись.

Топик про поиск здесь .
>Пользователь2 Задача то одна, чтоб не бегать по топикам - уж лучше в одном...
Правда счас времени нет ответить (усё написать) горемычной, срочную новую сверхзадачу поставили - программировать презентацию.... Черт я там ни разу исчо не копался :). Им нада, чтоб по измененым данным (в момент презентации) анимационно росли и мигали данные рядов диаграммы....
Могет ты поможешь Loll - ей срочно нада ... К тому же она с Урала - там сдвижка относительно Москвы часа 2...
...
Рейтинг: 0 / 0
15.07.2005, 16:26:49
    #33169118
Stepler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рамка
Loll2Stepler
Код редактировала с учетом твоего послания... Но толку :(
Протестировал твоё написание...
У мени работает как в случае, если ничаво не находит, так и в случае наличия (тока нада подредактировать переходы при нахождении, чтоб не давала сообщение что не найдено).... Могет у тебе что в настройках? Опиши, как глючит и каки сообщалки дает.
Тока я буду читать/отвечать с перерывами - у нас из-за грозы инет глючит...
...
Рейтинг: 0 / 0
18.07.2005, 06:17:07
    #33170425
Loll
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рамка
Ну как видите в выходные я отдыхала :)
2Stepler, вот именно подредактировать переходы мне и нужно... А то выдает сообщение об отсутствии текста, даже когда он есть. У меня несколько было вариантов, этот самый рабочий... Ну и рамка с формулой - темный лес :(
...
Рейтинг: 0 / 0
22.07.2005, 09:43:46
    #33179372
Рамка
LollКак обвести ячейки в рамку от скажем "A1" до последней ячейке в которой есть хоть какая-то информация....

То есть:
A B C D E
1 2 3 4 5
2 6 7
3 8 9

Обвести надо все ячейки от A1 до E3, но они каждый раз будут разные и если в строке 4 появиться текст, то обведение должно продолжиться... а если очистить столбец E, то рамка на него распространяться не должна...
Надеюсь нормально объянила.

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

Код: plaintext
Cells( 1 ,  1 ).CurrentRegion.Select

Или

Код: plaintext
ActiveSheet.UsedRange.Select
...
Рейтинг: 0 / 0
22.07.2005, 10:55:41
    #33179556
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рамка
Пользователь2Я думаю, что многим будет интересно узнать, что для того чтобы выделить диапазон с данными на листе, можно воспользоваться одной строчкой......с некоторыми оговорками...
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Рамка / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]