Страницы: 1
RSS
VBA. Редактировать текст в ячейке
 
Здравствуйте, подскажите пожалуйста, можно ли как-то средствами VBA отредактировать текст в ячейке..может как-нибудь поиск и замена..
Дана строка в ячейке : ОК-1, 3, ПК-4,7,11
Нужно получить: ОК-1, ОК-3, ПК-4, ПК-7, ПК-11

Прошу помощи
 
Код
Function ReformTxt(s As String) As String
    Dim a, i&, j&
    a = Split(Trim(s), ",")
    s = ""
    For i = 0 To UBound(a)
        j = InStr(1, a(i), "-")
        If j > 0 Then
            s = Trim(Left(a(i), j))
            a(i) = s & Trim(Mid(a(i), j + 1))
        Else
            a(i) = s & Trim(a(i))
        End If
    Next
    ReformTxt = Join(a, ", ")
End Function
 
можно с помощью регулярных выражений сделать
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Спасибо
Помогите,пожалуйста, как вот такое вот условие реализовать:
в таблице пример,
есть ячейка, в которой (на рисунке это В5) записаны пункты (они должны быть расшифрованы), и вот в наш комбобокс должны входить только строки с названиями из ячейки В5 из столбца А.

наверное, надо как-то проверять:
если значение ячейки В5 содержит значение ячейки из столбца А, то заносим в комбобокс.
не могу додумкать..
 
umka777_89, Вы в курсе, что макрос в рисунок вставить нельзя?
Прошу почитать Правила форума.
 
Извините пожалуйста...
вот
Изменено: umka777_89 - 06.06.2013 11:24:24
 
Посетители форума, других названий, кроме как "Книга1" и "Пример", не знают... И невдомёк им, что те, кто хочет им помочь, при сохранении файла в папку загрузки, вынуждены КАЖДЫЙ раз придумывать новое имя для сохранения. Неужели так худо с фантазией?
 
только вот что придумалось..
Наверное что-то не то пишу, ткните носом в ошибку?
Dim i&
Const iRow = 65536: iClm = "A"
sn = Лист2.Name
iRws = Sheets(sn).Range(iClm & iRow).End(xlUp).Row
' ComboBox1.ListFillRange = sn & "!" & iClm & "1:" & iClm & iRws


For i = 1 To iRws
If Cells(100, 2).Value Like Cells(i, 1).Value Then

ComboBox1.AddItem Sheets(sn).Cells(i, 1)
End If
Next i

Ничего не происходит...
 
Dim i&
   Const iRow = 65536: iClm = "A"
   sn = Ëèñò2.Name
   iRws = Sheets(sn).Range(iClm & iRow).End(xlUp).Row
 ' ComboBox1.ListFillRange = sn & "!" & iClm & "1:" & iClm & iRws
 
   
   For i = 1 To iRws
   If [B100] Like "*" & Sheets(sn).Cells(i, 1) & "*" Then
   ComboBox1.AddItem i
  End If
 Next i

ошибка в строке ComboBox1.AddItem i
 
umka777_89, специально для кодов существует тег - пользуйтесь им. См. пост #2
 
Юрий М,
Спасибо, буду соблюдать)
Вот что получилось, но каждый раз при выборе из комбобокса, в него добавляются элементы заново, и получается список (1,2,3,1,2,3,1,2,3...).Как сделать чтобы элементы в списке были по одному разу все?
Код
  Dim i&
     Const iRow = 65536: iClm = "A"
     sn = Лист2.Name
     iRws = Sheets(sn).Range(iClm & iRow).End(xlUp).Row
    ' ComboBox1.ListFillRange = sn & "!" & iClm & "1:" & iClm & iRws
  
    For i = 1 To iRws
    'If Cells(100, 2).Value Like Cells(i, 1).Value Then
    ' ComboBox1.AddItem Sheets(sn).Cells(i, 1)
    
    If [B100] Like "*" & Sheets(sn).Cells(i, 1) & "*" Then
    ComboBox1.AddItem Sheets(sn).Cells(i, 1)
    End If
    
    If Sheets(sn).Cells(i, 1) = Me.ComboBox1.Text Then
    Cells(98, 9) = Sheets(sn).Cells(i, 2)
    End If
  Next i
Изменено: umka777_89 - 06.06.2013 15:08:09
 
Сначала его нужно очистить: ComboBox1.Clear
 
Юрий М,
если очищаю в начале, то потом почему то вообще не работает что прописано
Изменено: umka777_89 - 06.06.2013 15:26:35
 
За темой не следил, КомбоБокс не нашёл - разбираться нет времени... Я Вам подсказал, что, если список в КомбоБоксе постоянно пополняется/нарастает (пост #11), то нужно его предварительно очистить.
 
Юрий М,
ну так можно ведь в режиме конструктора посмотреть где комбобокс, я понимаю, про вашу подсказку, просто если очищаю, то второй if не работает
 
Вижу его )) Давайте сначала: какие и где проводятся манипуляции и что должно быть в том или ином случае.
 
Юрий М,
вот там есть ячейка с значениями: vb,rrff, yes, no
я сделала, чтобы в combobox1 были только строки с текстом из ячеек,
а вот в ячейку I98(к нем прикреплен combobox1) нужно чтобы вставлялось значение из листа второго, например выбираем "vb" вставляется "птптngfn"
это как бы работает, если не очищаем combobox1, но тогда при каждом вызове combobox1 в его список снова добавляются строки
если поставить очистку combobox1, то получается что второе условие
Код
If Sheets(sn).Cells(i, 1) = Me.ComboBox1.Text Then
    Cells(98, 9) = Sheets(sn).Cells(i, 2)

не выполняется, вот...
 
Так...)) Выделяю ячейку I98, появляется КомбоБокс. В нём сразу значение rrff, список КомбоБокса пуст. Что я делаю не так?
 
Юрий М,
ааа, это тоже не знаю почему, надо зайти на другой лист потом вернуться на первый
и еще попробуйте в самом редакторе VBA запустить код
 
umka777_89, думаю, что этот несчастный КомбоБокс никому уже неинтересен - не будем загромождать форум. Предлагаю переместиться в Скайп - координаты в профиле.
P.S. Интим не предлагать.
Страницы: 1
Читают тему
Наверх