Задать вопрос
  • Как с помощью VBA открыть файл с динамическим именем?

    @ti_zh_vrach Автор вопроса
    Бывший аптекарь.
    Спустя годы я познал истину.

    Надо валидировать имя файла через оператор Like:
    Dim my_file As Worksheet, file_name As String
    
    file_name = "important file _some_symbols_ .xlsx"
    
    If file_name Like "important file*.xlsx" Or file_name Like "important file*.xls" Then
        Set my_file = Workbooks.Open(Filename:=ThisWorkbook.Path & file_name).Sheets(1)
        'do anything
        Workbooks(file_name).Close SaveChanges:=False
    End IF

    Подробно тут.
    Ответ написан
    Комментировать
  • Как в коде отменить перенос текста в ячейке, и как задавать ширину определенного столбца?

    @ti_zh_vrach
    Бывший аптекарь.
    Кажется, проблема в обращении к листу. Попробуйте написать так:
    Лист1.Range("A1").WrapText = False
    "Лист1" - это не то, которое под таблицей, а которое видно только в редакторе кода:
    картинка
    614eca4e1a7a9850237200.png

    Его можно изменить. А ещё лучше, попробуйте делать вот так:
    Лист1.Cells(1,  1).WrapText = False 'в данном случае Cells(1,  1) = Range("A1")


    Изменить ширину можно так:
    Лист1.Columns(4).ColumnWidth = 8 '4 - номер колонки D.

    8 - ширина, которая отображается тут:
    картинка
    614ecff583fb1679855225.jpeg
    Ответ написан
    Комментировать
  • Почему перестали приходить письма на тестовый ящик?

    @ti_zh_vrach Автор вопроса
    Бывший аптекарь.
    Причина оказалась на стороне хостера. Когда рассылка переезжала на ящик другого хостера выяснилось, что у того есть ограничение на отправку писем в минуту. Ну и блок. А уведомления не было.
    Ответ написан
  • Как в VBA сделать проверку на наличие значения в списке?

    @ti_zh_vrach Автор вопроса
    Бывший аптекарь.
    Нашёл обходное решение.
    If data_base.Cells(row_db, 6).Value <> "энач1" Then If data_base.Cells(row_db, 6).Value <> "энач2" Then Err.Raise 1013, "another_sub", "неверные данные"

    Есть ещё вариант с Collections, который до конца не проработал. Но кажется, он тоже сведётся к двойному If. Или к перебору в цикле.
    Вопрос в заголовке открыт.
    Ответ написан
    Комментировать
  • Почему не работает часть кода?

    @ti_zh_vrach Автор вопроса
    Бывший аптекарь.
    UPD2: Решение найдено. В abc.Cells(row_abc, 1) = district.Cells(row_dist, 6) приходят данные разных типов: string и integer соответственно. В соответствующих ячейках Excel тип данных указан "Текстовый". Почему всё равно приходят разные типы - не знаю. В дебагере сразу не обратил внимания на отсутствие кавычек в district. Использовал Int() в обеих частях равенства (Str() почему-то не помог).
    Ответ написан
    Комментировать