Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  203 204 205 206 207 208 209 210 211   další » ... 303

Veď sme ho dali do wbOld, tak cez neho skúsit.

Ja keď chcem vyskúšať Váš kód na zistenie počtu inštancií, tak si to musím upraviť na x64 verziu:
#If Win64 Then
Public Declare PtrSafe Function GetDesktopWindow Lib "User32" () As LongLong
Public Declare PtrSafe Function FindWindowEx Lib "User32" Alias "FindWindowExA" (ByVal hWnd1 As LongLong, ByVal hWnd2 As LongLong, ByVal lpsz1 As String, ByVal lpsz2 As String) As LongLong
#Else
#If VBA7 Then
Public Declare PtrSafe Function GetDesktopWindow Lib "User32" () As Long
Public Declare PtrSafe Function FindWindowEx Lib "User32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
#Else
Public Declare Function GetDesktopWindow Lib "User32" () As Long
Public Declare Function FindWindowEx Lib "User32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
#End If
#End If
'Public Declare PtrSafe Function GetDesktopWindow Lib "User32" () As Long
'Public Declare PtrSafe Function FindWindowEx Lib "User32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Function ExcelInstances() As Long
#If Win64 Then
Dim hWndDesk As LongLong
Dim hWndXL As LongLong
#Else
Dim hWndDesk As Long
Dim hWndXL As Long
#End If
'Získat popisovac na plochu
hWndDesk = GetDesktopWindow

Do
'Získat další okno aplikace Excel
hWndXL = FindWindowEx(hWndDesk, hWndXL, "XLMAIN", vbNullString)
'Když jsme dostali jeden, zvýšit pocet

If hWndXL > 0 Then
ExcelInstances = ExcelInstances + 1
End If

'Loop, dokud jsme je našli všechny
Loop Until hWndXL = 0

End Function

a to mi vracia počet okien (aj to zvýšených o 5, teda jedna inštancia s jedným súborom vráti číslo 6), nie inštancií.

Našiel som zaujímavý minikód, ktorý skutočne zistí počet inštancií:
Function CountExcelInstances()
strComputer = "."
Set objWMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set proc = objWMI.ExecQuery("Select * from Win32_Process Where Name = 'Excel.exe'")
CountExcelInstances = proc.Count
Set proc = Nothing
Set objWMI = Nothing
End Function


Bohužiaľ, ale prepnutie na inú inštanciu Excelu, nevyvolá v predošlej inštancii metódu Deactivate. Takže aj tak prd z toho...

Skúšané na Office 2016 Pro SK x64, Win10 x64 Pro SK

Vy ste ako môj svokor. Keď ma minule navigoval tak asi takto:
"Vidíš tú modrú budovu vpravo? Pred ňou je svetelná križovatka, vidíš ju? Tak tam nebudeme odbočovať." 8
...po chvíli...
"Tam ako stojí ten autobus, na zastávke. Vidíš ? Za ním je odbočovací pruh vpravo."
...Prejdem za tú zástavku, hádžem smerovku doprava, a ...
"Tu ale my nebudeme odbočovať ?!" 6

Tak Vy podávate presne rovnaké zbytočné, mylné a nezmyselné informácie.

Príklad:
- Ja Vám vysvetľujem, čo je priorita (poradie) testov, a Vy :
"Takto by to malo vyzerať pri splnení všetkých podmienok"
Ale veď vo Vašom prípade bude vždy splnená LEN JEDNA podmienka !!!

- Mätúce použitie slov vo vetách:
"je nula z A2"
Matematický výraz "je nula z X" neexistuje. Buď je niečo nula, alebo je niečo X.

- Neodpovedanie na otázku, niekoľkokrát zopakovanú :
Dajte si tam tento vzorec:
=IF(B2<C2;0;IF(AND(B2>=C2;D2<C2);A2/2;IF(B2=D2;A2;IF(B2>D2;A2*(1+((B2-D2)/(B2/100)/100));"A KURŇA !!!"))))
=KDYŽ(B2<C2;0;KDYŽ(A(B2>=C2;D2<C2);A2/2;KDYŽ(B2=D2;A2;KDYŽ(B2>D2;A2*(1+((B2-D2)/(B2/100)/100));"A KURŇA !!!"))))

a B2 zmente na 169. 9

Trpezlivosť je obmedzená. Snažte sa o 200% viac, potom si 2x prečítajte svoj napísaný text, či Vám slová dávajú zmysel.

