Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  16 17 18 19 20 21 22 23 24   další »

Excel omezení nemá. Můžeš přidávat dokud PC nenahlásí nedostatek paměti.

Při nastavení ohraničení je vhodné používat formát buňky-ohraničení. Jinak se při vkládání řádků bude chovat ohraničení "Dole" a jinak "Horizontálně".
Trochu jsem ti ten kód uklidil.

Tak vložit řádek.
Pošli sešit ať se podívám, jak to teď vypadá.

Zkus mi popsat co znamená "přidám řádek makrem".

Díval ses už na
Schema.ini File (Text File Driver)?

Vždyť sis na to odpověděl sám.
Při načítaní formuláře v proceduře UserForm_Initialize() ověřit stav a nastavit hodnotu.
Private Sub UserForm_Initialize()
CheckBox1.Value = IIf(Sheets("List1").Columns(8).ColumnWidth = 0, True, False)
End Sub

No nevím, s tímhle tam mají problém všichni.
Musíte nainstalovat databázový engine pro Windows 7 od společnosti Microsoft webu
http://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07A
Nebo
http://translate.googleusercontent.com/translate_c?depth=1&hl=cs&prev=/search%3Fq%3Dwin%2B7%2Bmicrosoft.jet.oledb.4.0%2527%2Bprovider%2Bis%2Bnot%2Bregistered%26hl%3Dcs%26biw%3D1214%26bih%3D696%26prmd%3Dimvnsfd&rurl=translate.google.cz&sl=en&u=http://www.microsoft.com/en-us/download/details.aspx%3Fid%3D13255&usg=ALkJrhhTluA35vxFO8UpwTfhv73PwPQKVw

Jak máš instal Win 32, nebo 64.
Providers máš 32 to může dělat problémy.
Z googlu:
ACE je novější verze přístup k soubory aplikace Access a Office 2010 je 64Bit ACE verze.
Já mám ještě 2003 32 bit tak víc neporadím.

Vyhledavač GOOGLU, je tam toho dost.
"win 7 microsoft.jet.oledb.4.0' provider"
Není instalovaný.

Jen dodatek ohledně úspory paměti.
Při deklaraci proměnných je třeba každé z nich přidělit svůj "as" zvlášť.
Kromě těch tří s "as" jsou ostatní proměnné typu Variant.
Alokace paměti:
Variant(s cisly) 16 bajty
Variant(se znaky)22 bajty
Single 4 bajty
String (s promennou delkou) 10bajt
Boolean 2 bajty
Taky je vhodné na prvním řádku modulů uvádět Option Explicit.
Debuger vás upozorní na nedeklarované proměnné, které jsou v opačném případě nastavené na Variant.
VBA Editor - Tools - Options - Editor - Require Variable Declaration

A k těm zástupným znakům:
"<br/><img" Like "<*g" = True
"<br/><img" Like "<*>*" = True
atd.

To je už třetí téma v jednom.

1)U metody InputBox je vhodné ošetřit stav, kdy toto okno zrušíš.
t = Application.InputBox("Zadej poznámku")
If StrPtr(t) = 0 Then Exit Sub

2)Uniká mi smysl první části procedury If t = "" Then

3)Procedura obsahuje dvakrát kód
If t <> "" Then Cells(rd, sl) = t
=> "t" je přidáno do sloupce(22) dvakrát po sobě?!

asi by bylo lépe napsat jednou If t <> "" Then
a pak pro obě tab
With Union(Range("M8:M28"),Range("M43:M63")).Validation

4)Píšeš: "Jde o to, že přidávám pomocí makra poznámky do rozevíracího seznamu".
Nebo do Sloupce(22)?

5)Píšeš "makro nebere nové řádky v potaz". Co tím myslíš?
Máš na mysli: zdroj seznamu v ověření dat nebere nové řádky v potaz?

6)Pokud přidáváš řádek "Rows(xx).Insert",
pak se zdroj seznamu v ověření upraví automaticky.

