Макрос при открытии файла Если вы были на собрании, нажмите «ОК», если нет, чтобы снова упомянуть в Excel - PullRequest
0 голосов
/ 04 октября 2018

Я хочу сделать уведомление о встречах из таблицы.Если это было сделано, нажмите Okay и напишите в таблице в столбце B. Если нет, повторите в следующий раз при разработке файла.

Это то, что я знаю, я не знаю, как разместить столбец OkayB в соответствующем ряду и заставьте его появиться снова.

Private Sub Workbook_Open()
    For Each cell In Sheets("appointments").Range("A1:B500")
        '''If cell.value = "yes" Then '''By column B
        If cell.value = Date Then
            MsgBox "appointments" & cell.Offset(0, 4).value, vbExclamation + vbYesNo + vbQuestion, "appointments"
        End If
    Next cell
End Sub

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

Редактировать: Правильный ответ был найден последним

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Кажется, ты почти у цели.Если я правильно интерпретирую ваш вопрос, вы хотите задать вопрос «да / нет» и поместить значение в эту строку на несколько столбцов больше.

Это можно сделать с помощью вложенного оператора if:

Private Sub Workbook_Open()
    For Each cell In Sheets("appointments").Range("A1:B500")
        '''If cell.value = "yes" Then '''By column B
        If cell.Value = Date Then
            If MsgBox("Did you go to the meeting on " & Date & "?", Buttons:=vbYesNo) = vbYes Then
            cell.Cells.Offset(0, 4) = "Yeah I went."
            End If
        End If
    Next cell
End Sub

Я сделал несколько предположений о столбцах, но вы можете настроить диапазоны и номера столбцов в смещении так, как вам удобно.

0 голосов
/ 05 октября 2018

С помощью друзей раньше я смог сделать следующий код: Столбец 1, эта «дата», столбец 2, это «собрание», столбец 3, это «статус»

Первое условие, если статусна «Нет» Второе условие, если дата на сегодняшнюю дату

Если вы нажмете «Да», вы введете «Да». Если вы нажмете «Нет», введите статус «Нет»

Private Sub Workbook_Open()
    For Each cell In Sheets("Appointment").Range("A1:E500")
       If cell.Cells.Offset(0, 3) = "No" Then
            If cell.value = Date Then
                If MsgBox("Did you go to the meeting on " & Date & cell.Cells.Offset(0, 2), Buttons:=vbYesNo) = vbYes Then
                     cell.Cells.Offset(0, 3) = "Yes"
                     Else
                     cell.Cells.Offset(0, 3) = "No"
                 End If
             End If
        End If
    Next cell
End Sub

Если вы хотите найти старые даты, используйте это <= Date

0 голосов
/ 04 октября 2018

Вот пара мыслей

  1. Не используйте cell в качестве переменной.Это слишком близко к предопределенному объекту (Cells).Вместо этого попробуйте MyCell (или что-нибудь еще).Вам также нужно объявить эту переменную, которая приведет меня к # 2
  2. Option Explicit.Всегда используйте это в заголовке
  3. Установите динамический диапазон для прохода.Я предполагаю, что вы просто хотите перебрать Column A от 2-й строки (заголовка?) До последней использованной строки
  4. Вам нужно будет установить свой MsgBox ввод в качестве переменной, а затем построить свойIf Then оператор вокруг результата
  5. Рассмотрите возможность использования vbYesNoCancel.Что если вы хотите открыть книгу, чтобы проверить что-то очень быстро, не отвечая на серию неизбежных всплывающих окон?В этом нет необходимости, но вы можете указать Cancel и Exit Sub

Я взял текст в вашем MsgBox для удобства чтения здесь.Возможно, вам следует изменить подсказку на что-то вроде Have you completed [this] appointment?, что даст опции Yes, No или Cancel.

Option Explicit

Private Sub Workbook_Open()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Appointment")
Dim MyCell As Range, LRow As Long, Ans As String

LRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row

For Each MyCell In ws.Range("A2:A" & LRow) '<=== Dynamic Range
    If MyCell = Date Then
    Ans = MsgBox("Select One", vbYesNoCancel)
        If Ans = vbYes Then
            'Do something if YES
        ElseIf Ans = vbNo Then
            'Do something if NO
        ElseIf Ans = vbCancel Then
            'Do something if CANCEL (Exit Sub?)
        End If
    End If
Next MyCell

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