< návrat zpět
MS Excel
Téma: Hledat slova - slovník na listu
Zaslal/a Alfan 12.6.2023 7:08
Dobrý den, chtěl požádat o pomoc s makrem, makry pro hledání na listu "dictionary", kde jsou data ve formátu Tabulky s názvem "DataDictionary".
Chtěl bych, aby na listu "find" se do buňky "A2" zadal hledaný výraz, alespoň 2 písmena.
A pak by se podle kliknutí na příslušné tlačítko hledalo na listu "dictionary".
Pokud bych klikl na tlačítko "CZ --> EN" tak by se do buňky "A4" na listu "find" napsalo záhlaví z buňky "A1" z listu "dictionary" a do buňky "B4" záhlaví z buňky "B1" na listu "dictionary.
A pokud by se našla shoda se zadaným výrazem v buňce "A2", vypsaly by se všechny "nálezy" od řádku 5 na listu "find".
Písmo ve sloupci "A" na listu "find" by bylo tučně.
A analogicky by to bylo při použití tlačítka "EN --> CZ", akorát do buňky "A4" na listu "find" by se napsalo záhlaví z buňky "B1" z listu "dictionary"
Děkuji.
Radek
elninoslov(13.6.2023 10:42)#055042 A potrebujete na to makro?
citovat
elninoslov(13.6.2023 11:22)#055043
Alfan(14.6.2023 12:22)#055044 @elninoslov
klaním se mistrovi
Ta verze s makrem...SUPER, díky moc.
Pokud mám zase přispět na podporu fóra, rád to udělám ;-)
citovat
elninoslov(14.6.2023 12:37)#055045 Robte ako uznáte za vhodné. Mne je to šumák. Ja s fórom nič nemám, len ho mám fakt rád. A ja nič nechcem. Pekný deň.
citovat
Alfan(14.6.2023 13:35)#055047 Dobrý, tedy.
Poslal jsem příspěvek ;-)
citovat
Alfan(15.6.2023 7:46)#055048 @elninoslov
Mohu se, prosím, zeptat, jako lama...?
Kde v tom kódu je ta instance, která určí, na které tlačítko jsem kliknul?
Děkuji. Radek
Sub FindDict()
Dim Typ As Byte, Count As Long, i As Long
Dim D(), R(), H()
Dim FindVal As String
Typ = Split(Application.Caller, " ")(1)
With Worksheets("dictionary").ListObjects("DataDictionary")
H = .HeaderRowRange.Value
D = .DataBodyRange.Value
ReDim R(1 To UBound(D, 1), 1 To 2)
End With
Application.ScreenUpdating = False
With Worksheets("find")
.Range("A4:B4").Value = Array(H(1, Typ), H(1, 2 - Typ + 1))
FindVal = .Range("A2").Value2
If FindVal = "" Then MsgBox "Zadejte hledaný výraz", vbExclamation: GoTo FINAL
For i = 1 To UBound(D, 1)
If InStr(1, D(i, Typ), FindVal, vbTextCompare) > 0 Then
Count = Count + 1
R(Count, 1) = D(i, Typ)
R(Count, 2) = D(i, 2 - Typ + 1)
End If
Next i
i = .Cells(Rows.Count, "A").End(xlUp).Row - 4
With .Range("A5:B5")
If Count = 0 Then
If i > 0 Then .Resize(i).ClearContents
Else
If i > Count Then .Offset(Count).Resize(i - Count).ClearContents
.Resize(Count).Value2 = R
.Resize(Count, 1).Font.Bold = True
End If
End With
End With
FINAL:
Application.ScreenUpdating = True
End Sub
citovat
Anonym(15.6.2023 8:59)#055049 Application.Caller
citovat
Alfan(15.6.2023 9:03)#055050 Děkuji.
Ale jak pozná, které tlačítko to bylo?
Já nikde nenašel jejich označení nebo číslo?
citovat
Anonym(15.6.2023 13:47)#055051 Vrací název tj. "Tlačítko 1" nebo "Tlačítko 2"
SPLIT text rozdělí
do Typ se přiřadí číslo tlačítka
citovat
Alfan(15.6.2023 13:59)#055052 Aha.
Ale já pořád nevidím nebo nevím, kde je ten název "Tlačítko 1" nebo "Tlačítko 2" uvedený?
Já to právě hledal, abych pochopil logiku.
Omlouvám se za lama dotazy, ale fakt to nevím.
Radek
citovat