Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Run-time error '1004' Ячейка или диаграмма, которую вы пытаетесь изменить, находится на защищенном листе.
 
Здравствуйте.
Два листа книги защищены от внесения изменений вручную, но не для макросов.
Использованный код.
Код
Private Sub Workbook_Open()
Dim Arr, sSh
Arr = Array("Лист1", "Лист2")
For Each sSh In Arr
Protect_for_User_Non_for_VBA Me.Sheets(sSh)
Next
End Sub
Sub Protect_for_User_Non_for_VBA(wsSh As Worksheet)
wsSh.Protect Password:="1111", AllowFiltering:=True, UserInterfaceOnly:=True
End Sub

Все работало замечательно, но в какой-то момент стало выдавать ошибку (см. фото). В код изменения не вносились.
Может кто сталкивался с таким?
Изменено: comment.imho - 19.12.2022 06:06:48
Создание папки, переименование файла, перемещение переименованного файлав в созданную папку
 
Здравствуйте.
Помогите разобраться с  ошибкой в пути куда должен попасть переименованный файл.
В начале создаем папку (успешно). Например получим папку с именем "100"
Код
Dim nFolder As Object
Set nFolder = CreateObject("Scripting.FileSystemObject")
With nFolder
.CreateFolder ("D:\" & Cells(iLastRow, 1))
For i = 1 To 1
Next
End With
Далее переименовываем файл (успешно)
Код
Dim objFSO As Object, objFile As Object
Dim sFileName12 As String, sNewFileName12 As String
sFileName12 = UserForm1.TextBox12.Text
sNewFileName12 = iLastRow - 2 & "KP.pdf"
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(sFileName12) = False Then
MsgBox "Такого файла не существует", vbCritical, "Внимание"
Exit Sub
End If
Set objFile = objFSO.GetFile(sFileName12)
objFile.Name = sNewFileName12
MsgBox "Файл переименован", vbInformation, "Сообщение"
Далее перемещаем переименованный файл в ранее созданную папку (ругается на путь)
Код
Dim sNewFolderName12 As String
sFileName12 = "D:\" & sNewFileName12
sNewFolderName12 = nFolder  ' адрес куда перемещать - см. фото ошибки (во вложении)
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(sFileName12) = False Then
MsgBox "Такого файла не существует", vbCritical, "Внимание"
Exit Sub
End If
Set objFile = objFSO.GetFile(sFileName12)
objFile.Move sNewFolderName12
MsgBox "Файл перемещен", vbInformation, "Сообщение"

Если вместо nFolder прописать прямой путь "D:\100\" то все работает.
Изменено: comment.imho - 18.12.2022 16:37:46
Сравнить дату в ячейках с актуальной датой при открытии книги
 
Здравствуйте.
Помогите доработать код для сравнения дат содержащихся в ячейках 5-го столбца каждой строки с актуальной датой.
Если дата в какой либо ячейке старше актуальной, то строка содержащая такую ячейку выделятся.
Код
Private Sub Workbook_Open()
Dim iLastRow As Long
Dim i As Integer
With Sheet("Пример")
iLastRow = .Cells(Rows.Count, 5).End(xlDown).Row
For i = 3 To iLastRow
If .Cells(i, 5).Value <= Date Then
.Range("A" & i & ":G" & i).Interior.Color = RGB(255, 225, 225)
End If
End With
End Sub
Изменено: comment.imho - 18.12.2022 10:27:50
Преобразование текста в гиперссылку
 
Здравствуйте.
В форме есть 2 текст бокса. В первый вписывается Название, во второе попадает путь к файлу (выбирается по нажатию кнопки справа текст бокса).

Как сделать что бы при нажатии кнопки Добавить  в ячейку попадал текст из первого текст бокса и являлся бы гиперссылкой из второго.

Сейчас код такой:
Код
Private Sub CommandButton1_Click()
With Worksheets("Лист1")
    i = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
    .Cells(i, 1) = UserForm1.TextBox1.Value
    .Cells(i, 2) = UserForm1.TextBox2.Value
End With
'Очистка формы для дальнейшего ввода данных
Me.TextBox1 = ""
Me.TextBox1.BackColor = &H80000005
Me.TextBox2 = ""
Me.TextBox2.BackColor = &H80000005
End Sub

Private Sub UserForm_Initialize()
     With TextBox2 'кнопка для доп информации
        .DropButtonStyle = fmDropButtonStyleReduce  'вид кнопки
        .ShowDropButtonWhen = fmShowDropButtonWhenAlways    'показывать кнопку
     End With
End Sub

Private Sub TextBox2_DropButtonClick()
    With Application.FileDialog(msoFileDialogFilePicker)
        .Filters.Clear
        .Filters.Add "PDF files", "*.pdf*"
        .AllowMultiSelect = False
        .InitialFileName = ThisWorkbook.Path
        If .Show = 0 Then Exit Sub
        TextBox2 = .SelectedItems(1)
    End With
End Sub
Изменено: comment.imho - 15.12.2022 16:21:55
При двойном клике в ячейке запись любого значения в другую ячейку этой же строки.
 
Здравствуйте. Прошу помощи завершить решение.
При двойном клике любой ячейки в строке выводится диалог MsgBox. При нажатии "Да" в ячейку F этой же строки записать любое значение (текст).
Например. Если клик по В4, то записать в F4. Если клик по Е10, то записать в F10 и т.д.
Изменено: comment.imho - 11.12.2022 12:55:43
Несоответствие размеров UserForm и textbox (и др) помещенных в него
 
Здравствуйте.
Пожалуйста, объясните мне почему при заданной ширине UserForm = 100 при вставке в нее TextBox шириной 100 и отступом слева 0, почему этот TextBox не помещается в UserForm?
Где прочесть как правильно отсчитывать координаты, учитывать или нет толщину рамки окна формы и где тогда ее узнать?
Спасибо.
Сверка текста из textbox с паролем из текущей учетной записи пользователя Windows.
 
Здравствуйте.
В данной теме описан способ смены пароля текущей учетной записи пользователя Windows со следующим кодом:
Код
Dim WshNetwork As Object, sCompName As String, oUser As Object, sName
Set WshNetwork = CreateObject("WScript.Network")
sCompName = WshNetwork.ComputerName  'получаем имя компа
sName = WshNetwork.UserName          'получаем имя текущего пользователя
On Error Resume Next
'sName - имя пользователя на компьюторе
Set oUser = WshNetwork.GetObject("WinNT://" & sCompName & "/" & sName)
oUser.ChangePassword PassOld, "2584"
'ввод нового пароля
oUser.SetInfo
Как (если возможно) его исправить под возможность сверить введенное значение в textbox1 с текущим паролем учетной записи пользователя Windows?
Критика принимается. Помощь приветствуется.
Спасибо.
Изменено: comment.imho - 01.05.2022 08:42:02
Частичный вывод из TextBox в MsgBox
 
Здравствуйте.
В TextBox1 записано ФИО, например "Иванов Иван Иванович".
Как вывести в MsgBox только "Иван Иванович".
Код
Private Sub CommandButton1_Click()
    MsgBox UserForm1.TextBox1.Text, 64, "Сообщение"
End Sub
Спасибо.
Изменено: comment.imho - 26.04.2022 22:05:51
Вывод "полного имени пользователя" ПК в textbox
 
Здравствуйте.
При открытии формы"Полное Имя пользователя" ПК должно заносится в textbox1.
Данный код работает на windowsXP с office2010, windows7 с office2019.
На windows11 c office2021 и windows11 с office2010 не работает. При открытии формы выпадает ошибка (см. фото).
Хочу понять это проблема в коде или в настройках моего ПК.
Мне кажется в коде, но как ее исправить?
Код
Private Sub UserForm_Initialize()
    Dim CO_, GO_, DN_
        Set CO_ = CreateObject("ADSystemInfo")
        Set GO_ = GetObject("LDAP://" & CO_.UserName)
        DN_ = GO_.DisplayName
        UserForm1.TextBox1 = DN_
End Sub
Изменено: comment.imho - 26.04.2022 18:38:34
Непонятное поведение listbox
 
Здравствуйте.
Есть две формы. В первой: TextBox1 с DropButton. Во второй: ListBox1 с перечнем позиций.
При нажатии TextBox1_DropButton открывается форма 2 и при этом случайным образом выбирается или одна позиция или несколько, иногда ничего не выбирается. Это всегда рандомно.
Из ListBox1 выбранные позиции вставляются в TextBox1.
Почему это происходит и как это исправить?
Изменено: comment.imho - 25.04.2022 21:17:04
Изменение цвета фона textbox при получении им фокуса
 
Здравствуйте.
Изменение цвета фона textbox при получении им фокуса
Код
Private Sub TextBox1_Change()
    If Me.TextBox1.SetFocus = True Then
        Me.TextBox1.BackColor = vbRed
    End If
End Sub
В чем ошибка?
Удаление последних символов из textbox если это пробел или знак препинания
 
Здравствуйте. Просьба помочь с решением задачи.
В textbox1 имеется например значение "текст; ". Как по нажатию кнопки commandbutton1 удалить последние символы если это ";" или " " (пробел)?
Спасибо.
Вывод выбранных значений из listbox в textbox
 
Здравствуйте.
Прошу откликнуться кто поможет делом а не советом.
В userform1 в textbox1 нужно вставить выбранные значения (одно или несколько) из listbox1, который в свою очередь находится в userform2.
Спасибо.
Выборочные вычисления по нескольким критериям, Выборочные вычисления по нескольким критериям
 
Здравствуйте.
С помощью функции "СУММЕСЛИМН" ищу Сумму всех заказов (столбец "В") по условию 1 "Посредник" (столбец "С") и при условии 2 и 3 (столбец "А") в диапазоне дат (начальная и финишная дата указываются в ячейках F2 и F3 соответственно).
Код
=СУММЕСЛИМН(B2:B87;C2:C87;"Посредник";A2:A87;"<="&F2;A2:A87;">="&F3)
В результате "ноль". В чем может быть ошибка?
Спасибо.
Выборочные вычисления по нескольким критериям
 
удалить
Изменено: comment.imho - 03.04.2022 08:48:57
Закрыть книгу если версия excel старше 2010.
 
Здравствуйте.
Возможно ли при запуске книги определять версию excel и если она 2007 или более ранняя выводить сообщение и автоматически закрывать книгу?
По возможности с примером рабочего кода.
Изменено: comment.imho - 20.02.2022 20:18:43
Сравнение строк в таблице с данными вводимыми через форму
 
Здравствуйте.
Есть форма ввода данных в таблицу.
Как перед добавлением проверить введены ли уже эти данные в таблицу?
Проверка на все поля кроме (CheckBox1, TextBox4, TextBox5). В случае полного совпадения вывести сообщение, форму не закрывать, данные не добавлять в таблицу, выделить строку с найденными значениями.
Спасибо.
Изменено: comment.imho - 19.02.2022 14:17:13 (Снят пароль с листа)
Макрос формирования диапазона сводной таблицы
 
Здравствуйте.
Подскажите как изменить статичный диапазон значений для сводной таблицы, как в приведенном коде, на динамичный: Лист1! столбцы 1:12 до последней заполненной строки
Код
Sub Сводная()
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Лист1!R2C1:R21C12", Version:=7).CreatePivotTable TableDestination:= _
        "Лист2!R1C1", TableName:="Пример", DefaultVersion:=7
End Sub

А в таком варианте выдает ошибку (см. фото)
Код
Sub Сводная()
    iST = Cells(Rows.Count, 1).End(xlUp).Row
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "Лист1!R1C1:R" & iST & "C12", Version:=7).CreatePivotTable TableDestination:= _
    "Лист2!R1C1", TableName:="Пример", DefaultVersion:=7
End Sub
Изменено: comment.imho - 13.02.2022 15:00:48
Ввод числовых значений в таблицу через форму
 
Здравствуйте.
С помощью формы через TextBox1 и TextBox2 вносятся числовые значения. В TextBox2 значения вводятся только через запятую (не более 2 знаков после запятой). В таблице они определяются как текст. Как сделать что бы формат этих значений стал числовым? Это нужно для дальнейшей обработки через сводную таблицу (сумма значений).
Упростить код подсветки пустого textbox
 
Здравствуйте.
В форме есть множество TextBox'ов через которые вводятся значения в таблицу. Если TextBox не заполнен то выводится сообщение и подсвечивается пустой TextBox. Код подсветки довольно громоздкий. Как его можно упростить?
Скрытый текст
Изменено: comment.imho - 13.02.2022 09:15:39
Сравнение значений столбцов на разных листах и копирование уникальных значений
 
Код
Sub Сравнить()
    LR = Worksheets("Лист2").Cells(Rows.Count, 1).End(xlUp).Row + 1
    For i = 3 To Worksheets("Лист1").Cells(Rows.Count, 8).End(xlUp).Row
    
    E = True
        For j = 2 To Worksheets("Лист2").Cells(Rows.Count, 1).End(xlUp).Row
            If Worksheets("Лист2").Cells(j, 1).Value = Worksheets("Лист1").Cells(i, 8).Value Then E = False: Exit For
        Next j
    If E Then Worksheets("Лист2").Cells(LR, 1).Value = Worksheets("Лист1").Cells(i, 8).Value: LR = LR + 1
    Next i
End Sub
Код сравнивает столбец 1 на "Лист2" со столбцом 8 на "Лист1". При уникальном значении в ячейке столбца 8 "Лист1" значение копируется в столбец 1 "Лист2" в последнюю незанятую строку.
Вопрос. Как при таких же условиях для найденной уникальной ячейки столбца 8 "Лист1" копировать и соседние ячейки (столбцов 9 и 10) и вставлять их на "Лист2" в последнюю незанятую строку?
Изменено: comment.imho - 07.02.2022 18:47:09
Ограничения на ввод диапазона чисел в маске (Excel 2016 и новее)
 
Код
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   If Not IsNumeric(Chr$(KeyAscii)) Then
       KeyAscii = 0
   Else
       t = Me.TextBox2
       If t Like "##" Or t Like "##.##" Then t = t & "."
       Me.TextBox2 = t
   End If
End Sub
 
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
   On Local Error Resume Next
   t = Me.TextBox2
   If KeyCode = 8 And (Right(t, 1) = "." Or Right(t, 1) = " ") Then t = Left$(t, Len(t) - 2): KeyCode = 0
   If KeyCode <> 8 And KeyCode <> Asc(vbTab) And Len(t) >= 10 Then KeyCode = 0
   Me.TextBox2 = t
End Sub
Как доработать код чтобы для маски "##.##.####" в первую часть можно было вписать число от 01 до 31, во вторую: 01 - 12, в третью: 2000 - текущий год?
Заполнить ComboBox значениями из динамического диапазона
 
Здравствуйте. Есть такой код.
Код
Private Sub UserForm_Initialize()

ComboBox1.RowSource = "Справочник! A2:A1000"

With UserForm1.ComboBox2
  .AddItem "1"
  .AddItem "2"
  .AddItem "3"
  .AddItem "4"
End With

End Sub
Как для ComboBox1 задать диапазон с А2 до последней занятой строки?

Спасибо.
Автоматическая подстановка значений в поля формы из таблицы
 
Здравствуйте.

Есть таблица учета договоров с колонками: тип контрагента, УНП контрагента, название контрагента.
Данные в таблицу вносятся через форму используя combobox для каждого из этих трех параметров.

Как сделать так что бы при вводе в форму УНП контрагента при наличии его в таблице автоматически подставлялись два других его значения (тип и название) в соответствующие поля формы?
Изменено: comment.imho - 04.02.2022 10:01:13 (заменен файл)
Вставка маски для даты в текстовое поле (TextBox)
 
Здравствуйте.

Поле для ввода даты в форме создано как текстовое поле (TextBox2). Можно ли в это поле встроить маску даты (дд.мм.гггг) для удобства ввода.
DatePicker не интересен. Он не у всех сейчас есть, да и ввод даты с клавиатуры мне предпочтительнее.
Внесение изменений в таблицу только через форму VBA
 
Здравствуйте.
Создан журнал учета договоров. Заполнение данных происходит через форму.
Можно ли запретить редактирование таблицы напрямую (ввод данных в ячейки, удаление - в идеале любые изменения на листе), но при этом оставить возможность внесения новых данных через форму?
Я особо не разбираюсь в VBA, потому прошу внести изменения сразу в файл, если не сложно.
Спасибо.
Изменено: comment.imho - 03.02.2022 19:49:50
Найти дубликаты строк..., Найти дубликаты строк по 6 столбцам и при совпадении суммировать значения из 7 столбца
 
Здравствуйте.
Есть таблица с 7-ю столбцами. Задача сравнить строки по 6-ти столбцам и при полном совпадении объединить их, при этом суммировать значения 7-ого столбца. Как такое воплотить? (желательно без сторонних дополнений).
Спасибо.
Страницы: 1
Наверх