Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Прошу помощи с VB в Excell

2.7K
04 декабря 2002 года
AleF
1 / / 04.12.2002
Помогите плз, как можно сделать следующее:
нужно, чтобы ячейка изменяла свое значение (формат числа - "дата, месяц, год") в зависимости от изменения др ячейки (формат - "количество часов"). HELP!
2.5K
04 декабря 2002 года
ataman
11 / / 02.12.2002
Цитата:
Originally posted by AleF
Помогите плз, как можно сделать следующее:
нужно, чтобы ячейка изменяла свое значение (формат числа - "дата, месяц, год") в зависимости от изменения др ячейки (формат - "количество часов"). HELP!



Это не сложно. :)
Надо просто вспомнить, что Excel -- это объектная система... и Рабочая таблица -- это тоже объект.

1. Создай новую книгу.
2. Открой VBA редактор и среди объектов ты увидишь таблицы из этой книги...
3. Щелкни по названию любой из таблиц.
Откроется окно с названием типа:
"YourWorkbookName.xls - SheetName (Code)
4. Скопируй в это окно примерчик

'<-- Code Begin
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RangeCells As Range 'Range of cells we shall check for changes
Dim varNumber As Variant 'Value of a cell here

' The variable RangeCells contains the cells that will cause
' an action when they are changed.
Set RangeCells = Range("A1:AB10000")
' it may be any other range up to all the sheet

If Not Application.Intersect(RangeCells, Range(Target.Address)) _
Is Nothing Then
varNumber = Range(Target.Address) ' Initialize variable.

' here we begin format change
Select Case varNumber ' Evaluate Number.
Case 1 To 5 ' Number between 1 and 5, inclusive... Use any other criteria
' The following is the only Case clause that evaluates to True.
Range(Target.Address).Cells.NumberFormat = "MM/DD/YYYY"
Case 6, 7, 8 ' Number between 6 and 8.
Range(Target.Address).Cells.NumberFormat = "DD/MM/YY h:mm;@"
Case 9 To 99000 ' Number between 6 and 8.
Range(Target.Address).Cells.NumberFormat = "DD/MM/YY"
Case Else ' Other values.
'you change Format to predefined one...
Range(Target.Address).Cells.NumberFormat = "#,##0.00;[Red]-#,##0.00"
End Select
' here we end format change

End If
End Sub
'<--- Code End

Вместо Select Case можно использовать If Elseif,
но Case работает побыстрее.
Да, если у тебя русская версия Excel, то все равно, формат будет типа "DD/MM", а не "ДД/ММ", это строго. Кроме того, помни, что название процедуры должно быть строго "Worksheet_Change".

С бестами и регардами,
Алекс

2.5K
04 декабря 2002 года
ataman
11 / / 02.12.2002
Цитата:
Originally posted by AleF
Помогите плз, как можно сделать следующее:
нужно, чтобы ячейка изменяла свое значение (формат числа - "дата, месяц, год") в зависимости от изменения др ячейки (формат - "количество часов"). HELP!



Хмм... Смотри сюда...

1. Дата бывает serialized date "h:mm:ss" и decimal number "0.00"
то есть, 24 часа "h:mm:ss" -- это 1 в децимал формате "0.00"

decimal = serialized * 24
и наоборот
serialized = decimal / 24

2. Если у тебя в клетке часы больше, чем 24, то формат должен быть "[h]:mm:ss"

3. Если к дню надо прибавить 1(или больше), если "[h]:mm:ss" число больше, чем 24 часа, то

=DATE(YEAR(DATEVALUE(YourDate)),MONTH(DATEVALUE(YourDate)),DAY(DATEVALUE(YourDate))+INT(YourTimeDecimal)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог