Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  144 145 146 147 148 149 150 151 152   další » ... 298

A kde je potom koniec pracovnej doby ? Priložte reálnu prílohu s reálnym rozmiestnením a reálne vyplnenými hodnotami, v ktorých budú zastúpené všetky možnosti, ktoré môžu nastať.

Úprava vzorcov aj makra. Skúste nájsť rozdiel v makre tých dvoch hárkov. Tam bola chyba.
Application.EnableEvents - použite iba ak potrebujete (v popise)

Tak to bude musieť byť asi len makro. Pr.

XLS je starý typ a môže obsahovať makrá, naproti tomu xlsx je novší typ bez možnosti obsahu makier. Na súbor s obsahom makier je xlsm.

Tak malú šírku to považuje za 0.
Dim DisableEvents As Boolean
Const SIRKA_MALA = 0.01
Const SIRKA_VELKA = 10

Private Sub ckbSloupec2_Click()
ZmenaSirky ckbSloupec2
End Sub

Private Sub ckbSloupec3_Click()
ZmenaSirky ckbSloupec3
End Sub

Private Sub ckbSloupec4_Click()
ZmenaSirky ckbSloupec4
End Sub

Private Sub UserForm_Initialize()
DisableEvents = True
ckbSloupec2.Value = List1.Columns(2).ColumnWidth <= SIRKA_MALA
ckbSloupec3.Value = List1.Columns(3).ColumnWidth <= SIRKA_MALA
ckbSloupec4.Value = List1.Columns(4).ColumnWidth <= SIRKA_MALA
DisableEvents = False
End Sub

Sub ZmenaSirky(ckb As MSForms.CheckBox)
If DisableEvents Then Exit Sub
Select Case ckb.Value
Case True: List1.Columns(CByte(ckb.Tag)).ColumnWidth = SIRKA_MALA
Case False: List1.Columns(CByte(ckb.Tag)).ColumnWidth = SIRKA_VELKA
End Select
End Sub

Metóda SpecialCells je v prílohe tiež :)

Také ružové to nieje. A navyše sa nemá hľadať posledný riadok, ale prvá prázdna bunka. Čo je niečo úplne iné. Lenže k nájdeniu správneho riešenia je treba správne zadanie. A to tu absentuje. Kde je ukážková príloha ?

Posielam zopár modelových situácií aj s riešeniami, a upozornením na niektoré možné problémy.

Prípadne sa dá použiť ešte aj Cells(y,x).Find(...)

Dostačovať bude asi aj ten jeden vzorec

Makrom ? Prázdne riadky nemusíte mazať, to sa urobí samé. Stačí iba uložiť súbor.
Sub Nove_data_do_DB()
Dim DA(), RA As Long, DB(), RB As Long, i As Long, rngDel As Range, ColB As New Collection, Vsetko As String, Polozka, PocetNovych As Long

With wsTabA
RA = .Cells(Rows.Count, 1).End(xlUp).Row - 2
If RA = 0 Then Exit Sub
ReDim DA(1 To RA, 1 To 5)
DA = .Cells(3, 1).Resize(RA, 5).Value2
End With

With wsTabB
RB = .Cells(Rows.Count, 1).End(xlUp).Row - 2
If RB > 0 Then
ReDim DB(1 To RB, 1 To 5)
DB = .Cells(3, 1).Resize(RB, 5).Value2
For i = 1 To RB
ColB.Add i, Join(Array(DB(i, 1), DB(i, 2), DB(i, 3), DB(i, 4), DB(i, 5)), "•")
Next i
End If
End With

Erase DB
On Error Resume Next

With wsTabA
For i = 1 To RA
Vsetko = Join(Array(DA(i, 1), DA(i, 2), DA(i, 3), DA(i, 4), DA(i, 5)), "•")

Select Case Len(Vsetko)
Case 4
If rngDel Is Nothing Then Set rngDel = .Cells(i + 2, 1).Resize(, 5) Else Set rngDel = Union(rngDel, .Cells(i + 2, 1).Resize(, 5))
Case Else
Polozka = ColB(Vsetko)
If Err.Number <> 0 Then
PocetNovych = PocetNovych + 1
ReDim Preserve DB(1 To 5, 1 To PocetNovych)
DB(1, PocetNovych) = DA(i, 1): DB(2, PocetNovych) = DA(i, 2): DB(3, PocetNovych) = DA(i, 3): DB(4, PocetNovych) = DA(i, 4): DB(5, PocetNovych) = DA(i, 5)
Err.Clear
End If
End Select
Next i
End With

On Error GoTo 0

If PocetNovych > 0 Then wsTabB.Cells(RB + 3, 1).Resize(PocetNovych, 5).Value2 = WorksheetFunction.Transpose(DB)
If Not rngDel Is Nothing Then rngDel.Delete Shift:=xlUp
End Sub


Skúšajte to výhradne na fyzickej kópii súboru !!!

No tomu práve nerozumiem, ako má makro zistiť, ktorý súbor patrí do ktorej skupiny, aby mohlo zasiahnuť a zatvoriť predošlý súbor z danej skupiny. Nejako sa musia rozlišovať.

