Страницы: 1
RSS
Способы определения языка строки VBA
 
Всем привет!

Есть ли способ определения языка строки средствами VBA?
Например в коде есть 2 строки, которые нужно сравнить по языку (одинаковы ли языки двух строк)
В файле примере 2 ячейки для сравнения. В первой ячейке первая буква английская, вторая вся на русском.

Всем большое спасибо!
Изменено: vikttur - 26.08.2021 12:02:06
 
Проверить коды первых символов
Изменено: vikttur - 26.08.2021 12:03:38
 
artemkau88, здравствуйте
Цитата
artemkau88: определения языка строки средствами VBA
Цитата
vikttur: Проверить коды первых символов
Проверка первого символа на латиницу
Изменено: Jack Famous - 26.08.2021 12:32:02
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, vikttur, большое спасибо!
 
В вашем примере следующий код

Код
debug.Print range("A1").Value = range("B1").Value

Выведет false, ибо xl внешним сходством символов не обманешь. Если вам нужно лишь понимать, что значения неидентичны, то этого выражения достаточно. Если же вам именно нужно узнать язык, то необходимо по диапазонно искать совпадения, как сделал Jack Famous, только для всех возможных диапазонов символов. Можно ещё попробовать в google translate отправить, он сам определит язык (правда этот вариант чисто поржать)

 
Цитата
No Name: внешним сходством символов не обманешь
можно заменить латиницу на визуально похожую кириллицу и сравнивать как обычно — я на работе постоянно так делаю, потому что латинская СИ и кириллическая ЭС даже на одной клавише находятся (спасибо оленям-внедренцам) и человек, удаляя неправильно напечатанное (в другой раскладке), как правило СИ не удаляет, потому что "она нормальная"

Здесь есть форма, которая позволяет быстро и удобно посмотреть коды всех символов активной ячейки
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
См. эту статью и комментарии к ней.
Владимир
 
sokol92, спасибо!
Изменено: artemkau88 - 27.08.2021 16:49:18
 
Рекомендую использовать указанный по ссылке подход в следующей редакции.
Код
' Раскрашивает в Selection в красный цвет буквы, не относящиеся к русскому алфавиту
Sub ShowNotRussian()
  Dim r As Range, i As Long, t As String, v
  Application.ScreenUpdating = False
  For Each r In Intersect(Selection, Selection.Parent.UsedRange).Cells
    v = r.Value
    If VarType(v) = vbString Then
      For i = 1 To Len(v)
        t = Mid(v, i, 1)
        If LCase(t) <> UCase(t) And Not LCase(t) Like "[а-яё]" Then r.Characters(Start:=i, Length:=1).Font.ColorIndex = 3
      Next i
    End If
  Next r
  Application.ScreenUpdating = True
End Sub

Аналогично для латыни.

Далее можно использовать автофильтр по цвету текста и выделить все опечaтки (кстати, есть в этом тексте).
Изменено: sokol92 - 27.08.2021 17:44:43
Владимир
 
Off
Цитата
Jack Famous написал:
(спасибо оленям-внедренцам)
Э, Э? клавиатуру печатной машинки придумали не просто так, а выверенная схематика по частоте употребления символов и прочего. Двуязычных тогда не было, а на печати все равно  латинская СИ и кириллическая ЭС выглядят одинаково. А переделывать - это как в Англии сейчас ввести левый руль.

Перевели летчика в  эскадрилию  гидропаланов. Первsй полет, все нормально, выполнил задание , возвращается на базу и по пути начинает садится на обычныq аэродром. Штурман и второй пилот с воплями ты куда ???? .  Все обошлось подняли в воздух, долетели до водоема, сели. Пилот вышел из кабины , обернулся на бледных сослуживцев, "Извините мужики , сила привычки!"  и спрыгнул с крыла .... .
По вопросам из тем форума, личку не читаю.
 
sokol92, приветствую!
Позанудствую по-дружески

БМВ, что там когда и как было меня мало волнует. От того, что это обосновано, ошибок ввода меньше не стало, сдвинуть или переставить можно легко - большинству плевать, так как машинистки со своим "слепым десятипальцевым методом" никому уже лет 20 как не нужны (привет распознавание голоса в текст)
А анекдот хороший, спасибо  :)

UPD
Изменено: Jack Famous - 27.08.2021 18:12:08
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Off
В свое время литер отличались, да и сейчас можно найти шрифты, которые дают различие, но системные к ним не относятся, а зря. но   ! i l |  могут приносить чуть меньше хлопот,  O и ноль, который больше не перечеркивается . Но С конечно лидер, расположенный на одной кнопке - тут спору нет.
Цитата
Jack Famous написал:
большинству плевать, так как машинистки со своим "слепым десятипальцевым методом" никому уже лет 20 как не нужны (привет распознавание голоса в текст)
оъ как не прав.  Конечно все шагнудо вперед, но не на столько , чтоб исключить ошибки.  Этой записи лет 15 наверно, и по реакции оператора это не инсценировка.
По вопросам из тем форума, личку не читаю.
 
Здравствуйте, Алексей! Макрос из #9 выделяет цветом все буквы, не относящиеся к русскому алфавиту. Кроме латыни, в Unicode есть еще много-много букв из разных алфавитов (греческие, расширенная латынь,  арабские и т.д.).
Владимир
 
Цитата
БМВ написал:
 ! i l |
Вот тут приколы начинаются, если кодировку с кириллицы на юникод сменить (или другие варианты). I вполне запросто становится |. Через раз с этим сталкиваюсь при импорте данных из txt в mysql. Та ещё головная боль
 
Цитата
artemkau88 написал:
Способы определения языка строки VBA
строки
Pronto
Achtung
это один язык? (как по мне это итальянский и немецкий)
а что вы тут определяете?
а фраза:
"McDonalds у Києві репрезентовано за 42 різними адресами"
это какой язык?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
sokol92: все буквы, не относящиеся к русскому алфавиту
Код
If String like "*[!ЁёА-я]*"
изи)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
все буквы, не относящиеся к русскому алфавиту
))
пательня
все буквы относятся к русскому алфавиту? а язык какой? (и что слово значит)
какой язык и как вы пытаетесь помочь определить автору? о каких языках речь?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Алексей, буквы См и ЭС  на одной клавише не только на клавиатурах ПК расположены: на телетайпах (а они двуязычные) картина аналогичная. И, как правильно написал Миша, это сделали не из вредности: изначально во главу угла ставилась частота использования. Но этого оказалось мало: при росте скорости печати (в те времена) столкнулись с проблемой, что соседние рычаги печатной машинки при большой скорости набора цеплялись друг с другом и некоторые буквы пришлось разносить подальше друг от друга, пытаясь найти компромисс. Так что не "с потолка" появилась такая раскладка. А потом сработала преемственность: человеку уже было привычно искать нужный символ на клавиатуре ПК в том месте, где он был на печатной машинке и на телетайпе. Кстати, на первых ЭВМ роль клавиатуры выполнял именно телетайп. Он же выполнял роль принтера. )
Алексей, ну не знали в те далёкие времена, что тебе будет напревать )) Ты уж не серчай на них - люди старались  :)
Изменено: Юрий М - 28.08.2021 00:04:01
 
Юр, а как ты думаешь, много ли людей, привычных к машинке, работает на клавиатуре? Из моих знакомых - ни одного. А проблемы создаёт буквально на ровном месте

Смысла обсуждать "правильность" не вижу - если не нравится, то можно купить другую клавиатуру, они есть. А всех за другую клавиатуру не посадишь, а значит проверять всё-равно надо
За историю наследования спасибо))
Изменено: Jack Famous - 29.08.2021 10:56:04
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
Из моих знакомых - ни одного
Теперь есть один )
 
Цитата
Ігор Гончаренко написал:
пательня
:) сковородка, язык украинский.
патэльня, язык беларусский значение тоже
:)
Спасибо
Страницы: 1
Наверх