Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  3 4 5 6 7 8 9 10 11   další » ... 53

Zdravím,
Rád bych se zeptal je-li tady někdo znalý vbscriptu, kdo by mě pomohl nasměrovat správným směrem.
V příloze mám 3 soubory, kdy
- pokus.txt je zdroj dat
- pokus.vbs by měl daný soubor zpracovat a uložit jako pokus xlsx, bohužel nějak mi o nefunguje a nějak už si nevím rady.
- pokus_vba.xlsm udělá to co by měl udělat ten script, akorát, že to udělá pomocí vba přímo v excelu.
Ano, můžu využít tento pomocný soubor, ale elegantnější by to bylo přímo z toho scriptu bez nutnosti existence pomocného souboru.
Předem děkuji za případné tipy :-)
M@

Je to složitější než bych čekal :-). Podařilo se mi ho vytvořit (Excel VSTO Add-in) V doplňcích ho vidím a výše popsaným způsobem si daný panel můžu i zobrazit.
Ve VBA jsem pak hledal jak ho vyvolat.
Když si viz první řádek nechám zobrazit stav, jestli je visible, tak mi odpoví správně, ale když pak chci status změnit, tak mi to hodí nespecifikovanou chybu (ať chci nastavit true, nebo false)
MsgBox Application.CommandBars("Martin TEST").Visible
Application.CommandBars("Martin TEST").Visible = False

V podstatě jsem jen chtěl zkusit, jestli by ovládací userform, šel nahradit postranním panelem.

Ahoj,

pokouším se pomocí VS vytvořit doplněk, ale nějak si nevím rady s jeho zobrazením. Když si dám doplňky, tam ho odškrtnu a potvrdím a následně zaškrtnu a potvrdím, tak se zobrazí.
Otázka je jestli by ho nešlo zavolat nějak inteligentněji, nejlépe přes VBA.

Díky
M@

Tipuji, že problém bude v "5", pokud už máte zformátováno jako číslo, tak by tam měla být čistě 5.

Jen dodám, že cílem není to aby vypsané vzorce z ověření nevracely chybu, to ony nejspíš budou, ale když si pak dáte u nějaké té buňce co chcete smazat, zobrazit následníky, tak se vám to na daný vzorec odkáže, nezávisle na to co je jeho výsledkem.
M@

Tak ještě jedna úprava kódu :-)
Public Sub Najdi()
If VALIDACE = False Then Exit Sub
Dim rd As Single
Range("CA1:CB1") = Split("Vzorec;Buňka", ";")
rd = 2

ActiveSheet.Cells.SpecialCells(xlCellTypeAllValidation).Select
For Each cell In Selection
Range("CA" & rd).Formula = cell.Validation.Formula1
Range("CB" & rd) = cell.Address
rd = rd + 1
If cell.Validation.Formula2 <> "" Then
Range("CA" & rd).Formula = cell.Validation.Formula2
Range("CB" & rd) = cell.Address
rd = rd + 1
End If
Next
End Sub

Public Function VALIDACE() As Boolean
On Error GoTo x
VALIDACE = False
ActiveSheet.Cells.SpecialCells(xlCellTypeAllValidation).Select
VALIDACE = True
Exit Function
x:
End Function

Není ten list třeba zamčený?

Ono těžko říct, když to člověk nevidí :-)

Viz. obrázek.
+ upravené makro které udělá výpis do buněk CA:CB.

Public Sub Najdi()
Dim rd As Single
Range("CA1:CB1") = Split("Vzorec;Buňka", ";")
rd = 2

ActiveSheet.Cells.SpecialCells(xlCellTypeAllValidation).Select
For Each cell In Selection
Range("CA" & rd).Formula = cell.Validation.Formula1
Range("CB" & rd) = cell.Address
rd = rd + 1
Next
End Sub


M@

Pak by to nějak mohlo fungovat v rámci stejného listu, s tím že oblast pro výpis jsem nastavil na AA:AB, což lze změnit dle počtu používaných sloupců. Tyto pomocné pak lze smazat.

Public Sub Najdi()
Dim rd As Single
Range("AA1:AB1") = Split("Vzorec;Buňka", ";")
rd = 2

ActiveSheet.Cells.SpecialCells(xlCellTypeAllValidation).Select
For Each cell In Selection
Range("AA" & rd).Formula = cell.Validation.Formula1
Range("AB" & rd) = cell.Address
rd = rd + 1
Next
End Sub


M@

marjankaj napsal/a:

Jeza.m napsal/a:Po tom "zjednodušení" mě napadlo, vytvořit si pomocný list.
Pak makrem vyhledat všechny buňky s ověřením, projet je a vzorec ověření zapsat na tento pomocný list, vedle něj pak vždy uvést buňku ve které se ověření nachází.
M@
A skúšal si makrom "projet bunku s overením"?
Ja som si nahral makro ktoré upravilo zoznam overenia. Prvé čo urobilo bolo vymazanie overeného zoznamu.(Validation.delete)
Možno sa na to dá ísť nejako inak.


