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

Страницы: 1
VBA: многоуровневая ссылка на элемент формы
 
Есть такой кусок кода, который заполняет ListBox, находящийся на форме, определенными данными:
Код
Sub Main()

     Dim i As Integer
     Dim j As Integer

     i = 0

     With MainUserForm
          With .ListBox
               If .TextBox.Value = "" Then
                    .Clear
               Else: For Each Item In ItemsRange
                    For Each Number In NumbersRange
                         If Item = Number Then
                              .AddItem
                              For j = 1 To .ColumnCount
                                   .List(i, j - 1) = Item.Offset(0, j - 5)
                              Next
                              .List(i, 4) = Item
                              i = i + 1
                              j = j + 1
                         End If
                    Next
               Next
               End If
          End With
     End With

End Sub

Находится он в модуле. Для того, чтобы содержимое модуля получало доступ к элементам формы, необходимо дать ссылку на эту форму в самом коде. Проблема в том, что при попытке его выполнения программа не может определить, к чему относится элемент в 10-й строке (.TextBox.Value). Она воспринимает текстовое поле как метод ListBox и естественно вываливается с ошибкой. Есть ли какой-то, ммм... аккуратный вариант записи для подобных ссылок? Или придется для таких "неопознаваемых" элементов принудительно приписывать префикс?

Код
MainUserForm.TextBox.Value
Изменено: somebox - 01.07.2019 19:16:54
VBA: перевод фокуса на объекты формы при наведении курсора мыши
 
Добрый вечер.

Подскажите, есть ли в VBA возможность передавать фокус на объект при наведении мыши? Например, есть форма, на ней ListBox со списком. Хочу, чтобы при наведении на него курсора, я мог листать список колесом мыши, не активируя предварительно ListBox щелчком.
Изменено: somebox - 26.06.2019 16:17:52
Вызвать макросом функцию или процедуру
 
Читаю документацию и никак не могу понять, можно ли в VBA писать "внешние" функции на подобии, например,
Код
void functionName() {
}
и
Код
int functionName() {
}
в "плюсах"?

Порой в коде попадаются одинаковые куски, хотелось бы это дело оптимизировать. Попробовал запихнуть кусок кода в отдельный модуль, но не понимаю, как к нему обращаться, да может это и невозможно вовсе.
VBA: вытащить часть строки, Mid, Len, InStr
 
Допустим, в первом столбце имеется перечень литературных произведений:

роман "Преступление и наказание"
поэма "Евгений Онегин"
пьеса "Вишневый сад"
и т.д.

