Доброе утро форумчане У меня есть код тест, да\ нет\ отмена, сохрянается значение на другой лист в пересечение строки и столбца с датой за что спасибо огромное "Mikael" Как мне правильно написать проверку пустая конечная ячейка для сохранения или нет, если нет то спрашивать перезаписать ли значение, а он почему-то вместо перезаписи возвращает 6 и 7 то есть да или нет)
[vba]
Код
Sub MfoMacro1() Dim rCell As Range Dim a a = MsgBox("************* ?", vbYesNoCancel, "**********") Dim Message, Title, Default, MyValue Message = "Введите описание " Title = "Данные " Default = "Введите" With Results If .Cells.Find(test.[c2]) Is Nothing Then .Columns("D").Insert xlRight, xlFormatFromRightOrBelow .Range("D8:D21").Interior.Color = RGB(120, 7, 7) .[d6].Value = "Фактический результат" .[d4].Value = test.[a4] .[d5].Value = test.[a6] .[d3].Value = test.[a8] .[d4].Resize(2).Borders.Weight = xlMedium .[d7].Value = test.[c2] End If Set rCell = Intersect(.Rows(8), .Cells.Find(test.[c2]).EntireColumn) End With If IsEmpty(rCell) = True Then With rCell If a = vbYes Then With shp1.Fill .ForeColor.RGB = RGB(12, 110, 45) End With .Value = "Ошибок нет" .Interior.Color = vbGreen shp2.Visible = msoCTrue arrow2.Visible = msoCTrue arrow3.Visible = msoCTrue shp15.Visible = msoCTrue shp16.Visible = msoCTrue ElseIf a = vbNo Then MyValue = inputbox(Message, Title, Default) If MyValue = "" Then Exit Sub End If With shp1.Fill .ForeColor.RGB = RGB(120, 7, 7) End With shp2.Visible = msoFalse arrow2.Visible = msoFalse arrow3.Visible = msoFalse shp15.Visible = msoFalse shp16.Visible = msoFalse .Value = MyValue .Interior.Color = 65535 Else End If End With Else b = MsgBox("Результат тестирования данного пункта по этой дате уже есть, Перезаписать?", vbYesNo, "Внимание") If b = vbYes Then With rCell .Value = a End With Else Exit Sub End If End If End Sub
[/vba]
Доброе утро форумчане У меня есть код тест, да\ нет\ отмена, сохрянается значение на другой лист в пересечение строки и столбца с датой за что спасибо огромное "Mikael" Как мне правильно написать проверку пустая конечная ячейка для сохранения или нет, если нет то спрашивать перезаписать ли значение, а он почему-то вместо перезаписи возвращает 6 и 7 то есть да или нет)
[vba]
Код
Sub MfoMacro1() Dim rCell As Range Dim a a = MsgBox("************* ?", vbYesNoCancel, "**********") Dim Message, Title, Default, MyValue Message = "Введите описание " Title = "Данные " Default = "Введите" With Results If .Cells.Find(test.[c2]) Is Nothing Then .Columns("D").Insert xlRight, xlFormatFromRightOrBelow .Range("D8:D21").Interior.Color = RGB(120, 7, 7) .[d6].Value = "Фактический результат" .[d4].Value = test.[a4] .[d5].Value = test.[a6] .[d3].Value = test.[a8] .[d4].Resize(2).Borders.Weight = xlMedium .[d7].Value = test.[c2] End If Set rCell = Intersect(.Rows(8), .Cells.Find(test.[c2]).EntireColumn) End With If IsEmpty(rCell) = True Then With rCell If a = vbYes Then With shp1.Fill .ForeColor.RGB = RGB(12, 110, 45) End With .Value = "Ошибок нет" .Interior.Color = vbGreen shp2.Visible = msoCTrue arrow2.Visible = msoCTrue arrow3.Visible = msoCTrue shp15.Visible = msoCTrue shp16.Visible = msoCTrue ElseIf a = vbNo Then MyValue = inputbox(Message, Title, Default) If MyValue = "" Then Exit Sub End If With shp1.Fill .ForeColor.RGB = RGB(120, 7, 7) End With shp2.Visible = msoFalse arrow2.Visible = msoFalse arrow3.Visible = msoFalse shp15.Visible = msoFalse shp16.Visible = msoFalse .Value = MyValue .Interior.Color = 65535 Else End If End With Else b = MsgBox("Результат тестирования данного пункта по этой дате уже есть, Перезаписать?", vbYesNo, "Внимание") If b = vbYes Then With rCell .Value = a End With Else Exit Sub End If End If End Sub
Все просто - у Вас в самом начале кода написано [vba]
Код
a = MsgBox("************* ?", vbYesNoCancel, "**********")
[/vba] Другими словами - Вы присваиваете переменной "а" результат ответа на MsgBox - "Да" или "Нет" А в самом конце у Вас написано [vba]
Код
With rCell .Value = a End With
[/vba] Другими словами - Вы присваиваете ячейке те самые "Да" или "Нет". А Вам нужно присвоить то значение, которое нужно - или MyValue, или "Ошибок нет"
Без файла довольно сложно, но общий принцип такой
Все просто - у Вас в самом начале кода написано [vba]
Код
a = MsgBox("************* ?", vbYesNoCancel, "**********")
[/vba] Другими словами - Вы присваиваете переменной "а" результат ответа на MsgBox - "Да" или "Нет" А в самом конце у Вас написано [vba]
Код
With rCell .Value = a End With
[/vba] Другими словами - Вы присваиваете ячейке те самые "Да" или "Нет". А Вам нужно присвоить то значение, которое нужно - или MyValue, или "Ошибок нет"
Без файла довольно сложно, но общий принцип такой_Boroda_
Другими словами - Вы присваиваете ячейке те самые "Да" или "Нет". А Вам нужно присвоить то значение, которое нужно - или MyValue, или "Ошибок нет"
в этом и проблема, как одно значение присвоить я понимаю, а как сделать так чтобы он если да возвращал "ошибок нет" а если нет то возвращал мое значение из Inputbox'a , да/нет я имею ввиду в первом MsgBox'e .
Другими словами - Вы присваиваете ячейке те самые "Да" или "Нет". А Вам нужно присвоить то значение, которое нужно - или MyValue, или "Ошибок нет"
в этом и проблема, как одно значение присвоить я понимаю, а как сделать так чтобы он если да возвращал "ошибок нет" а если нет то возвращал мое значение из Inputbox'a , да/нет я имею ввиду в первом MsgBox'e .Amon
Прошу прощения за то что я выражаюсь очень скудно. Нужно чтобы если я нажимаю в первом боксе да или нет была проверка пустая ячейка или нет, если нет то бокс второй спрашивает перезаписать или нет Если да то тогда он копируется ответ первого бокса ( или ошибок нет или значение из инпут бокса) А получается пока что или возвращает 6\7, или при нажатии нет в первом боксе не появляется инпут бокс Все равно спасибо вам большое. Буду искать дальше.
Прошу прощения за то что я выражаюсь очень скудно. Нужно чтобы если я нажимаю в первом боксе да или нет была проверка пустая ячейка или нет, если нет то бокс второй спрашивает перезаписать или нет Если да то тогда он копируется ответ первого бокса ( или ошибок нет или значение из инпут бокса) А получается пока что или возвращает 6\7, или при нажатии нет в первом боксе не появляется инпут бокс Все равно спасибо вам большое. Буду искать дальше.Amon