Veď ide o tak triviálnu vec, zapísať vzorec s IF/KDYŽ ... len treba presné info ...

Tak potom by mohol pomôcť takýto test
Private Sub Workbook_Deactivate()
Dim wbAct As Workbook, wbOld As Workbook

Set wbOld = ThisWorkbook 'Ak potrebujete niečo robiť s Vašim pôvodným zošitom
Set wbAct = ActiveWorkbook 'Aktívny zošit (chránený zošit sa nepriradí)

If wbAct Is Nothing Then Set wbAct = Application.ActiveProtectedViewWindow.Workbook 'Ak je chránený zošit, treba urobiť priradenie inak

wbOld.Worksheets("Log").Cells(wbOld.Worksheets("Log").Rows.Count, 1).End(xlUp).Offset(1).Value = wbAct.Name 'Logovanie mena aktívneho zošitu, do aktívneho listu vo Vašom zošite

Set wbOld = Nothing
Set wbAct = Nothing
End Sub


Ale asi to nebude fungovať pri deaktivácii na inú inštanciu. To som neskúšal.

Fakt neviem, čo s Vami.

má byť rozpätie medzi bunkami C2 a D2 a len kontrola hodnoty medzi týmito bunkami k bunke B2

veď to je ďalší slovný nezmysel. Ja som na slovné úlohy praštený, a u Vás ma praštil asi tank.
"má byť ..." - myslíte "výsledok má byť" ?
"rozpätie ..." - myslíte "rozdiel" ?
"kontrola hodnoty" - a čo s výsledkom kontroly ? Vždy musíte mať zapísané 2 odpovede.
"medzi týmito bunkami k bunke B2" - Myslíte "skontrolovať, či sa hodnota B2 nachádza v rozpätí medzi C2 a D2" ?

L21 - Ako som písal, vždy musíte mať nachystané odpovede na oba druhy výsledku podmienky. Výsledok podmienky je vždy :
ANO/NIE
TRUE/FALSE
PRAVDA/NEPRAVDA
...
A vy musíte do vzorca napísať, čo sa udeje v prípade odpovede ANO :
A2*1,1 - výsledok podmienky je hodnota A2 zvýšená o 10%
aj v prípade odpovede NIE :
???

Čo má byť na mieste tých 3 otáznikov v prípade ak vyhodnotenie otázky
AND(B2>D2;B2-D2>D2/10)
bude záporné/NIE/FALSE/NEPRAVDA ?

Čo sa udeje ak to tam nezadáte - toto je zatiaľ posledná podmienka, nič už za ňou nieje, teda si tam Excel doplní predvolený výraz pre záporný výsledok, a teda budete mať v bunke napísaný text
v SK a EN Exceli
FALSE
v CZ Exceli
NEPRAVDA

Ono sa to asi v Chránenom zobrazení otvorí v druhej inštancii Excelu, čistý tip. Čo potrebujete robiť v tej Deactivate ? Či sa to nedá len preskočiť v On Error, alebo treba podúmať nad API, alebo či nemôžete proste Chránené zobrazenie úplne vypnúť.

Tak som Vám nakoniec prerobil všetky vzorce a def. názvy.

Pre maticový vzorec by to nemal byť problém bez pomocných buniek. Rozsahy si upravte, s tým už sa mi nechcelo ...

Vy chcete vypočítať počet čísel v pyramíde, pri zadanej hodnote X ?
Neviem či príklad výpočtu počtu čísel čo som uviedol vo vzorci a v makre zodpovedá, ale tak nejak mi to vyšlo. Je to v oboch prípadoch aj s ukážkou pyramídy, ale výstrel do tmy ...

peto22 napsal/a:

...ked to poslem do excelu..

Moje nervy, takéto vysvetlenie nemôžete myslieť vážne. Príklad toho, čo od Vás chceme:

-Otvorím si internetový prehliadač, prihlásim sa, a v menu Výpis si zobrazím pohyby na účte. Mám s toho krásnu tabuľku.

-V mojom InternetBankingu mám také hranaté tlačítko, "Uložiť výpis", ktoré mi uloží kam len chcem súbor "VYPIS_4_2017". Ten súbor má príponu "CSV".

-Keď tento súbor "VYPIS_4_2017.CSV" otvorím v Poznámkovom bloku, tak obsahuje aj diakritiku.

-Keď tento súbor otvorím dvojklikom, otvorí sa v Exceli, ale diakritiku nemá.