Хочу по нажатию кнопки получить первое название (без кавычек и всего лишнего) в ячейке, к примеру, B1. Написал для модуля такой код:
Код
Sub PickAName_Click()
     Dim CleanName As String
     Dim SourceCell As Range
     Dim NameCell As Range
     Set SourceCell = ActiveWorkbook.Sheets("Лист1").Cells(1, 1)
     CleanName = Mid(SourceCell, InStr(SourceCell, """") + 1, Len(SourceCell) - 1)
     Set NameCell = ActiveWorkbook.Sheets("Лист1").Cells(1, 2)
     NameCell.Value = CleanName
Sub
Левую часть содержания он отрезает, а правую (вторую кавычку) - нет. В результате чего я получаю Преступление и наказание"

Почему-то уменьшение на единицу в сочетании с Len, находящегося в составе Mid, не работает. Почему? Как мне отрезать последнюю кавычку?
Изменено: somebox - 11.06.2019 10:52:58
VBA: использование массива без последнего значения
 
Хотел поинтересоваться, можно ли использовать массив без последнего (или любого другого) значения?

Например, в коде есть массив:
Код
MyList = Array("Маша", "Лена", "Петя", "Саша")

Есть комбобокс, в свойствах которого указано следующее:
Код
With ComboBox
     .List = MyList
     .Value = MyList(0)
End With

Можно ли как-то минимумом телодвижений убрать из списка, к примеру, Сашу?
VBA: копирование значения ячеек по условию
 
Знаю, что тема не новая, но никак не могу решить проблему. Есть код:
Код
Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim country As Variant
    Dim countryList As Range
    i = 0
    country = TextBox1.Value
    Set countryList = Worksheets("Лист2").Range("C1").End(xlDown)
    For Each Cell In countryList
        If Cell.Value = country Then
            Cell.Offset(0, -2).Value = Worksheets("Лист1").Cells(1 + i, 1).Value
            Cell.Offset(0, -1).Value = Worksheets("Лист1").Cells(1 + i, 2).Value
        End If
        i = i + 1
    Next
End Sub
Нужно, чтобы по условию введенному в поле окна, открывающегося по нажатию кнопки, программа копировала значение определенных ячеек со второго листа на первый. Причем не ячейки с самим значением, а соседние. То есть делала выборку. Вроде ничего сложного, но почему-то у меня ничего не выходит. Программа даже не ругается, просто молчит.
Общий список из двух других
 
Добрый вечер. Задам простую на первый взгляд задачку. Необходимо на листе 1 сформировать общий список из данных с листов 2 и 3. Просто все имена подряд как они представлены на этих листах. При этом нельзя использовать встроенные функции Экселя и VBA. Только формулы. Используемые диапазоны не фиксированы по размеру. Искал на просторах сети решение, но что-то ничего вразумительного не нашел.

Да, речь идет о MSO 2007-2013.
Проверка данных: СЦЕПИТЬ диапазон по условию, аналог функции в LibreOffice
 
Добрый день.
Ситуация такая. Имеется созданный в LibreOffice файл, на одном листе которого раположена некая база, а на другой подтягиваются значения из него. Но подтягиваются они не просто так, а по условию, причем полученные значения сцепляются и загоняются в выпадающий список.
Лист 1


Лист 2



Для расчетов в проверке используется такая формула:
Код
IF(Лист2.$C$2:$C$10=A2;CONCATENATE(Лист2.$A$2:$A$10;" - ";Лист2.$B$2:$B$10);"Выбрать из списка")

Правда, есть одно НО: в LO при использовании проверки выбирается пункт "диапазон ячеек", которого нет в Excel. Если попытаться вставить приведенную выше формулу просто в "список" (в Excel), то получится ошибка вычислений.

Собственно, вопрос: можно ли реализовать подобное в Excel (только формулами, без VBA)? Потому что для дальнейшей работы необходимо перейти на него.

MSO2010
Изменение форматирования и содержания ячеек по условию других, Ячейки находятся в одной строке
 
Здравствуйте. Прошу подсказать решение.
Необходимо написать макрос, который бы форматировал ячейку по условиям других ячеек в строке.

Если можно, покажите два решения: 1) изменить форматирование и содержание ячейки по простому условию - ячейки в строке заполнены или нет, 2) если в ячейках указаные конкретные значения.
Естественно, речь идет не о всей строке, а об ограниченном диапазоне. Пример во вложении. Я так понимаю, это нужно делать через команду INTERSECT, но не могу с ней разобраться.

Честно искал похожую тему, но не смог найти.
MSO 2010
Изменено: somebox - 31.08.2014 16:24:17
[ Закрыто] XLS в HTML: создание файла с выборочными данными, с пользовательскими настройками и стилями
 
Здравствуйте. Подниму тему, которая встречается на многих форумах, посвященных Excel. Я ищу решение для создания html-файлов на основе электронной таблицы. Задача состоит в следующем: необходимо, чтобы скрипт (макрос, какой-нибудь парсер) брал исходный файл с таблицей, "выдергивал" из нее определенные столбцы и на основании пользовательской разметки (стилях) генерировал html.
Встроенная функция с сохранение веб-страницы не подходит, так как создает что-то невнятное  с кучей "мусора" в исходном коде.
Для примера выкладываю два файла: исходный xls и желаемый результат в html.
MSO 2003!

HTML-файл почему-то не прикрепляется. Залил на обменник:
http://webfile.ru/b5e3d5de4d3517984b277bea1b4648c9
XLS тоже почему-то не прикрепляется. :(
https://www.dropbox.com/s/u07aoymppcr0sm0/sample.xls
Изменено: somebox - 19.04.2014 19:21:47
Проверка данных: сортировка и уникальные записи
 
Добрый вечер, господа. Я столкнулся с проблемой, которую не могу решить.
Есть файл, на первом листе которого находится некий список со значениями, а на втором - выпадающее меню, сформированное функцией проверка на основании этого списка. И все бы хорошо, но программа переносит абсолютно все значения из этого списка как есть. Мне же нужно, чтобы там оставались только уникальные записи (нет, я не могу оставить только нужные записи в основном списке, они появляются по мере поступления и часто повторяются). Можно ли это как-то реализовать?

И второе: хочется упорядочить записи в выпадающем списке по алфавиту (нет, я не могу упорядочить их в исходных данных).
В общем, должно получиться нечто подобное списку, который формируется при автофильтре.
Есть ли решения указанных проблем? Если они появлялись на сайте, дайте ссылку. Я не нашел. И гугл мне ничего путного не сказал.
Используется MS Excel 2003
Изменено: somebox - 03.02.2014 02:18:26
Страницы: 1
Наверх