Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  99 100 101 102 103 104 105 106 107   další » ... 140

Jen dodám, že toto bude fungovat pouze v případě, kdy v centru zabezpečení bud nastaveno
Důvěřovat přístupu k objektovému modelu projektu VBA
Protože je to nastavení aplikace, které se nedá zapnout a vypnout programově, tak nedoporučuji.
Pokud toto chcete ovšem takto řešit, než začnete měnit kód kódem, požádejte uživatele, ať tuto volbu zapne a po skončení kódu zase vypne.

Ano, přesně jak píše lubo.
Někdy se stačí zamyslet, jak funguje excel a dá se vymyslet spousta triků, jak si ulehčit práci a bez VBA.
Toto je jeden z nich ;)

Je to ten obrázek?
http://wall.cz/upload/postatt/18629_screen.png

Dostalo se to do jiného vlákna ;))

Musíte vložit do modulu, který se jmenuje
ThisWorkbook
a ne do
Module1

Vložil jste kód do modulu sešitu?

Zamykat list před zavřením nemá smysl, pokud celý sešit neuložíte. Proto musíte uzamčení provést před uložením, tedy v proceduře BeforeSavePrivate Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ThisWorkbook.Worksheets("List2").Protect Password:="1234"
End Sub
Toto by ovšem znamenalo, že se vám při každém uložení list zamkne a vy jej budete muset odemknout, aby bylo možno v něm dále pracovat. Dalo by se to snad vyřešit následujícím kódemPrivate Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim bEvents As Boolean
bEvents = Application.EnableEvents
Application.EnableEvents = False

Cancel = True

With ThisWorkbook

Dim bLocked As Boolean
bLocked = .Worksheets("List2").ProtectContents

If Not bLocked Then
.Worksheets("List2").Protect Password:="1234"
End If

.Save

If Not bLocked Then
.Worksheets("List2").Unprotect Password:="1234"
End If

End With 'ThisWorkbook

Application.EnableEvents = bEvents
End Sub

Nemám otestováno, psáno z brucha.

To tu dávám jen jako poznámku, protože nevím zda je to tento případ. bloom nenapsal, zda ostatní uživatelé data ze sešitu pouze čerpají (čtou) nebo zda je i mění.
Pokud by pouze čerpali, jedno řešení by tu bylo a to uložit sešit na konkrétním listě a nastavit pouze pro čtení.

Pokud by byla makra povolena, nešel bych cestouPrivate Sub Workbook_Open()
...
End Sub
alePrivate Sub Workbook_BeforeSave((ByVal SaveAsUI As Boolean, Cancel As Boolean))
...
End Sub
To proto, že následující uživatel už vždy otevře sešit na tomto listu.

Lze také využít příkaz
O.POLÍČKU=ZLEVA(O.POLÍČKU(6;List1!A1);1)="="
Ale protože se jedná o Excel4Macro, tak je to v podstatě totéž jako ALem definovaná UDF

Takže nejjednodušší řešení je to, co napsal AL
CTRL+G (resp. F5) -> Jinak... - Zaškrtnout vzorce - OK

Už jsem tu dlouho nic nenapsal, tak abyste na mně nezapomněli ;)

@Opičák
Select :(

2 řádky a to jen proto, že se může stát, že tam žádný vzorec není:Sub subFormulas()
On Error Resume Next
ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas).Interior.Color = vbYellow
End Sub

Tohle je opravdu jen technická a hlavně principiální poznámka. Jsou jazyky, které by vás takto ani nepustily dále.

Pokud máte, že i může být od 1 do x
pak by to i mělo být stejného typu jako x právě proto, že i může nabýt kterékoliv hodnoty od 1 do x. Tedy když budete mít x = 300 a u i nastavíte byte, tak i=256 vám vyhodí chybu.
Máte napsánoFor i = 3 To lastRw Step 3a pravděpodobnost, že číslo řádku bude vyšší než 255 tu je.

@AL
Jen technická. Když máte lastRw Long, potom i by mělo být taky Long ;)For i = 3 To lastRw

@Opičák
Jen technická. Kód je samozřejmě funkční, ale vzhledem k tomu, že jsme schopni říct, na kterou pozici se má položka přidat, tak zbytečně načítáte do pole, které pak seřazujete.
Můžete to udělat rovnou

Sub nacistSeznam4()
Dim sCellValue As String, i As Integer, j As Integer
With UserForm1.ComboBox1
For i = 1 To Range(Range("B3"), Range("B3").End(xlDown)).Cells.Count Step 3
sCellValue = CStr(Range(Range("B3"), Range("B3").End(xlDown)).Cells(i).Value)

If .ListCount = 0 Then
.AddItem sCellValue
Else
For j = 0 To .ListCount - 1
If .List(j) > sCellValue Then
.AddItem sCellValue, j
Exit For
ElseIf j = .ListCount - 1 Then
.AddItem sCellValue
End If
Next j
End If
Next i

.ListIndex = 0

End With 'UserForm1.ComboBox1
UserForm1.Show
End Sub

Asi jste kvůli tomu nemusel zakládat nové vlákno, ale pokračovat v původním.

Zase jenom nabídnu latu. Pořád totiž úplně nechápu, jak vám to vlastně funguje a z těch obrázků to asi nepochopím ;)).

TextBox2.Text = Replace(Format(Cells(i + 1, 3), "h:mm:ss.0"), ".0", vbNullString)

edit:
aha - tak musel, protože je to zamknuté ;))

Poslední formátování se vám nahoru přesune proto, že se týká celé oblasti A4:K250 a ty ostatní 3 jsou pouze její podmnožinou (sloupce v této oblasti). To znamená, že musíte pro sloupce BCD zvlášť nastavit 2 formátování - duplicitu a "x". Potom vyberte ostatní sloupce v oblasti a nastavete pro ně zvlášť podmínku "x". Pak se vám to přesouvat nebude, protože každá oblast bude mít své formátování a nebudou na sobě závislé.
Jestli je to správné chování, těžko říct ;)

Zkusil jsem udělat přílohu - snad to bude pochopitelnější.

Dobře - nebudu se zamotávat a zkusím nabídnout - vyzkoušejte Format, jestli to nepomůže

Me.TextBox1.Text = Format(ActiveCell.Value, "h:mm:ss.0")

tak to nepomohlo - nepodařilo se mi nasimulovat tu tečku ;)))
pořád tam mám čárku

tak musim zadat u setin tecku, at se to spravne zobrazi, tak jak chci. u vysledku se skrytymi setinami
tomuhle nerozumím - tu tečku tam dáváte vy ručně nebo se tam dostane jak?

V tom formuláři máte textbox a ten pracuje s textem.
Takže abychom správně poradili, museli bychom vidět kód, kterým se ta hodnota načítá a kód, kterým se přenáší do listu.


Strana:  1 ... « předchozí  99 100 101 102 103 104 105 106 107   další » ... 140

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