Я пытаюсь выполнить событие beforesave, не позволяя пользователям сохранять, если одна из двух заданных ячеек пуста. То, что мне удалось сделать до сих пор, - это соединение столбца 13 (M) и ячейки A4.перед сохранением события, нужна помощь для циклизации двух ячеек в то же время
Что бы я хотел сделать, это применить событие к комбинации из двух диапазонов и строк, A4-A19 и M4-M19. Таким образом: если A4 не пуст, а M4 пуст, появляется msgbox и блокирует сохранение и т. Д. A5-M5, A6-M6 ... до A19-M19. Если обе соответствующие ячейки пусты в одно и то же время, то сохранение должно быть возможным.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim i As Integer, MyWb As Object
i = 13
Set MyWb = ThisWorkbook.Sheets("Planning").Cells
Do While MyWb(4, i).Value <> ""
i = i + 1
Loop
If i = 13 Then
If ThisWorkbook.Sheets("Planning").Range("A4") <> "" Then
MsgBox ("You will need to enter topics before saving"), vbCritical
Cancel = True
End If
End If
End Sub
на основе кода Wolfie, я сумел получить то, что я хотел, просто добавив Если не IsEmpty для столбца и замены 19 вместо 13.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim plansht As Worksheet
Set plansht = ThisWorkbook.Sheets("Planning")
' Loop over rows
Dim rw As Integer
For rw = 4 To 19
' Test if both the A and M column in row "rw" are blank
If Not IsEmpty(plansht.Range("A" & rw)) And plansht.Range("M" & rw).Value = "" Then
MsgBox ("You will need to enter topics before saving"), vbCritical
Cancel = True
End If
Next rw
End Sub
Код, который вы создали из моих проверок ответ: «Если Ai не пусто и Ми пусто, то ... ", обратите внимание, что' Не' применяется только к первому условию перед 'И'! Я не уверен, что это то, чего ты хочешь? – Wolfie
да, это именно то, что я хотел, когда я получил ваши первые ответы, я понял, что мой первоначальный запрос не был прав ... на самом деле я хотел именно такого поведения: если A не пусто, а M пусто, тогда ..... ..:) – thom80
Ну ладно, спасибо за помощь, я отредактировал свой ответ для некоторых заметок об использовании логических операций :) – Wolfie