Pokud nepřidáváš řádek, ale hodnotu do dalšího řádku v sloupci(22)
a chceš aby se tato hodnota přidala do zdroje,
pak je možné například pro max 100 záznamů v sloupci(22)
do zdroje seznamu v ověření dat vložit
=POSUN(R8C22;;;POČET2(R8C22:R108C22))
=POSUN($V$8;;;POČET2($V$8:$V$108))

Pokud přidáváš poznámky pouze pomocí makra,
můžeš ten odkaz ve zdroji po každém přidání nového záznamu v tom makru přepsat.
V tom případě tady v tvém kódu nevidím žádný problém.

Ještě dodatek:
pro test prázdné buňky je lépe místo
If Cells(rd, sl) <> "" Then
používat
If Not IsEmpty(Cells(rd, sl)) Then

a jinak ten cyklus
Do While Cells(rd, sl) <> ""
rd = rd + 1
Loop
lze nahradit
rd = Cells(8, 22).End(xlDown).Row + 1
rd = Cells(108, 22).End(xlUp).Row + 1

Funkce DoEvents předá řízení operačnímu systému.
Řízení je předáno zpět,
jakmile operační systém dokončí zpracování událostí ve frontě a všechny úhozy ve frontě PředatKlávesovéÚhozy jsou odeslány.

Přiložil jsem vzorek, jak tuto metodu využívat.

Zde, když jak říkáš "matematicky si vím rady", by bylo nutné téma trochu rozvést, specifikovat.
Jaká je struktura naměřených (simulovaných) dat: postupná(lineární), náhodná?!
Jaký výpočet chceš získat?! Lokálního bodu uvnitř těchto dat, nebo vně?! Nebo pro celý blok?!
Způsobů pro takovouto analýzu je několik. Dej si do GOOGLU - KRIGING.
EXCEL obsahuje řadu funkcí pro takové výpočty a analýzy.

Aby se zkopírovaly i výšky řádků, musel bys označit i celé řádky tzn. kopírovat celý List. Taky by bylo vhodné šetřit těmi "Select". Zdržuje to kód. Já bych to napsal takto.Sub Kopirovani_stranky_za_ucelem_oprav()
Dim xCel As Range, xRdSl As Long, rdLast As Long
Application.Calculation = xlManual
Application.ScreenUpdating = False
Application.EnableEvents = False
On Error Resume Next
Sheets("Oprava").Select
If Err.Number = 0 Then
If MsgBox("Odstranit List /Oprava ?", vbExclamation + vbYesNo) = vbYes Then
Application.DisplayAlerts = False
Sheets("Oprava").Delete
Application.DisplayAlerts = True
Else
GoTo POKRACOVAT
End If
End If
On Error GoTo 0
Sheets.Add.Name = "Oprava"
Sheets("Oprava").Move After:=Sheets(3)
POKRACOVAT:
With Sheets("Oprava")
.Activate
.Cells.Clear
rdLast = Sheets("Hárok1").Cells.SpecialCells(xlCellTypeLastCell).Row
Sheets("Hárok1").Range("A1:N" & rdLast).Copy .Range("A1")
For xRdSl = 1 To Range("A:N").Columns.Count
.Columns(xRdSl).ColumnWidth = Sheets("Hárok1").Columns(xRdSl).ColumnWidth
Next xRdSl
For xRdSl = 1 To rdLast
.Rows(xRdSl).RowHeight = Sheets("Hárok1").Rows(xRdSl).RowHeight
Next xRdSl
For Each xCel In .Range("A1:N" & rdLast)
If Not IsEmpty(xCel) Then xCel = xCel.Value
Next xCel
End With
ActiveWindow.Zoom = 75
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
End Sub

Možnosti PAUZA A STOP jsou velmi užitečné.
Zapomínáte na funkci "DoEvents".


Strana:  1 ... « předchozí  16 17 18 19 20 21 22 23 24   další »

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

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

Aktivní diskuse