Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  32 33 34 35 36 37 38 39 40   další » ... 122

Tiež asi úplne nerozumiem zadaniu, každopádne, test na názov aktívneho listu by mohol byť nejako takto:Sub test()
If ThisWorkbook.ActiveSheet.Name = "CN" Or ThisWorkbook.ActiveSheet.Name = "DL" Then
MsgBox "Nazov aktivneho listu je CN alebo DL"
'msgbox zakomentuj a tu zapis, co sa ma diat v pripade platnej podmienky
Else: MsgBox "Iny aktivny list"
'msgbox zakomentuj a tu zapis, co sa ma diat v pripade neplatnej podmienky
End If
End Sub

Sub test2()
If ThisWorkbook.ActiveSheet.Name <> "CN" And ThisWorkbook.ActiveSheet.Name <> "DL" Then
MsgBox "Iny aktivny list"
'msgbox zakomentuj a tu zapis, co sa ma diat v pripade platnej podmienky
Else: MsgBox "Nazov aktivneho listu je CN alebo DL"
'msgbox zakomentuj a tu zapis co sa ma diat v pripade neplatnej podmienky
End If
End Sub
Prečo to prípadne nepošleš mailom a nenapíšeš zrozumiteľne, čo potrebuješ, keď sa s tým súborom už nejakú dobu hráme?
P.S.: k definícii pojmov asi toto:
pojmy zošit, workbook a súbor sú čiastočné synonymá
sheet nie zošit, ale list (hárok), niekto uvádza i tab, ten pojem ale nemám rád
CN a DL sú názvy listov (sheetov), to viem, páč ten súbor poznám, ale rozumiem, že syd sa v zadaní zbytočne stráca, páč sa vyjadruješ nepresne.

Zaujímavé. Mne napr. teraz inštalovali v práci O365 a u Active X comboboxov prestala fungovať možnosť naplnenia Comboboxov cez vlastnosť ListFillRange, ktorá fungovala v E2007. Musel som to obísť tým, čo navrhuje xlnc, t.j. pomocou vlastnosti comboboxu List. Príklad:Private Sub RegionCombo_Change()
If RegionCombo.Value = "(All)" Then
' CountryCombo.ListFillRange = "All"
CountryCombo.List = WorksheetFunction.Transpose([All])
Else: 'CountryCombo.ListFillRange = RegionCombo.Value
CountryCombo.List = WorksheetFunction.Transpose(ThisWorkbook.Names(RegionCombo.Value).RefersToRange)
End If
[CmbRegion] = RegionCombo.Value
Call ChangeAxisScales
[LC_CmbRegion] = RegionCombo.Value
Call ChangeLC_ChartAxisScales
End Sub

Týmto spôsobom som musel poupravovať kódy v niekoľkých comboboxoch v scorecard dashboarde, ktorý spravujem. Samozrejme, so zachovaním spätnej kompatibility voči E2007.

Merlin, pri skúmaní tvojho písomného prejavu ma často napadá otázka, prečo som pri žiadosti o české občianstvo musel skladať skúšku z jazyka.

Mám za to, že máš problém v chápaní toho, k čomu slúži a ako funguje funkcia Now().
Cestou k riešeniu problému je udalostné makro, ako zmieňuje Pavlus. Na funkciu Now(), ktorú používaš na liste vo vzorci, zabudni. Tá má iný účel, než nejaký Time Stamp.

Otázkou je, či je nuly nutné naozaj mazať, alebo ich stačí iba nezobraziť. Nakoľko Excel vo verziách od 2007+ možnosť potlačiť zobrazenie núl schoval pod veľké tlačítko v ľavom hornom rohu a nájdenie tejto voľby v možnostiach potom chvíľu trvá, používam inštrukciu v kóde, ktorému som priradil klávesovú skratku:ActiveWindow.DisplayZeros = Not ActiveWindow.DisplayZeros

Tak to je vtipné. Už som to chcel po prebdenej noci vypnúť s tým, že sa na ten Tvoj nápad pozriem až v pondelok v práci. Ale potom mi to nedalo, páč to nevypadalo nijako zložito. A skutočne, stačilo za moju inštrukciu forDel.QueryTables.Add(Connection:=conStr, Destination:=Range("A1"), Sql:=sqlStr).Refresh dopísať ten parameter, takže forDel.QueryTables.Add(Connection:=conStr, Destination:=Range("A1"), Sql:=sqlStr).Refresh BackgroundQuery:=FalseNjn, to je tak, keď zabúdam na on-line nápovedu. Ešte, že si tu Ty, Lubo, Petr Pecháček a ešte pár ďalších bystrých ľudí. Ja som si hovoril, že to časom nejak prepíšem, ale Tvoja rada bola geniálne jednoduchá, takže Ti za ňu veľmi pekne ďakujem. Ja som vedel, že treba znemožniť aktualizáciu na pozadí, akurát som nedokázal prísť na to, kam to zapísať. Máš u mňa pivo, ale do Ostravy asi cestu mať nebudem, tak sa musíš, Karle, zastaviť Ty :) Ďakujem krásne.

