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

Страницы: 1
VBA строковая функция Абракадабра
 
Приветствую,

Собственно, возник такой вопрос - как исправлять абракадабру в строках? В стандартных строковых функциях такого нет, на сколько я понял...
зы. В моем понимании, абракадабра, это когда вводишь русское слово, в английской раскладке (или наоборот) и получается что то вроде такого: Gkfytnf "rctkm
вместо: Планета Эксель

Прошу вашей помощи. Мой мозг пока это не может осилить:)

Файл с демо-данными прикрепил. Заранее, благодарю
Изменено: prostor - 22.08.2017 23:51:21
VBA Worksheet Change вместо ChekBox
 
Приветствую,

Это продолжение темы про чекбоксы, так сказать альтернативное решение, если надо чекать много-много строк.
---
Собственно, заюзал кое-как Worksheet Change, работает почти как надо, но кода нагородил, кажись много, лишнего:) И еще вылазит ошибка, если на листе выделить заполненный диапазон и удалить содержимое ячеек.

Буду благодарен за исправления и улучшения. Уверен, можно как-то изящней все оформить:)

Файл приложил..
---
Рабочие колонки E, F, G. Жмем циферку 1 на клавиатуре.
Изменено: prostor - 19.08.2017 21:45:10
VBA добавить чек-бокс на лист и сохранить его значение в массив
 
Здравствуйте,

Может ли кто помочь с такой не хитрой задачей: из модуля хочу добавить на лист (с привязкой к ячейке) чек-бокс и далее читать его состояние (true/false) и сохранять в массив.
И что лучше выбрать Формы или ActiveX тоже не понимаю, хоть и гуглил. Не доходит до меня...

Демо-файлик прикрепил.
Заранее, благодарю.
VBA Маркировка элементов в массиве (или словаре, или коллекции)
 
Приветствую,

На входе имею два массива ArrBase() и ArrMarker(), оба массива - строки.
_ ArrBase() содержит 100500 номенклатур;
_ ArrMarker() содержит 3 маркера.
_ InStr() делаю поиск подстроки ArrMarker в ArrBase, если больше 0 то надо как то ставить метку ArrMarker....

Например:
'.....
ArrBase(0, 0) = "Велосипед Apollo Aspire 20"
ArrBase(0, 1) = "Велосипед Apollo Aspire 30"
ArrBase(0, 2) = "Велосипед Apollo Aspire 40"
ArrBase(0, 3) = "Велосипед Ghost MISS 1100"
ArrBase(0, 4) = "Велосипед Ghost MISS 1200"
ArrBase(0, 5) = "Велосипед Ghost MISS 1300"
ArrBase(0, 6) = "Велосипед Orbea MX 10"
ArrBase(0, 7) = "Велосипед Orbea MX 20"
'....
ArrMarker(0, 0) = "Apollo"
ArrMarker(0, 1) = "Ghost"
ArrMarker(0, 2) = "Orbea"

Вопрос в том, что не могу понять какой Объект лучше использовать: Массивы, Коллекции или Словари, так, что бы получить две колонки : "Велосипед Apollo Aspire 20" | "Apollo"
При этом, не хотелось бы выводить это все на лист в текущей книге, а сразу сохранить в CSV/XML (типа готовая структура).

Направьте плз, а то вообще сбился с пути, в голове каша :) Благодарю
Изменено: prostor - 17.06.2017 02:12:44 (UPD: Добавил файл)
VBA из Recordset в Одномерный Массив
 
Приветствую,

Вот думал что разобрался с массивами, все понял. Но словил засаду такого типа:
Из рекордсета передаю в массив данные - массив получается двумерный - т.к. колонок с данными одна, можно и одномерный массив юзать и еще границы массива можно без доп параметра указывать, что удобней.

А вот не получается у меня сделать его одномерным хоть тресни! Что не так делаю?
Может надо явно объявлять массив одномерным? Только он должен быть динамическим, ибо я не знаю его размерность вначале.
Код
Dim MyArr As Variant ' Объявляю массив
...
MyArr = RS.GetRows ' Наполняю массив данными из Рекордсет
...
MyArr(0, i) 'Использую одну колонку двумерного массива - а проще ведь, что бы он сразу был одномерный:)
VBA Уникальные строки из массива
 
Приветствую,

Не получается доработать код макроса под себя, может кто-то из опытных поможет в этом деле!?))

Исходная задача такова: На входе уже есть массив данных из которого надо выбрать уникальные значения.

В процессе, нашел на просторах инета нужный код, но (для меня) проблема в том, что нужная функция принимает в параметре переменную-диапазон, а мне надо передавать i-й элемент массива. Вот сам код макросса:

Код
'Массив  FirstArr() определяется выше по коду и содержит 100 элементов

 Sub UnikArr()
 
    Dim MyData As Range: Set MyData = Range([A1], Range("A" & Rows.Count).End(xlUp))
    Dim ArrRng() As Variant

    ArrRng = UniqueValuesFromArray(MyData.Value, 1) 'Тут нужен цикл For и вместо MyData.Value, 1 подставить FirstArr(0, i)

    Range("B1").Resize(UBound(ArrRng)).Value = ArrRng


End Sub

Function UniqueValuesFromArray(ByVal ArrTmp, ByVal col As Long) As Variant
Dim i As Long


    If Not IsArray(ArrTmp) Then MsgBox "Это не массив!", vbCritical: Exit Function
    If col > UBound(ArrTmp, 2) Then MsgBox "Нет такого столбца в массиве!", vbCritical: Exit Function
    If col < LBound(ArrTmp, 2) Then MsgBox "Нет такого столбца в массиве!", vbCritical: Exit Function

    On Error Resume Next: Dim coll As New Collection, txt$
    
    For i = LBound(ArrTmp) To UBound(ArrTmp)
        txt$ = Trim(ArrTmp(i, col)): coll.Add txt$, txt$
    Next i
    ReDim MyArr(1 To coll.Count, 1 To 1)
    For i = 1 To coll.Count: MyArr(i, 1) = coll(i): Next i
    UniqueValuesFromArray = MyArr
End Function



Заранее, благодарю
Изменено: prostor - 10.06.2017 13:19:01
VBA RegExp - два и больше пробелов
 
Приветствую,

Есть простенькая задачка, которую ну никак не могу осилить, прошу помощи опытного ВБАшника:)
Есть строка в массиве, слова в которой разделены пробелами. В отдельных случаях встречается два и больше пробела. Конечное количество пробелов никогда не известно. Надо заменить на один пробел.
Можно ли это сделать регуляркой и как выглядит такое выражение? Предполагаю, что придется использовать условие IF, но идеально было бы без условия IF, если так возможно.

Вот до чего я дошел сам, дальше не получается:
Код
    RE.Global = True 'Все что найдется в строке, не только первое соответствие
    RE.IgnoreCase = False
    RE.Pattern = "  " 'Найти двойной пробел

    For i = 0 To 100
        Set MyStr = .Replace(varArr(0, i), "") 'Заменить двойной пробел на Ничто 
        varArr(0, i) = MyStr 'Перезаписать строку в массиве
    Next i
Заранее, Благодарю
Страницы: 1
Наверх