Ahoj, mám v kódu tuto část:
On Error Resume Next
dtStamp = Application.InputBox(Prompt:="Potvrď čas provedení tohoto úkonu", Title:="Časové razítko", Default:=Format(Now(), "dd.mm.yy hh:mm"), Type:=2)
If Err <> 0 Then
MsgBox "zadaná hodnota nejde převést do formátu datum/čas"
GoTo znoVa
End If
přičemž Dim dtStamp As Date
Na všech PC toto funguje, pouze na jednom to kolabuje. Příkaz pro načtení aktuálního času do proměnné dtStamp tam vyhodí chybu 13. Asi to souvisí s nějakým nastavením času, ale ve Windows to máme všichni dlouhý i krátký formát datumu stejně.
Nevěděl by někdo co může způsobovat tuto chybu?
Předem dík moc!
Dík, nastuduju a zkusím pořešit
Tak na 64 bit Office to nejede, poslední dvě deklarace v #ELSE části jsou červené.
Zvláštní, že když v 32 bit změním logiku z
#If VBA7 Then na #If Not VBA7 Then
tak to stejně funguje.
A na 64 bitech když měním totéž, tak to nefachá ani tak ani tak. Rovněž jsem namísto VBA7 alternoval Win64 (dle nějakých googlových nálezů) ale taky žádný vliv
Dík, zatím na 32 bitech to fachá. 64 odzkouším až budu doma.
K té výtce: VBA kódy si ovbykle píšu sám, občas po tupém zkopírování upravuji ke svým potřebám, ale porozumět API (zřejmě myšleno jako ten lepší nápad) je přece jenom jiná liga a nedovedl jsem na na netu dohledat moc smysluplných informací.
OK, nouzově by to šlo i takhle, ale než to pak rozparsuje do tabulky, tak je to docela fuška
To vypadá, že se v soboru něco podělalo, sem tam jsem to už zažil. Jakou má ten soubor velikost? Zkus to otevřít na jiném PC a pokud to půjde, zkus to uložit pod jiným názvem. Pokud tam máš tuny vzorců či podmíněného formátování, popřípadě jestli je soubor sdílený, tak asi by ho chtělo nějak pročistit. Viděl jsem už i situace, soubor naboptnal na 50 MB a po pročištění měl se stejnou funkcionalitou kolem 1 MB.
Pokud to neotevřeš na žádném PC, tak nevím o způsobu jak se dovnitř dostat
Ahoj,
z dřívějška mám soubor, (spouští se dvojklikem do žluté zóny), který umí vypsat obsah libovolného adresáře (volitelně i včetně podadresářů) do tabulky. Z času na čas se tato věcička náramně hodí. Jenomže to využívá API funkce pro 32 bitový Office. Na 64 bit to nefunguje
Věděl by někdo z příslušných expertů toto opatřit příslušnými API funkcemi aby to fungovalo i v 64bit Office? Anebo klidně ať to používá jiné technologie, ale ať to umí vypsat obsah nějakého adresáře včetně podadresářů.
Předem dík
Zdar,
je mi záhadou jak jsi vytvořil tu kartu Elektrotrend, která se zjeví na Ribbonu po otevření souboru
Ty tlačítka na kartě jsou sice mrtvé, neboť chybí kód, ale ani v ThisWorkbook není žádný kód pro vytvoření této karty, ani v modulech ani v modulech listů ani ve formulářích.
Co je to za trik?
Předem dík, M.
Dík, udělal jsem to jak radíš
Ahoj,¨
v kódu používám metodu Find pro hledání v určité oblasti, přičemž potřebuji mít parametr Lookat:=xlWhole. Toto si bohužel excel zapamatuje a když pak uživatel hledá v listě pomocí Ctrl + F, tak to hledá shodu obsahu celé buňky. Takže pokud je v buňce třeba "Hradec Králové" a do hledacího okýnka napíšu "Hradec", tak to buňku nenajde. Abych to hledání vrátil do výchozího stavu, tak je potřeba kliknout na Možnosti>> a tam odháknout "Pouze celé buňky".
Mohl bych asi do kódu přidat další hledání, tentokrát s parametrem Lookat:=xlPart, ale zbytečně to bude zpomalovat proceduru. Nedá se to ve VBA nastavit ještě někde jinde a čistěji?
Dík, M.
No nevím, je to pakárna prodírat se nekomentovaným cizím kódem, kde prvky formuláře nebyly pojmenovány nějak smysluplně. Pomalost by mohla být zapříčiněna těmi spletitými výpočty nad množinou dat. Zkus je smazat, zdali se to významně nezrychlí.
Pokud ano, pak stojí za to se zamyslet, k čemu ty výpočty slouží a zdali by to nešlo spočítat pouze na vyžádání nebo jinak (třeba smyčkou přes pole - viděl jsi, že to švihá bleskurychle).
Není úplně pravda, že můžeš přiložit pouze jeden soubor, v rámci jednoho adresáře se Shiftem můžeš označit více příloh.
Tvé druhé "lepší" vysvětlení je postiženo stejnou mlhavostí jako to první, takže sorry
Tak to je ostudné, taková slepota.
Díky
Přikládám. Na prvním listě to filtruje v pořádku, na druhém o sloupec vedle.
Do VBA projectu si přidej modul (Insert-Module) a do něj vlož funkci VratCisloRadku (kód úplně dole), která funguje tak, že si nejdříve natáhne data z celého listu do pole a pak jej prohledá. Jakmile narazí na první nález, vrátí číslo řádku. To je to co potřebuješ a vrací to výsledek bleskem a případný filtr v listě Data na to nemá vliv.
Jinak tvoje oblast dat není souvislá, což není úplně dobře. Když se postavíš třeba na buňku A1 a uděláš dvojmat pravý Ctrl + hvězdička, tak se ti označí pouze oblast A1:M6201. Neboť sloupec N je úplně prázdný, ale pak zase data pokračují. Jakmile bys dal třeba omylem seřadit data, tak máš problém. Takže alespoň v těch prázdných sloupcích zapiš do záhlaví libovolný znak - uvidíš, že po dvojhmatu se ti označí celá oblast.
Takže kód pod tlačítkem "Najdi" si změň následovně:
Private Sub Najdi_Click()
i = VratCisloRadku(Me.TextBox17.Text)
If i = 0 Then
MsgBox "Zadaný údaj " & Me.TextBox17.Text & " nebyl nalezen"
Exit Sub
End If
Me.NajdiDalsi.Enabled = True
If i > 3 And Me.Předchozí.Enabled = False Then Me.Předchozí.Enabled = True
If i = 3 And Me.Předchozí.Enabled = True Then Me.Předchozí.Enabled = False
Call PrepisTextBox
End Sub
Public Function VratCisloRadku(strText As String) As Long
Dim ii As Long, j As Long
Dim rgOblast As Range
Dim arPole() As Variant
Dim ws As Worksheet
Set ws = Worksheets("Data")
Set rgOblast = ws.Range("A2").CurrentRegion
arPole = rgOblast
For ii = LBound(arPole, 1) To UBound(arPole, 1)
For j = LBound(arPole, 2) To UBound(arPole, 2)
If arPole(ii, j) = strText Then
VratCisloRadku = ii
Exit Function
End If
Next j
Next ii
End Function
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.