Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Есть ли какие-нибудь средства в VBA, которые бы позволяли относиться к формату(цвет, шрифт, границы) ячейки

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных
Предыдущая тема :: Следующая тема  
Автор Сообщение
Илья
Гость





СообщениеДобавлено: Вт Июл 29 2003 23:41    Заголовок сообщения: Есть ли какие-нибудь средства в VBA, которые бы позволяли относиться к формату(цвет, шрифт, границы) ячейки Ответить с цитатой

В чём проблема:
1. Нужно скопировать из одного листа в другой не только содержимое, но и вид ячейки
2. Читаем лист, в нём строки, если строка имеет такой-то формат то она является обычной строкой,
а если другой то, то - заголовком, а следовательно с ней нужно обращатщься по особому

Было бы здорово ... Если бы у объекта Range
(на сколько я понимаю: одна ячейка - это Range, две ячейки - Range, целый ряд - Range, свойство Selection - тоже Range и.т.д.)
существовало понятное свойство - Format. Которое бы содержало в себе всю лабуду
типа цвета, шрифта и прочее.
Есть нечто похожее на искомый "Format", называется -
Но мне лично не совсем понятна логика по которой этот зверь работает. (Буду рад если кто объяснит)
К тому же это нечто является Read only, то есть процедуру сравнения двух ячеек на основе "формата"
(если читать, что определяет формат) организовать можно, а вот копирование - никак.

Вообще то, формат ячейки определяется тремя её свойствами:: Interior, Borders и Font

Так что приходиться.. для создания процедуры копирования "формата" копировать отдельно Interior, Font, а вот
с Borders - проблема: Borders тоже является read only, более того, каждый его элемент - Border является read only.
Сам же Border - совокупность десятка свойств,то есть могжно организовать процедуру
копирования присваиванием, в ручную, каждого такого свойста копируемого объекта объекту, из которого мы
копируем.
Но помойму это не очень красиво. Может можно преукрасить эту процедуру, написав её как-нибудь поумнее
А может я вообще чего приципиально не понимаю

Напишите!!!
Вернуться к началу
Илья
Гость





СообщениеДобавлено: Ср Июл 30 2003 01:14    Заголовок сообщения: Проще прощенья. В посте ашипки сделал, так что читайте здесь Ответить с цитатой

В чём проблема:
1. Нужно скопировать из одного листа в другой не только содержимое, но и вид ячейки
2. Читаем лист, в нём строки, если строка имеет такой-то формат то она является обычной строкой, а если другой то, то - заголовком, а следовательно с ней нужно обращатщься по особому. То есть должна быть возможность сравнивать "форматы"
Было бы здорово ... Если бы у объекта Range (на сколько я понимаю: одна ячейка - это Range, две ячейки - Range, целый ряд - Range, свойство Selection - тоже Range и.т.д.) существовало понятное свойство - Format. Которое бы содержало в себе всю лабуду типа цвета, шрифта и прочее. Есть нечто похожее на искомый "Format", называется - FormatCondition. Но мне лично не совсем понятна логика по которой этот зверь работает. (Буду рад если кто объяснит). К тому же это нечто является Read only, то есть процедуру сравнения двух ячеек на основе "формата" (если считать, что FormatConditions определяет формат) организовать можно, а вот копирование - никак.
Вообще то, формат ячейки определяется тремя её свойствами:: Interior, Borders и Font
Так что приходиться...  для создания процедуры копирования "формата" копировать отдельно Interior, Font, а вот
с Borders - проблема: Borders тоже является read only, более того, каждый его элемент - Border является read only.
Сам же Border - совокупность десятка свойств,то  есть можно организовать процедуру копирования присваиванием, в ручную, каждого такого свойста копируемого объекта объекту, из которого мы копируем.
Но помойму это не очень красиво. Может можно преукрасить эту процедуру, написав её как-нибудь поумнее?
         А может я вообще чего приципиально не понимаю?
Напишите!!!
Вернуться к началу
Old_Den
Гость





СообщениеДобавлено: Чт Июл 31 2003 06:47    Заголовок сообщения: Re: Проще прощенья. В посте ашипки сделал, так что читайте здесь Ответить с цитатой

Ты бы прежде чем голову ломать, записал бы макрос с нужными тебе действиями, типа копирования формата и разобрал бы его по кусочкам, очень действенный метод.
Вернуться к началу
Илья
Гость





СообщениеДобавлено: Пт Авг 01 2003 14:04    Заголовок сообщения: Макрос это хорошо, но он показывает только как капировать через буфер, а с эти проблема ... Ответить с цитатой

Проблема в следующем: На сколько я понял из поставленных экспирементов, такой способ копирования работает только при активизации сначала одного окна, а потом другого. А теперь представьте: мне нужно окткопировать 6000 записей...
Вернуться к началу
Old_Den
Гость





СообщениеДобавлено: Пн Авг 04 2003 06:44    Заголовок сообщения: Внутри (+) Ответить с цитатой

Sub Test()
For i = 1 To 10
x = "B" + Trim(Str(i))
Range(x).Select
If Selection.Interior.ColorIndex = 3 And Selection.Interior.Pattern = xlSolid Then
MsgBox "Оно" 'копируем здесь содержимое и формат (он-то заранее известен, или как мы отличаем эту строку)
Else
End If
MsgBox "Дальше..."
Next i
End Sub

Этот макрос Эксель сам создал, границы я делал все сразу, а не по одной, а ты говоришь "красиво - не красиво", "Вам шашечки или ехать?" (с) не помню кто...

Sub Макрос2()
'
' Макрос2 Макрос
' Макрос записан 04.08.2003
'

'
Range("D5").Select
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Selection.Font.Bold = True
Range("A1").Select
End Sub
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...