Макрос Отображает всплывающее сообщение, если дата в ячейке применяется сегодня - PullRequest
0 голосов
/ 03 октября 2018

У меня есть список задач в Excel, я хочу каждый раз, когда я открываю файл, и есть ячейка с датой, которая применяется сегодня, выскочит сообщение с содержанием задачи, которая применяется сегодня

Я пытался сделать этот код, но он не работал

Private Sub Workbook_Open()
    For Each cell In Range("A4:A500")
        If cell.Value - today Then
            MsgBox "Here should be the text in column B"
        End If
    Next
End Sub

Буду признателен за любую помощь

Ответы [ 3 ]

0 голосов
/ 03 октября 2018
Sub Test()

TodayD = Date

'define sheet
With Worksheets(1).Range("A4:A500")
    Set c = .Find(Date, LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            MsgBox "Here should be the text in column B: " & firstAddress
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With

End Sub
0 голосов
/ 03 октября 2018

Лучше поздно, чем никогда

Option Explicit
Sub TodaysTasks()
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Description
  'In a specified worksheet or the ActiveSheet, searches a specified one column
  'range and looks for today's date values and when found writes the values of
  'the next adjacent column to a string and finally outputs the string to a
  'MsgBox and to the Immediate window.
'Arguments as constants
  'cStrWorksheetName
    'The name of the worksheet. If "" then the ActiveSheet object is used.
  'cStrRange
    'The range where to search.
  'cStrTitle
    'The title of the resulting string
'Results
  'A string containing the title and the matching values of the second column.

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Customize BEGIN -----------------------
  Const cStrWorksheetName = "" 'Worksheet name. If "" then ActiveSheet.
  Const cStrRange = "A4:A500"
  Const cStrTitle = "My today's tasks"
'Customize END -------------------------

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  Dim oWb As Workbook
  Dim oWs As Worksheet
  Dim rRng As Range
  Dim loF1 As Long 'Rows Counter
  Dim strTasks As String

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  Set oWb = ActiveWorkbook
  If cStrWorksheetName = "" Then
    Set oWs = oWb.ActiveSheet
   Else
    Set oWs = oWb.Worksheets(cStrWorksheetName)
  End If
  Set rRng = oWs.Range(cStrRange)
  'Set the title
  strTasks = cStrTitle & vbCrLf

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  'Loop through all cells (rows) in first column.
  For loF1 = 1 To oWs.Range(cStrRange).Rows.Count
  'Check if value in first column is todays date.
    If rRng(loF1, 1).Value = Date Then 'It is today's date.
      'Write value in second column to the string.
      strTasks = strTasks & vbCrLf & rRng(loF1, 2).Value
'     Else 'It is not today's date.
      'skip the row
    End If
  Next

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  MsgBox strTasks
  Debug.Print strTasks

End Sub
0 голосов
/ 03 октября 2018

Этот образец имеет рабочий лист с именем список :

enter image description here

Этот код:

Private Sub Workbook_Open()
    For Each cell In Sheets("list").Range("A4:A500")
        If cell.Value = Date Then
            MsgBox cell.Offset(0, 1).Value
        End If
    Next cell
End Sub

покажет золото

Примечание:

  • мы используем Date() скореечем Today()
  • мы указываем рабочий лист для проверки
  • мы используем Offset, чтобы получить столбец B содержимое

РЕДАКТИРОВАТЬ # 1:

Поскольку это код рабочей книги, его очень легко установить и использовать:

  1. щелкните правой кнопкой мыши ThisWorkbook в левой панелиVBE

enter image description here

выберите Просмотр кода вставьте материал и закройте окно VBE

Если вы сохраните книгу, макрос будет сохранен вместе с ней.Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx

. Чтобы удалить макрос:

  1. , откройте окна VBE каквыше
  2. очистить код
  3. закрыть окно VBE

Чтобы узнать больше о макросах в целом, см .:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

и

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

Чтобы узнать больше о макросах событий (код книги), см.

http://www.mvps.org/dmcritchie/excel/event.htm

Макросы должны быть включены, чтобы это работало!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...