Teda "skupina zošitov" je iba jedna jediná ? Lebo výraz "vybrať skupinu zošitov" jasne evokuje možnosť výberu z viacerých možností. Nie jednu.
Uveďte ešte toto, a uvidím, porozmýšľam nad tým...

"Otvorí sa UVOD užívateľovi na PC" - Akože "sa" ? Pri štarte akéhokoľvek Excelu "sa" automaticky má otvoriť UVOD ? Naplánovanou úlohou pri štarte PC ? Alebo "si" ho užívateľ otvorí sám ? V tom prípade to má byť "Užívateľ si otvorí UVOD na PC", to je predsa veľký rozdiel.

"kde si vyberie "skupinu zošitov"" - Teda otvorenie UVOD-u vyvolá akciu, kde nabehne nejaký formulár v ktorom si má užívateľ vybrať skupinu zošitov ?

"skupinu zošitov" - To je čo ? Adresár so súbormi rovnakého typu ? Teda treba zistiť na aké slová súbory začínajú (určujúcim znakom môže byť podčiarknik). Alebo skupina zošitov znamená už výber priamo tých začínajúcich slov (napr. "Skuska_"), ImputBox-om alebo formulárom ?

"Po výbere sa otvorí SKUSKA_*(sieť) a zatvorí UVOD" - Teda sa má po výbere skupiny sám automaticky otvoriť prvý súbor danej skupiny ? Alebo sa má niekde v skrytom liste v doplnku uchovávať aktuálny výber skupiny (alebo aj zoznam možných skupín), a čakať či si súbor z danej skupiny užívateľ otvorí sám ? Vtedy je to rovnako zle napísané ako hore - nie "sa" ale "si".

No a čo ak si užívateľ svojprávne otvorí koľko chce súborov z inej ako z vybratej skupiny ?

Ak sa/si opätovne otvorí UVOD, zatvoria sa všetky zošity doteraz otvorených skupín (lebo mohol si svojvoľne otvoriť aj X zošitov z nevybratej skupiny), a načíta sa opäť prvý zošit z novovybranej skupiny ?

Ak sa pri otvorení UVOD zistí, že prvý súbor vybranej skupiny sa nedá otvoriť, tak sa z nejakou hláškou o nedostupnosti ukončí aj tento UVOD (bez uloženia)? Rovnako aj všetky doteraz otvorené súbory zo všetkých skupín?

Ak bude umožnené užívateľovi otvoriť svojvoľne aj iné skupiny, na ich zatvorenie je potreba dopredný zoznam všetkých skupín, a všetkých súborov v nich. Ak sa jedná o zložky, dá sa urobiť zoznam súborov v nich uložených, a tie uchovať v doplnku. A potom porovnávať s otvorenými zošitmi.

A to ma určite nenapadá všetko...

Prečítal som si to asi 7x a stále som nechápal čo chcete. Na 8-mi som to možno pobral. Vy chcete toto ? :

-Pri otvorení akéhokoľvek zošitu Skuska_* sa má kontrolovať, či je otvorený súbor UVOD.xls. Ak nieje, má sa otvoriť aj ten. Teda vždy, ak je nejaký Skuska_* otvorený musí byť aj UVOD.xls otvorený.
-Ak nieje otvorený žiaden Skuska_*, zatvorí sa aj UVOD.xls (bez uloženia) ?

Myslíte riešenie cez Kutools, ktorý je iba Demo, alebo riešenie cez LOOKUP, v ktorom je v poslednom kroku natvrdo capnutá absolútna oblasť (teda absolútne nedynamická) $D$2:$D$10 ? Ak pribudne kladné vyhodnotenie ďalšej hodnoty, tak to samozrejme prestane fungovať.

Do doplnku, opakujem ešte raz, DO DOPLNKU (!), vložte do modulu Tento_zošit kód:
Private WithEvents App As Application

Private Sub App_WorkbookOpen(ByVal WB As Workbook)
Dim WBS As Workbook, MenoS As String, MenoN As String
MenoN = WB.Name
If Left$(MenoN, 7) = "Skuska_" Then
For Each WBS In App.Workbooks
MenoS = WBS.Name
If Left$(MenoS, 7) = "Skuska_" And MenoS <> MenoN Then WBS.Close False: Exit For
Next WBS
End If
End Sub

Private Sub Workbook_Open()
Set App = Application
End Sub

Doplnok, znovu opakujem DOPLNOK (!) uložte.

Zámer je taký, že sa v doplnku vytvorí premenná App, ktorá sa pri Workbook_Open toho doplnku (čo sa udeje pri akomkoľvek prvotnom otvorení Excelu, keď sa aktivujú aj iné doplnky) naplní objektom samotnej aplikácie aj s udalosťami. A potom sa kontroluje každá globálna-aplikačná udalosť App_WorkbookOpen, vznikajúca pri akomkoľvek otvorení akéhokoľvek súboru. Vtedy sa zkontroluje či ide o súbor "Skuska_*", ak áno, nájde sa prípadný otvorený predošlý "Skuska_*" a zavrie sa. Takže tak. Skúste.


Strana:  1 ... « předchozí  144 145 146 147 148 149 150 151 152   další » ... 298

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