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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2009, 16:36   #1
Павел-812
Пользователь
 
Аватар для Павел-812
 
Регистрация: 10.02.2009
Сообщений: 15
По умолчанию 1. Присвоить переменной значение ячейки, находящейся в ТЕКУЩЕМ ряду в столбце "E" 2.Вопрос по автофильтру

Здравствуйте!
К вам пара вопросов, если ответите, то очень мне поможете.


Итак, вопрос 1. Выделена произвольная ячейка в какой-то определённой строке таблицы. Как мне присвоить переменной x значение ячейки, располагающейся в ТЕКУЩЕЙ строке, столбце E?


Вопрос 2. В таблице с помощью автофильтра произведена выборка данных, например, по фильтру имеем одну единственную строку:

"Г.Симоняка ул." (ячейка A35), "д.23" (ячейка B35) и "ЖКС1" (ячейка C35)

Как мне присвоить переменной X значение, находящееся в третьей ячейке (в данном случае C35). Проблема в том, что в результате выборки это будет не всегда ячейка C35, а может быть C12, C19, C39 - в общем, всё что угодно.
Изображения
Тип файла: png Snap1.png (3.3 Кб, 196 просмотров)
Павел-812 вне форума Ответить с цитированием
Старый 25.02.2009, 16:59   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Sub Вопрос1()
    [f12].Select    ' выделена ячейка F12
    x = ActiveCell.EntireRow.Cells(5)    ' читаем значение 5-й ячейки (столбец E) той же строки
    Debug.Print x
End Sub


Sub Вопрос2()
    Set cell = [c1].End(xlDown) ' равносильно нажатию Ctrl + СтрелкаВниз при выделенной ячейке С1
    ' cell - ячейка, на которую мы попали после нажатия Ctrl + СтрелкаВниз
    
    ' если мы оказались не на последней строке листа, то читаем значение ячейки
    If cell.Row <> Rows.Count Then x = cell.Value
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 25.02.2009, 17:02   #3
Павел-812
Пользователь
 
Аватар для Павел-812
 
Регистрация: 10.02.2009
Сообщений: 15
По умолчанию

EducatedFool, огромнейшее Вам спасибо за развёрнутый ответ! Не ожидал так скоро получить квалифицированную помощь! СПА-СИ-БО!
Павел-812 вне форума Ответить с цитированием
Старый 26.02.2009, 12:37   #4
Павел-812
Пользователь
 
Аватар для Павел-812
 
Регистрация: 10.02.2009
Сообщений: 15
По умолчанию

Кстати, а как сделать активной ячейку, на которой стоит курсор?? Всё дело в том, что макрос отказывается работать со строкой, в которой находится курсор.
Изображения
Тип файла: png Snap2.png (21.4 Кб, 188 просмотров)
Тип файла: png Snap3.png (4.8 Кб, 161 просмотров)

Последний раз редактировалось Павел-812; 26.02.2009 в 14:52.
Павел-812 вне форума Ответить с цитированием
Старый 26.02.2009, 16:25   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Отписал в личку.

Требовалось что-то вроде этого:
Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ' запускается при изменении выделения на листе
    If Target.Cells.Count > 1 Then Exit Sub    ' выход из макроса, если выделено больше одной ячейки

    x = Target.EntireRow.Cells(5)
    y = Target.EntireRow.Cells(6)

    ' результат наблюдаем в строке состояния Excel
    Application.StatusBar = "Значение в столбце E равно  " & x & " ,    в столбце F равно  " & y
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 26.07.2011, 12:12   #6
whitest
Новичок
Джуниор
 
Аватар для whitest
 
Регистрация: 26.07.2011
Сообщений: 1
Сообщение Чтобы не плодить темы

Доброго дня всем!

Прошу маленькую помощь в решении такой задачки: имеется таблица, в одной из колонок содержится время в формате Unix. Например, вот пару ячеек:
1309454110
1309454212
1309454215
1309454390
.
Чтобы перевести его в календарный вид используется формула: =ДАТА(1970;1;1)+ ячейка_с_Unix-временем/86400 .

Беда в том, что в столбце таких ячеек тысяч 40. Вот я попробовал сам че-то наковырять (для отрезка E2-E50), замена работает только для одной ячейки (на которой поставлен курсор), а цикл не получается запустить =(

Код:
Sub unix-time()
Dim x As Range
For Each c In Worksheets("Sheet 1").Range("E2:E50").Cells
ActiveCell.FormulaR1C1 = "=DATE(1970,1,1)+ RC[1]/86400"
Selection.NumberFormat = "[$-409]dd/mm/yy h:mm AM/PM;@"
Next c
End Sub
Помоги кто-нить пожалуйста с циклом..
whitest вне форума Ответить с цитированием
Старый 27.07.2011, 10:32   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Sub test()
    Dim ra As Range: Application.ScreenUpdating = False
    Set ra = Range([A1], Range("A" & Rows.Count).End(IIf(Len(Range("A" & Rows.Count)), xlDown, xlUp)))
    arr = ra.Value
    For i = LBound(arr) To UBound(arr)
        arr(i, 1) = CDbl(DateSerial(1970, 1, 1)) + arr(i, 1) / 86400
    Next i
    ra.Value = arr
    ra.NumberFormat = "[$-409]dd/mm/yy h:mm AM/PM;@"
End Sub
Пример в файле: http://excelvba.ru/XL_Files/Sample__...__12-32-52.zip
EducatedFool вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
блок "cont" с права не принимает значение "margin: 10px;" которое описано в body tabikA HTML и CSS 5 24.02.2009 21:50
Значение ячейки "пусто" zz777 Microsoft Office Excel 14 14.01.2009 18:52
Как в формуле одной ячейки присвоить значение другой? Эдгар Microsoft Office Excel 10 06.10.2008 15:00
при выполнении запроса в столбце "Дата сдачи" оставить даты, которые соответствуют введенному месяцу klukva666 Microsoft Office Access 5 10.03.2008 17:52
Перечисление в столбце. Как "вытащить" нужное? Помогите! Tatyana БД в Delphi 2 10.07.2007 09:25