Ввод значения в ячейку при первом запуске

Автор Владимир Попов, 01.03.2018, 16:20

« назад - далее »

Владимир Попов

Доброго дня, нужна помощь  ??? знающих людей. Суть в следующем. Отправляю файл в компании, при первом открытии файла (файл шаблон) компанией, выскакивает окно: введите название компании. Введенные данные в окно, отображаются  в ячейку B1 файла. В последующем, ячейка B1 не изменяется и при повторном открытии файла, данное окно не появляется, так как название компании уже введено ранее. Есть условие, если компания не введет название в окно при первом запуске, данные в файл не вносятся.

boa

файл-пример, согласно пункту 2 правил форум, помог бы с решением вопроса
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Владимир Попов

#2
Цитата: boa от 02.03.2018, 02:17
файл-пример, согласно пункту 2 правил форум, помог бы с решением вопроса

Спасибо, за активность

boa

Как вариант, открывать книгу в чтении, если не введено значение "имя компании"
в модуле ThisWorkbook впишите код

Private Sub Workbook_Open()
    Dim Nazvanie$
    Nazvanie = InputBox("Введите название компании:", , Me.Sheets("Service").Range("B1"))
    If Len(Nazvanie) > 0 Then
        Me.Sheets("Service").Range("B1").Value = Nazvanie
    Else
        Me.ChangeFileAccess xlReadOnly
    End If
End Sub
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Владимир Попов

#4
Не нужно бездумно копировать сообщение. Цитата - совсем другое [МОДЕРАТОР]

Не совсем работает как надо, но спасибо. Либо я что-то не то делаю, так как Введите название компании появляется постоянно при открытии файла

boa

Можно добавить проверку если ячейка пустая, то выводить сообщение
if Me.Sheets("Service").Range("B1") = "" then
...
end if
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Владимир Попов

#6
Спасибо за мысль  ???, отредактировал макрос, вот что получилось:
Private Sub Workbook_Open()
Dim StrName As String
If Me.Sheets("Service").Range("B1") = "" Then
Метка:    StrName = InputBox("Введите название компании")
          If StrName = "" Then
          MsgBox "Вы ничего не ввели"
GoTo Метка
End If
Sheets("Service").Range("B1") = StrName
End If
End Sub
Теперь все работает как надо

boa

если без вывода сообщения "Вы ничего не ввели", то можно еще так:

Private Sub Workbook_Open()
    Do While Me.Sheets("Service").Range("B1") = ""
        Me.Sheets("Service").Range("B1") = InputBox("Введите название компании")
    Loop
End Sub
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

vikttur

boa, Do/Loop - цикл. Здесь его применение неоправдано. Достаточно обычного условия в  If

boa

vikttur, а возвращение на метку, это не цикл?
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

vikttur

Прошу прощения, не вник в вопрос. Понял, что достаточно проверки, а нужно, чтобы значение было обязательно записано.