Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Переход на другой лист при введении даты - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Переход на другой лист при введении даты (Макросы/Sub)
Переход на другой лист при введении даты
VIDEO56 Дата: Пятница, 17.07.2015, 07:21 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 262
Репутация: 23 ±
Замечаний: 0% ±

Excel 2010
Доброй всем пятницы. Подскажите код макроса если в листе 1 в столбе А внесена дата, то должен быть осуществлен переход на лист отчет на ячейку отвечающей данной дате.
К сообщению приложен файл: 7977857.xlsx (9.7 Kb)


Всем удачного дня!
 
Ответить
СообщениеДоброй всем пятницы. Подскажите код макроса если в листе 1 в столбе А внесена дата, то должен быть осуществлен переход на лист отчет на ячейку отвечающей данной дате.

Автор - VIDEO56
Дата добавления - 17.07.2015 в 07:21
miver Дата: Пятница, 17.07.2015, 08:42 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация: 37 ±
Замечаний: 0% ±

Excel 2010
Так нужно?
[moder]посмотрите ps отсюда.
Макросов это тоже касается. Большие можно сувать под спойлер
К сообщению приложен файл: 7977857_m.xlsm (16.6 Kb)
 
Ответить
СообщениеТак нужно?
[moder]посмотрите ps отсюда.
Макросов это тоже касается. Большие можно сувать под спойлер

Автор - miver
Дата добавления - 17.07.2015 в 08:42
KSV Дата: Пятница, 17.07.2015, 09:54 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
чуть подправил, а то при вводе "не даты" попадало в бесконечный цикл, и при очистке ячейки просило ввести дату[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Not Intersect(Range("A:A"), Target(1)) Is Nothing Then
         Application.EnableEvents = False
         If IsDate(Target(1)) Then
             Лист2.Activate
             Set Target = Лист2.Range("A:A").Find(Target(1))
             If Not Target Is Nothing Then Target.Select
         ElseIf Len(Target(1)) Then
             Target(1).Select
             MsgBox "Введите дату, пожалуйста!", vbInformation
             Target(1).ClearContents
         End If
         Application.EnableEvents = True
     End If
End Sub
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщениечуть подправил, а то при вводе "не даты" попадало в бесконечный цикл, и при очистке ячейки просило ввести дату[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Not Intersect(Range("A:A"), Target(1)) Is Nothing Then
         Application.EnableEvents = False
         If IsDate(Target(1)) Then
             Лист2.Activate
             Set Target = Лист2.Range("A:A").Find(Target(1))
             If Not Target Is Nothing Then Target.Select
         ElseIf Len(Target(1)) Then
             Target(1).Select
             MsgBox "Введите дату, пожалуйста!", vbInformation
             Target(1).ClearContents
         End If
         Application.EnableEvents = True
     End If
End Sub
[/vba]

Автор - KSV
Дата добавления - 17.07.2015 в 09:54
Rioran Дата: Пятница, 17.07.2015, 10:01 | Сообщение № 4
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
KSV, привет!

А что означает единичка при Target? Это то же самое, что Target.Cells(1, 1)?


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеKSV, привет!

А что означает единичка при Target? Это то же самое, что Target.Cells(1, 1)?

Автор - Rioran
Дата добавления - 17.07.2015 в 10:01
VIDEO56 Дата: Пятница, 17.07.2015, 10:05 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 262
Репутация: 23 ±
Замечаний: 0% ±

Excel 2010
miver, KSV, Да. Именно так. Спасибо огромное за скорость и качество!


Всем удачного дня!
 
Ответить
Сообщениеmiver, KSV, Да. Именно так. Спасибо огромное за скорость и качество!

Автор - VIDEO56
Дата добавления - 17.07.2015 в 10:05
KSV Дата: Пятница, 17.07.2015, 10:23 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Привет, Rioran!
Совершенно верно, это сокращенная запись от Target.Cells(1). :)
Только, IMHO, всеже, корректнее брать не первую ячейку, а активную.


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Пятница, 17.07.2015, 10:43
 
Ответить
СообщениеПривет, Rioran!
Совершенно верно, это сокращенная запись от Target.Cells(1). :)
Только, IMHO, всеже, корректнее брать не первую ячейку, а активную.

Автор - KSV
Дата добавления - 17.07.2015 в 10:23
_Boroda_ Дата: Пятница, 17.07.2015, 10:28 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Роман
[vba]
Код
    a1 = Target(1).Address
     a2 = Target.Cells(1, 1).Address
     a3 = Target.Range("A1").Address
     a4 = Target.Cells(1).Address
     a5 = Target.Cells(, 1).Address
[/vba]Одинаково

Сергей, а почему не просто
[vba]
Код
If Target.Column=1 Then
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеРоман
[vba]
Код
    a1 = Target(1).Address
     a2 = Target.Cells(1, 1).Address
     a3 = Target.Range("A1").Address
     a4 = Target.Cells(1).Address
     a5 = Target.Cells(, 1).Address
[/vba]Одинаково

Сергей, а почему не просто
[vba]
Код
If Target.Column=1 Then
[/vba]

Автор - _Boroda_
Дата добавления - 17.07.2015 в 10:28
KSV Дата: Пятница, 17.07.2015, 10:38 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Сергей, а почему не просто

Привет, Саш! Это ж не я писал, я только чуть подправил :) (хотя, изменить проверку именно по номеру столбца, вместо Intersect, желание было... :) )


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
Сергей, а почему не просто

Привет, Саш! Это ж не я писал, я только чуть подправил :) (хотя, изменить проверку именно по номеру столбца, вместо Intersect, желание было... :) )

Автор - KSV
Дата добавления - 17.07.2015 в 10:38
Rioran Дата: Пятница, 17.07.2015, 11:10 | Сообщение № 9
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
KSV, _Boroda_, спасибо за наводки!

[offtop]Поэкспериментировал и понял, как работает такая ссылка:

[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Target(3, 3)(1, 3)(1, 2) = 1
End Sub
[/vba]
Но не совсем понятно, что происходит при записи отрицательных чисел. Получаю непредсказуемые результаты.

UPD: а, не, понял. Единица - текущая координата, ноль - координата минус 1, отрицательные числа - координата минус число и минус один.[/offtop]


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Пятница, 17.07.2015, 11:19
 
Ответить
СообщениеKSV, _Boroda_, спасибо за наводки!

[offtop]Поэкспериментировал и понял, как работает такая ссылка:

[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Target(3, 3)(1, 3)(1, 2) = 1
End Sub
[/vba]
Но не совсем понятно, что происходит при записи отрицательных чисел. Получаю непредсказуемые результаты.

UPD: а, не, понял. Единица - текущая координата, ноль - координата минус 1, отрицательные числа - координата минус число и минус один.[/offtop]

Автор - Rioran
Дата добавления - 17.07.2015 в 11:10
_Boroda_ Дата: Пятница, 17.07.2015, 11:22 | Сообщение № 10
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
о не совсем понятно, что происходит при записи отрицательных чисел

target(n)
n=1 - текущая строка
=0 - строка, на 1 выше
=-1 - строка, на 2 выше
Аналогично со столбцами


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
о не совсем понятно, что происходит при записи отрицательных чисел

target(n)
n=1 - текущая строка
=0 - строка, на 1 выше
=-1 - строка, на 2 выше
Аналогично со столбцами

Автор - _Boroda_
Дата добавления - 17.07.2015 в 11:22
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Переход на другой лист при введении даты (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!