Nezkusil, ale na základě tvého příspěvku už pak teda jo a v pohodě :-) ...
Public Sub Najdi()
Dim Activesh As String
Dim PomocnyList As Worksheet
Dim rd As Single
Activesh = ActiveSheet.Name
Set PomocnyList = Sheets.Add
PomocnyList.Name = "Pomocny"
PomocnyList.Range("A1:B1") = Split("Vzorec;Buňka", ";")
rd = 2

Sheets(Activesh).Activate
ActiveSheet.Cells.SpecialCells(xlCellTypeAllValidation).Select
For Each cell In Selection
PomocnyList.Cells(rd, 1).Formula = cell.Validation.Formula1
PomocnyList.Cells(rd, 2) = cell.Address
Next
End Sub

Jen jsem narazil na možný problém a to že ve vzorci v ověření může být čistě odkaz na buňky, bez listu, což pokud je (jako v mém příkladu) vypíšeme do jiného listu, tak to fungovat nebude, pak by se muselo řešit výpisem do stejného listu do nějaké nepoužívané oblasti.
Nicméně je to jen tip
M@

Po tom "zjednodušení" mě napadlo, vytvořit si pomocný list.
Pak makrem vyhledat všechny buňky s ověřením, projet je a vzorec ověření zapsat na tento pomocný list, vedle něj pak vždy uvést buňku ve které se ověření nachází.
Když pak klikneš na buňku kterou chceš smazat a dáš si najít následníky, tak by to mělo najít i buňky z tohoto listu, kde pak zjistíš, o kterou buňku se jedná.

Jen takový tip :-)
M@

Jestli dobře chápu, tak máš například buňku A1, kterou bys rád smazal, ale před tím si chceš ověřit, že se na ní něco neodkazuje.
U vzorců to je jednoduché, ale tebe by zajímalo, jestli není součástí ověření dat u jiné buňky.
Což bude docela oříšek, ověření může mít jakákoliv buňka, takže bys musel jít buňku po buňce a ověřovat má-li ověření.
Pokud ano, tak projít vzorec ověření a hledat jestli se v něm daná buňka nevyskytuje, nejen přímo, ale i formou oblasti. Ověření může být i formou pojmenovaných názvů, kdy bys musel hledat odkazy daných názvů. No a nakonec existuje i něco jako nepřímé odkazy a tam už si to ani představit neumím.
Ale tak třeba tady bude někdo moudřejší :-)
M@

Select case se taky hodí, ale víc by se asi hodila smyčka.
Zkusil jsem jen tak bez testu ...
Public Sub FiltrStart()
Application.ScreenUpdating = False
Dim LIST_PT()
Dim LIST_FI()
LIST_PT = Array("Data", "Hodnota", "Pozice", "Souhrn")
LIST_FI = Array("ID_smart", "ID_smart", "ID_lost", "ID_lost")

Dim NewCat As String
Dim NewCatP As String

NewCat = Worksheets("List1").Range("AG1").value
NewCatP = Worksheets("List1").Range("AG4").value

For ind = 0 To UBound(LIST_PT)
Select Case LIST_PT(ind)
Case Is = "Data"
Filtry LIST_PT(ind), LIST_FI(ind), NewCat, True
Case Is = "Hodnota"
Filtry LIST_PT(ind), LIST_FI(ind), "", False
Case Else
Filtry LIST_PT(ind), LIST_FI(ind), NewCatP, True
End Select
Next
Application.ScreenUpdating = True
End Sub

Public Sub Filtry(ktaname As String, fieldname As String, nvalue As String, clearfilters As Boolean)

Dim pt As PivotTable
Dim Field As PivotField

Set pt = Worksheets("List1").PivotTables(ktaname)
Set Field = pt.PivotFields(fieldname)

If clearfilters = True Then
pt.Field.ClearAllFilters
pt.Field.currentpage = nvalue
End If

pt.RefreshTable
End Sub

Dokázal bych si to představit v Excelu, pomocí makra, ale obávám se, že Word tohle nedá, leda taky pomocí makra.

M@

Zkusil jsem verzi od Elnina a když dáš v editoru maker Tools -> References, tak asi tak na 6. pozici je reference na ATLEntityPicker 1.0 type Library, označená nejspíš jako MISSING (minimálně u mě), tak pokud na ni tu referenci zrušíš, tak by to mělo jít.

PS: Co se Comboboxu týče, tak by stálo za to změnit jeho styl na dropdownlist, čímž se vyhnete neošetřené chybě. I zde pokud začnete psát tak combo skočí na první shodu.

M@


Strana:  1 ... « předchozí  3 4 5 6 7 8 9 10 11   další » ... 53

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Google disk - stažení souboru s příponou .xlsm

OB • 22.3. 15:59

Rozdiel office 2016 alebo 2019

r13 • 22.3. 15:49

Rozdiel office 2016 alebo 2019

jano1 • 22.3. 9:52

Barva aktivní buňky

stusna • 22.3. 8:52

Tabulka - zamknout list

Alfan • 21.3. 8:48

Tabulka - zamknout list

r13 • 21.3. 8:44

Tabulka - zamknout list

Alfan • 21.3. 7:28