Есть такой кусок кода, который заполняет 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 и естественно вываливается с ошибкой. Есть ли какой-то, ммм... аккуратный вариант записи для подобных ссылок? Или придется для таких "неопознаваемых" элементов принудительно приписывать префикс?
Подскажите, есть ли в VBA возможность передавать фокус на объект при наведении мыши? Например, есть форма, на ней ListBox со списком. Хочу, чтобы при наведении на него курсора, я мог листать список колесом мыши, не активируя предварительно ListBox щелчком.
Читаю документацию и никак не могу понять, можно ли в VBA писать "внешние" функции на подобии, например,
Код
void functionName() {
}
и
Код
int functionName() {
}
в "плюсах"?
Порой в коде попадаются одинаковые куски, хотелось бы это дело оптимизировать. Попробовал запихнуть кусок кода в отдельный модуль, но не понимаю, как к нему обращаться, да может это и невозможно вовсе.
Допустим, в первом столбце имеется перечень литературных произведений:
роман "Преступление и наказание" поэма "Евгений Онегин" пьеса "Вишневый сад" и т.д.
Хочу по нажатию кнопки получить первое название (без кавычек и всего лишнего) в ячейке, к примеру, 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, не работает. Почему? Как мне отрезать последнюю кавычку?
Знаю, что тема не новая, но никак не могу решить проблему. Есть код:
Код
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. Только формулы. Используемые диапазоны не фиксированы по размеру. Искал на просторах сети решение, но что-то ничего вразумительного не нашел.
Добрый день. Ситуация такая. Имеется созданный в 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)? Потому что для дальнейшей работы необходимо перейти на него.
Здравствуйте. Прошу подсказать решение. Необходимо написать макрос, который бы форматировал ячейку по условиям других ячеек в строке.
Если можно, покажите два решения: 1) изменить форматирование и содержание ячейки по простому условию - ячейки в строке заполнены или нет, 2) если в ячейках указаные конкретные значения. Естественно, речь идет не о всей строке, а об ограниченном диапазоне. Пример во вложении. Я так понимаю, это нужно делать через команду INTERSECT, но не могу с ней разобраться.
Честно искал похожую тему, но не смог найти. MSO 2010
Здравствуйте. Подниму тему, которая встречается на многих форумах, посвященных Excel. Я ищу решение для создания html-файлов на основе электронной таблицы. Задача состоит в следующем: необходимо, чтобы скрипт (макрос, какой-нибудь парсер) брал исходный файл с таблицей, "выдергивал" из нее определенные столбцы и на основании пользовательской разметки (стилях) генерировал html. Встроенная функция с сохранение веб-страницы не подходит, так как создает что-то невнятное с кучей "мусора" в исходном коде. Для примера выкладываю два файла: исходный xls и желаемый результат в html. MSO 2003!
Добрый вечер, господа. Я столкнулся с проблемой, которую не могу решить. Есть файл, на первом листе которого находится некий список со значениями, а на втором - выпадающее меню, сформированное функцией проверка на основании этого списка. И все бы хорошо, но программа переносит абсолютно все значения из этого списка как есть. Мне же нужно, чтобы там оставались только уникальные записи (нет, я не могу оставить только нужные записи в основном списке, они появляются по мере поступления и часто повторяются). Можно ли это как-то реализовать?
И второе: хочется упорядочить записи в выпадающем списке по алфавиту (нет, я не могу упорядочить их в исходных данных). В общем, должно получиться нечто подобное списку, который формируется при автофильтре. Есть ли решения указанных проблем? Если они появлялись на сайте, дайте ссылку. Я не нашел. И гугл мне ничего путного не сказал. Используется MS Excel 2003