Найти либо те слова в тексте, в которых есть все буквы определенного слова, либо те, в которых нет ни одной - VBA
Формулировка задачи:
1 - текстовое поле, куда пользователь вводит произвольный текст.
2 - текстовое поле, куда пользователь вводит одно слово.
3 - Вывод в label.
По нажатию кнопки происходит анализ: в лейбл выводит все слова из поля (1), в которых есть все буквы слова, указанного в поле (2). По переключению радио-кнопки выводит все слова, в которых нету ни одной совпадающей буквы. В случае, если не найдено ни одного подходящего слова - вывести соответствующее сообщение ( MsgBox ).
-----------
P.S. Начал изучать бейсик - немного офигел, как тут муторно со строками играться.. За любую помощь буду благодарен.
Решение задачи: «Найти либо те слова в тексте, в которых есть все буквы определенного слова, либо те, в которых нет ни одной»
textual
Листинг программы
Option Explicit Const edn = "ноль один два три четыре пять шесть семь восемь девять" Const ndc = "одиннадцать двенадцать тринадцать четырнадцать пятнадцать шестнадцать семнадцать восемнадцать девятнадцать" Const des = "десять двадцать тридцать сорок пятьдесят шестьдесят семьдесят восемьдесят девяносто" Const sot = "сто двести триста четыреста пятьсот шестьсот семьсот восемьсот девятьсот" Const tsh = "тысяча тысячи тысяч", mln = "миллион миллиона миллионов", mrd = "миллиард миллиарда миллиардов" Const valuteRub = "рубль рубля рублей", valuteKop = "копейка копейки копеек" Dim s$, f&, Fltr$, Kop$ Function SumProp$(ByVal Expression As Double, Optional ByVal val$ = valuteRub, Optional rec&) Const p = " ", z = ", ": Dim s$ If Expression <> Fix(Expression) Then 'для вывода инфы копейки округляются до 2-х знаков после запятой 'например: 0,3 = 30 копеек // 0,03 = три копейки Kop = Mid$(Expression, InStr(1, Expression, ",") + 1, 2) Kop = Kop & String(2 - Len(Kop), 48) Kop = z & SumProp(Kop, valuteKop, rec + 1): Expression = Fix(Expression) End If: If Expression >= 2 ^ 31 Then MsgBox "Вы ввели очень большое число", vbInformation: Exit Function While Expression > 0 Select Case Expression Case Is >= 10 ^ 9: s = s & SumProp(Fix(Expression \ 10 ^ 9), mrd, rec + 1): Expression = Expression Mod 10 ^ 9 Case Is >= 10 ^ 6: s = s & SumProp(Expression \ 10 ^ 6, mln, rec + 1): Expression = Expression Mod 10 ^ 6 Case Is >= 1000: s = s & SumProp(Expression \ 1000, tsh, rec + 1): Expression = Expression Mod 1000 Case Is >= 100: s = s & Split(sot)(Expression \ 100 - 1) & p: Expression = Expression Mod 100 Case 10, Is >= 20: s = s & Split(des)(Expression \ 10 - 1) & p: Expression = Expression Mod 10 Case 11 To 19: s = s & Split(ndc)(Expression - 11) & p: Expression = -Expression Case Is < 10: s = s & Split(edn)(Expression) & p: Expression = -Expression End Select Wend If Len(s) Then Expression = Abs(Expression) Select Case Expression Case 1: s = s & Split(val)(0) & IIf(rec And val <> valuteKop, z, "") Case 2, 3, 4: s = s & Split(val)(1) & IIf(rec And val <> valuteKop, z, "") Case Else: s = s & Split(val)(2) & IIf(rec And val <> valuteKop, z, "") End Select: Select Case val Case tsh, valuteKop 'исключение, тысяча и копейка в женском роде s = Replace(s, "один ", "одна ") s = Replace(s, "два ", "две ") End Select Else: Kop = Trim$(Mid$(Kop, 2)) End If If rec = 0 Then s = s & Kop: Kop = "" SumProp = LCase(s): SumProp = UCase(Left$(SumProp, 1)) & Mid$(SumProp, 2) End Function