05/05/2026
VBA ми е слабост и веднага ще поясня защо. Искам да го кажа просто. Но това е много трудно. Все едно да напишеш с думи ръководство как се вързва вратовръзка или как се издухва бутилка на Клайн. Ето един случай от практиката в който AI не може да помогне.
Работя с MS WORD - велик редактор -и правя една проста таблица с няколко колони и N реда в които записвам: В първата колона нещо на български, във всички останали - нещо на английски. Много е досадно, когато увлечен в писането изведнъж поглеждаш към екрана i wivda[, `e si pisal na anglijski. Ami towa e rezultatyt, dori move da byde i po-zle za]oto нвьусьшкихьшь здаиеафь хь нсисвсъь спь иьювс(хс иьюхдусахдяшс ........И като ти се случи това няколко пъти ти идва не знам какво да направиш, но скърцането със зъби не помага.
Какво направих ли? Ами малко код и сега съм по-продуктивен и спокоен. Какво прави кодът ми.
1. Проверява дали курсорът е в таблица или не.
2. Ако е в таблица проверява в коя колонка съм
3. Ако съм в първа колонка превключва клавиатурата на кирилица
4. Ако съм в коя да е различна от първа колонка - превключва на английски.
От тук нещата лесно могат да бъдат модифицирани. Примерно имате една таблица с 50 колонки
На кирилица трябва да пишете в колонки 1, 3, 5, 12, 18, 34, 44, 49. Във всички останали трябва да пишете на английски.
Малко променяте кода. Предварително на най горния ред в колонки 1, 3, 5, 12, 18, 34, 44, 49 записвате BG, а в останалите колонки или ENG или нищо. Кодът Ви вече проверява при събитието WindowSelectionChange какво е написано на първия ред на съответната колонка. Ако е BG – сменя на български. Ако е ENG или нищо – сменя на английски.
Ами това е. Мога да обясня подробно, ако някой прояви интерес, макар че за 30 години малцина са се осмелявали да погледнат какво има зад белия лист за писане – една вселена или бабата на AI и ChatGPT наречена алгоритмизация. Причини за това много, но най-съществената е локализацията на офис пакетите на български език и произтичащия от това ефект на недостроената Вавилонска кула.
Private Sub App_WindowSelectionChange(ByVal Sel As Selection)
'MsgBox Application.Keyboard
'If Selection.Tables.Count = 1 Then
If Sel.Information(wdWithInTable) Then
'MsgBox Sel.Information(wdWithInTable)
'MsgBox "Вие сте в таблица PROBA!" & Chr(13) & Selection.Columns(1).Index
If Selection.Columns(1).Index = 1 Then
'Application.Keyboard &H402 'BG
'Application.Keyboard &H30402
Application.Keyboard (1026) ' BG BDS
SendKeys "^+" 'Ctrl+Shift
'Application.Keyboard (132098)
'Application.Keyboard (263170)
'Application.Keyboard (-256965630)
Else
'Application.Keyboard &H409
Application.Keyboard (1033) 'ENG
'Application.Keyboard (67699721)
End If
End If
End Sub