Tým "int" myslíš integer číslo ? Čiže celé číslo bez desatinných miest ?
Ja mám SK Office, a ak zadám akékoľvek hodnoty akéhokoľvek typu, a nastavím na ne Zoznam v Overení údajov, normálne mi to berie.
Ak chceš vložiť do Zoznamu maticovú konštantu s predvolenými položkami, tak to myslím do Overenia údajov - Zoznamu, nejde.
A prečo to nemôže byť odkaz na oblasť ?
PS: To červené je odkaz na maticovú konštantu (pole hodnôt)
EDIT: Aha, tak beriem späť.
Bolo by dobré dať asi prílohu. Netuším ako to chceš ošetriť napr. ak sa zmení počet riadkov + alebo -. Pretože v stĺpci A máš okrem vzorca aj nejaké hodnoty. Ty potrebuješ ten pôvodný vzorec, ktorý platil pred zmenou, zmazať, a na nové miesto nahodiť nový. Ako vieš čo máš zmazať, aby si nezmazal údaje, ale len vzorec ?
HODNOTA to vráti ak nezadáš vzorec ako maticový. Takže vo vzorci stlač nie ENTER ale Crtl+Shift+ENTER. Zásadný rozdiel.
A nemá to byť náhodou tak, že má byť posledný záznam na vrchu ?
Ak to má byť DB ako píšeš, tak asi bude platiť
1 záznam = 1 riadok
Potom by to mohlo byť takto. A nezáleží na tom, či sú vyplnené všetky údaje alebo nie.
Aktivuj si v makre režim radenia posledný na spodku alebo posledný na vrchu. Máš tam oba.
PS: Ak to nemá byť databázový záznam (čiže záznam = riadok), tak treba obdobne urobiť toto, čo navrhujem pre všetky dotknuté stĺpce zvlášť.
Keď si to skombinujete, tak toto vložte do VBA daného listu v ktorom bunka je.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KonBunka As Range
Set KonBunka = Range("C1") 'Nastavenie kontrolovanej bunky
If Not Intersect(KonBunka, Target) Is Nothing And KonBunka = 100 Then
'Splnenie podmienky - vykonanie nejakej akcie
MsgBox ("Zdravím Vás, ja som bunka " & KonBunka.Address(0, 0) & " s hodnotou 100.")
End If
End Sub
EDIT: Omluva. Druhý krát som si to prečítal, a konštatujem, že jedine AL to pochopil a popísal správne. Nejde o udalosť vyvolanú zmenou hodnoty v bunke na 100, ale o kontrolu bunky počas spracovávania. To je tak, keď sa robí rýchlo...
Upravte si to makro takto (samozrejme musia sedieť názvy listov v Array()):
Sub StartPrint()
'ActiveSheet.PrintOut 'Okamžiťá tlač listu
'ActiveSheet.PrintPreview 'Náhľadové okno
Sheets(Array("tisk1", "tisk2", "tisk3")).Select
Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint") 'Nové náhľadové okno s možnosťami
ActiveSheet.Select
End Sub
EDIT: Kým som to napísal AL ma predbehol. Pekný deň.
2 eLCHa : Áno kontroly "" a Nothing odchytí OnError. V Intersect je to zámerne, keby došlo k zmene viacerých buniek naraz (makrom, či kopírovaním).
2 Kneiflpe : No to netuším. Nedali ste prílohu, ani nevieme, či bude počet listov stále rovnaký, kde bude zoznam názvov listov uložený ... treba upresniť a dorobíme (keď bude čas).
Napr takto pri štandardnom Zozname. Ak bude počet a názvy listov variabilné, treba dorobiť makro, ktoré pri urobí vždy aktuálny zoznam listov.
V tom príklade od "AL" nahraď :
If pass <> "HESLO" Then Exit Sub
za
If pass <> "HESLO" Then
MsgBox ("špatné heslo")
Exit Sub
End If
Po tomto bloku nasleduje Tvoj kód, ktorý sa vykoná keď je heslo správne, a ukončuje ho až ukončenie procedúry "End Sub"
Obdobne bez problémov upravíš aj ostatné príklady...
Predošlý súbor som doplnil o formulár s overením heslom na prvé tlačítko. Heslo je "abc". Treba potom samozrejme zmeniť heslo pre vstup do makier, ktoré je tiež "abc" :
Vo VBA označ tento VBAProject(Zamknut tlacitko.xlsm) - Tools - VBAProject Properties - Protection - 2x heslo
Alebo aj niečo takéto by mohlo pomôcť. Toto som urobil na FormBtn. Na ActiveX použiť Enabled vlastnosť, ktorú FormBtn nemajú.
Aktivuj si v makre zrušením alebo pridaním "'" pred daný riadok buď:
Okamžitá tlač
ActiveSheet.PrintOut
Náhľadové okno
ActiveSheet.PrintPreview
To nové náhľadové okno
Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")
Samozrejme iba jednu možnosť si tam daj.
Keď dáš tlačítko "Zaslat odpověd", tak nad políčkom kam píšeš, je "Příloha" a vedľa je tlačítko "Vybrať súbor". Cez toto vyberieš u Teba v PC uložený archív RAR, so zabaleným súborom/súbormi.
Skús ako som ti písal, ten súbor stiahnuť do PC, a z PC ho otvor. Neotváraj ho rovno zo siete. Tá metóda DownloadFile(), čo som ti poslal mi funguje. Samozrejme sa to dá prispôsobiť, že myURL bude parameter...
No to nebude také jednoduché. Width je iba na čítanie, ColumnWidth je pre zápis, obe v iných "nešťastných" jednotkách. Písmo v ďalších jednotkách. Pomer medzi dvomi jednotkami šírky je úplne iný ako pomer medzi dvomi jednotkami výšky. Každý font (+rez) má iné rozmery...
Jedno "riešenie" by mohlo byť takéto:
-bude tam 1 skrytý (Visible=False) Label
-tomu nastavíme potrebné atribúty fontu z bunky
-z tohoto Labelu (LTest) získame šírku textu
-túto šírku prepočítame na "idiotské" jednotky bunky
-zmeníme veľkosť bunky (teda mení sa celý riadok a stĺpec)
a v poslednom bode nastávajú 2 problémy:
1. zmena veľkosti bunky sa neaktualizuje, pokiaľ na bunku nekliknem. Nepomáha Application.ScreenUpdating, ani Calculate, ani Select, ani Activate.
2. v bunke sú okolo textu medzery. Aj keď je odsadenie =0, aj tak tam sú. Potrebujeme získať veľkosti týchto medzier a pripočítať ich k nám vypočítaným hodnotám, ak to neurobíme, dostaneme "####" lebo sa text tesne nevojde do bunky, pretože Label tieto medzery nemá. Nemôžeme ich pripočítať ale napr. percentuálne, lebo veľkosťou a typom písma sa to mení nepercentuálne.
Takže ako to vyriešiť.
PS: Pre každý stĺpec aj riadok môže byť logicky iba jedna bunka takto ošéfovaná, lebo by si navzájom menili hodnoty. Použiť stačí len ten jeden Label pre všetky.
ListBox mi funguje tak, že pokiaľ píšeš do neho (keď si naň kliknutý) bez prerušenia trvajúceho cca 1-2s, tak ti označí prvý riadok spĺňajúci to čo píšeš. To je ale nepraktické, keďže akonáhle na chvíľku prestaneš, tak berie od teba nový text na nové hľadanie. Neviem ako sa to dá vyriešiť priamo v LB, ale môžeš to vyskúšať urobiť aj takto:
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.