Ahoj, ako by šlo elegantne vyriešiť pozastavenie makra do doby, než prebehne aktualizácia QueryTable? V makre mám stopku, ale trochu mi vadí, že musím potom 8 x mačkať F5.
Application.Wait nepomohol, preto tá stopka. Prikladám pre ilustráciu kód, pokiaľ by ma niekto dokázal naviesť, budem vďačný, zverejniteľný súbor v túto chvíľu nemám, než by som to vytvoril z toho ostrého, zabijem s tým niekoľko hodín. Je to pomerne komplikovaný dashboard, ktorý som zdedil a ktorý si postupne pretváram a automatizujem k obrazu svojmu. Tu je teda aspoň ten kódik:Sub Update_CM_sheets()
Dim qt As QueryTable, forDel As Worksheet, Cat As String, sqlStr As String, conStr As String, myArr(), i As Byte
Dim xlTblName As String, srcRng As Range, tgtRng As Range

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
myArr = Array("Equipment", "IT", "Lab", "Logis", "Real Estate", "Subcon", "Travel", "Other")
conStr = "ODBC;DSN=Excel Files;DBQ=" & ThisWorkbook.FullName & ";DriverId=1046;MaxBufferSize=2048;PageTimeout=5;"

For i = LBound(myArr) To UBound(myArr)
Select Case i
Case 4: xlTblName = "xlTbl_RealEstate"
Case Else: xlTblName = "xlTbl_" & myArr(i)
End Select
Cat = myArr(i)
Set forDel = Sheets.Add

'**********************************************************************************************************************
sqlStr = "SELECT [Region Level 3] AS Country, [Project Title] AS [PROJECT NAME], Status AS [Progress Status], " & _
"'' AS [COMMENTS / ACTION ITEMS], [SPEND IN CHF], [ANNUAL SAVINGS CHF (NOT DEPREC)], " & _
"[Annual Savings CHF (Deprec)] AS [SAVING TARGET], [REGIONS], [PROJECT OWNER], " & _
"[Project Number] AS [PROJECT ID], [Category Level 1] AS [SGS COMMODITY], " & _
"[Region Level 2] AS [REGION], [Status] AS [PROJECT STATUS], " & _
"[Execution Start Date] AS [PLANNED START DATE], " & _
"[Execution End Date] AS [PLANNED END DATE], [REALIZATION START MONTH], " & _
"[Project Strategy], [Phase], [Estimated Spend] AS [BASELINE SPEND CHF], " & _
"[CAPEX Depreciation (in years)] AS [CAPEX DEPRECIATION (YEARS)],[Savings Type], [Capex] " & _
"FROM Pipeline WHERE CM='" & Cat & "'"

conStr = "ODBC;DSN=Excel Files;DBQ=" & ThisWorkbook.FullName & ";DriverId=1046;MaxBufferSize=2048;PageTimeout=5;"

forDel.QueryTables.Add(Connection:=conStr, Destination:=Range("A1"), Sql:=sqlStr).Refresh

' Application.Wait (Now + TimeValue("0:00:30"))
Stop

Set srcRng = forDel.[A1].CurrentRegion
Set srcRng = srcRng.Offset(1, 0).Resize(srcRng.Rows.Count - 1, 4)
Set tgtRng = Range(xlTblName).Cells(1, 1)

srcRng.Copy
tgtRng.PasteSpecial xlPasteValues
Application.CutCopyMode = False


Set srcRng = forDel.[A1].CurrentRegion
Set srcRng = srcRng.Offset(1, 4).Resize(srcRng.Rows.Count - 1, srcRng.Columns.Count - 4)
Set tgtRng = Range(xlTblName).Cells(1, 6)

srcRng.Copy
tgtRng.PasteSpecial xlPasteValues
Application.CutCopyMode = False

Application.DisplayAlerts = False
forDel.Delete
Application.DisplayAlerts = True

Next i

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

MsgBox ("Done")
End Sub

lubo ako obvykle diktuje 1 v jednoduchosti je krása

Do riadku 2 (H2) maticový vzorec:=IF(I2="N";"N";SUM(--(I2>IF($C$2:$C$27<>C2; MAX($I$2:$I$27)+1; $I$2:$I$27)))+1)Skopírovať do ostatných riadkov.

V tom prípade sa spýtam: V čom rozšírený filter nevyhovuje?

Ja som naopak presvedčený, že rozšírený filter nevyskúšal. No nič, pokiaľ vás baví znovu vynaliezať koleso, tak prosím.

Bez jedného pomocného stĺpca to asi nepôjde.
Prečo by to nešlo? Skutočne nepoznáte rozšírený filter?http://www.contextures.com/xladvfilter01.html

K riešeniu úloh tohto typu slúži rozšírený filter. Dáta však musia začínať až od riadku 2.

Ide to i vzorcom, treba si s tým trochu vyhrať. V priloženom riešení je treba mať dáta zotriedené podľa mena, potom sa dajú použiť vzorce v stĺpcoch K-S. Takto vznikne polotovar, následne je treba vyfiltrovať záznamy, ktoré v stĺpci K obsahujú mená.

Nemám právo niekoho poučovať, píšem, čo sa osvedčilo mne. Faktom ale je, že excel ma baví, takže motiváciu skúšať veci sám mám. Niekto iný to môže mať inak. Kľudne sa pýtaj. Ale zmienil som, sám by si na to podľa môjho názoru prišiel. Ja mám vždy väčšiu radosť, keď sa k výsledku dopracujem hlavne vlastným úsilím, ale opäť, to má každý nastavené inak. Pár ľudí si nechá napr. vycvičiť od niekoho iného psa a taký psík funguje spoľahlivo. Existuje spústa lepších cvičiteľov psov, než som ja, ale na výcviku svojho psíka chcem participovať, mám z výsledku väčšiu radosť, i keď nie je perfektný.


Strana:  1 ... « předchozí  32 33 34 35 36 37 38 39 40   další » ... 122

Uživatelské menu

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

Menu

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