-Keď tento súbor dám v Exceli importovať cez menu Údaje - Z textu - kde si navolím Hlavičky, kódovanie Windows (ANSI), oddeľovače a typy dát v stĺpcoch, tak sa mi diakritika už nezobrazí.

Alebo postup čo som napísal hneď v prvom príspevku
Údaje - Získať externé údaje - Z Webu

Nikto nemá páru čo máte na mysli, a čo je pre Vás samozrejmosť, o ktorej sa nemusíte zmieniť.

Spočítajte si slová, ktoré ste venoval svojmu problému Vy, a koľko sme ich vymrskali na Vás mi. Musíte sa viacej snažiť popísať situáciu, inak to nepôjde.

Neviem ako to vysvetliť, môj posledný pokus o synchro myšlienok.

Nezabúdajte, že akonáhle je nejaká podmienka splnená, už sa na žiadne ďalšie v poradí nedostane. Preto som zdôrazňoval prioritu otázok.

Hneď po prečítaní ma napadlo, či Ernesto nemyslí náhodou na modálny vs. nemodálny form, ale potom ma nejako premohla myšlienka, vzhľadom na koncepciu použitých slov vo vete, že to asi bude myslené na bežiaci kód, takže DoEvents. No a vida, to čo sa hovorí o prvom dojme, predsa len niekedy kurňa bude pravda 1

Nerozumieme si, alebo ja Vám vôbec nerozumiem.
- čo znamená "tak bude hodnota zo sumy z bunky A2 "0"" ? Znamená to "tak bude E2=0" ?
- "B2>=C2 a D2<C2" Max môže byť menší ako Min ?
- vety, tak ako ste ich odentroval, sú poradie priorít testov ? Čo ak bude napr. B2=D2 a zároveň B2<C2? Ktorý test/výsledok má prioritu ?
- stále mi chýba posledná fáza, ak nebude splnená žiadna zo série podmienok. To som minule nazval OKNO. A teraz opäť.
napr.:
=IF(B2<C2;0;IF(AND(B2>=C2;D2>C2);A2/2;IF(B2=D2;A2;IF(AND(B2>D2;B2-D2>D2/10);A2*1,1;"OKNO"))))
=KDYŽ(B2<C2;0;KDYŽ(A(B2>=C2;D2>C2);A2/2;KDYŽ(B2=D2;A2;KDYŽ(A(B2>D2;B2-D2>D2/10);A2*1,1;"OKNO"))))

teda keď sa to dostane po poslednú podmienku, ale B2 nieje väčšie o 10%, ale napr. iba o 3%, čo sa má stať ? AKý bude výsledok. Opäť som to nazval OKNO.

Ste dobrý, o tom žádná. A práve preto by ste mal čítať, čo tazatel píše. Makro je naschvál urobené tak aby zdržovalo. Ide len o to získať čas, na kliknutie na Súbor-Otvoriť. Celé je to o jedinom slove "DoEvents". To užívateľovi dovolí "vliesť" do Excelu, počas behu makra. A vypisuje číslo práve preto, aby bolo vidieť, že makro pracuje, a že napr. uchopenie okna či označenie buniek, makro pozastaví.

Vaše rady sú cenné, ale spôsob dávkovania je hrozný. Veď keby išlo o jednoduchosť alebo rýchlosť dalo by sa použiť aj WorksheetFunction.CountIf a pod.

EDIT: No odoslal som to neskôr ako eLCHa...

No zreťazil som Vaše podmienky do série, a vyšlo mi, že nemáte niektoré podmienky dokončené. Napr. tam kde je teraz "OKNO"
=IF(B2<A2;0;IF(B2=C2;A2/2;IF(B2=D2;A2;IF(B2-D2>=D2/10;A2*1,1;"OKNO"))))
=KDYŽ(B2<A2;0;KDYŽ(B2=C2;A2/2;KDYŽ(B2=D2;A2;KDYŽ(B2-D2>=D2/10;A2*1,1;"OKNO"))))

Skúste popis ešte zrevidovať, prípadne inak popísať. Nejako som to nepobral 5

Takže treba určiť prioritu podmienok (pretože niektorá môže úplne vylúčiť inú). Potom treba myslieť na to, že každá podmienka musí mať ošetrené oba stavy (ANO/NIE), a navyše treba myslieť na >, =, <.


Strana:  1 ... « předchozí  203 204 205 206 207 208 209 210 211   další » ... 303

Uživatelské menu

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

Formulář Faktura

Formulář Faktura IV

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

Helios iNuvio

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.

On-line nástroje