Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  186 187 188 189 190 191 192 193 194   další » ... 289

xlnc by to, čo vymýšľate, nazval "bejkárny". A správne. Prerobil som to, zatiaľ bez CLEAN (lebo ničí aj CHR(10), ale to by sa dalo vybaviť dočasným nahradením...), ale :

-nieje mysliteľné, aby makro prechádzalo každé jedno písmenko, zisťovalo si o ňom všemožné formátovanie (font, veľkosť, rez, farba, index, ...)
-potom prečistilo nadbytočné medzery, s tým, že bude po každom výmaze prepočítavať a prepisovať formáty všetkých písmeniek po jednom, aby boli tak ako predtým výmazom nadbytočnej medzery
-až potom skontrolovalo podmienky vkladania textu Zač/Kon
-a následne zopakovalo cirkus s premiestňovaním formátov každého písmenka

S toho vyplýva toto moje riešenie, ktoré nepočíta so žiadnym iným formátom textu, iba podľa presne daných pravidiel. Teda tie kľúčové slová "služba", "príslužba", "dodatok", "neop.", "Začiatok hod." & Chr(10) & "Koniec hod." sa zafarbia, a ak bolo iné zafarbenie podľa ľubovôle kolegyne, tak sa zruší.

Čo už, presná odpoveď na otázku ... 6 strán na 1, to bude hardcore.

Príklad:
Sub Tlac1Strana()
With ActiveSheet
With .PageSetup
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
.PrintOut
End With
End Sub

Je to možné, pretože mne to funguje. Podľa mňa nemáte korektne uložené makro v Personal.xlsb.
Otvorte si Poznámkový blok, skopčite si tam kód makra. Zatvorte všetky zošity. Vytvorte jeden nový čistý. Dajte nahrať makro, kde v okne napíšte názov makra napr. "VlozText", klávesovú skratku "m" (to bude potom Ctrl+Shift+M), prípadný nejaký krátky popis, ale hlavne nastavte uložiť do "Zošit osobných makier". Zastavte záznamník makra. Vo VBA vložte telo kódu z poznámkového bloku do nahraného makra vo VBA. Vo VBA stlačte Uložiť. Zatvorte Excel, bude sa pýtať na uloženie nového súboru napr. Zošit1, dajte nie. Ak sa opýta na uloženie Zošitu osobných makier, dajte áno. Zatvorte Excel. Naštartujte ho, a hneď si to vo VBA skontrolujte či tam máte Personal.xlsb aj s makrom. Musí tam byť. Teraz som to robil.

Prípadne si
Worksheets("makro")
zmente na
ActiveSheet

Metóda Cells je trošku rýchlejšia, odhadom 10 % ...

Rozdiely sú 2:
1. Range() pracuje s textovou adresou bunky "E6", a Cells() pracuje so súradnicami Cells(6, 5) - šiesty riadok a piaty stĺpec.
2. Druhý rozdiel je to With Data. Vlastnosť Name listu "Data" je zmenená na Data. Teda CodeName listu je Data. Tá bodka pred ".Cells()" znamená, že sa jedná o objekt podriadený objektu vo With, teda je jasne dané, že sa pracuje s hodnotami v liste Data. Ak by tam tá bodka pred "Cells()" nebola, znamená to, že sa pracuje s práve aktívnym listom. Použitie zaleží na konkrétnej situácii, či sú dáta v liste Data, ktorý je zároveň aktívny alebo nie.

To isté s bodkou a With platí aj pre textovú adresáciu Range.

Použil som teraz inú metódu (trošku rýchlejšiu). Ak by malo byť tých riadkov naozaj veľa, tak ma napadá ešte najskôr cez SpecialCells poriešiť hromadne prázdne bunky a následne cez pole (tak ako teraz), zaplnené aby sa to zase trošku zrýchlilo.

EDIT: marjankaj, sry hrubka, samozrejme prvé má byť False - opravené

???
Sub VlozText()
Dim Riadkov As Long, Bunka As Range, HDN, Dlzka As Long, Text As String * 15
Text = "Začiatok" & Chr(10) & "Koniec"

Application.ScreenUpdating = False

With Worksheets("makro")
Riadkov = .Cells(Rows.Count, 1).End(xlUp).Row
If Riadkov = 1 And .Cells(1, 1) = "" Then Exit Sub

For Each Bunka In .Columns("O").Resize(Riadkov).Cells
With Bunka
HDN = .Value2
Dlzka = Len(HDN)
.Value2 = IIf(Dlzka = 0, vbNullString, HDN & Chr(10)) & Text
.Characters(Dlzka + IIf(Dlzka = 0, 1, 2), 15).Font.Bold = True
.Characters(Dlzka + IIf(Dlzka = 0, 10, 11), 6).Font.Color = -65281
End With
Next Bunka
End With
Set Bunka = Nothing

Application.ScreenUpdating = True
End Sub

Toto skúste popísať inak, pretože ja osobne nemám ani páru, čo konkrétne Vám nejde, a čo vlastne potrebujete urobiť...

To je ale dosť veľký priekak, že programujete, a neviete čo je Dim, String a Boolean. Už len keď si zadáte do Googlu "vba deklarace promennych"
wall.cz
lasakovi
...
alebo Google - "vba zaklady"
...

Každopádne ja keď idem okolo kníhkupectva (dám iba skratku aby to neporušovalo pravidlá o reklame - PR) v hocijakom nákupnom centre, tak sa stavím mrknúť, a vždy tam majú nejakú knižku o VBA. Myslím, že pre Vás bude irelevantné, či je pre Office 2010/2013/2016.

Príklad, bez overenia validity vstupných dát v bunkách.

Skúste pridať pred with
Application.EnableEvents = False
za End With
Application.EnableEvents = True
a namiesto
.Columns(Stlp)
dajte
.Columns(Stlp).Resize(, 3)

Teda stôl. Či ?

Ak sú tie hodnoty v bunkách výsledkom vzorcov, prečítajte si svoju poslednú vetu, a musíte prísť na to, že to nieje možné. Ak to nie sú výsledky vzorcov, ale zadané hodnoty, tak skúste označiť oblasť, ktorej sa to týka, a Domov - Nájsť a vybrať - Nahradiť.

Skúste. Ukladá sa to pri každej interakcii, aj pri zatváraní. Ak to spadne pri nejakej udalosti, stále je uložená verzia pri poslednej udalosti (START, STOP, uloženie, mazanie).
Pridal som ešte kontrolu časomiery pri zatváraní zošitu.
Urobil som pár zmien, hlavne kvôli neštandardnosti chovania Excelu pri ukladaní cez makro a samotný Excel (bol rozdiel v BeforeSave procedúre). Chovalo sa to divne, ale teraz je to už OK. Teda snáď. Otestujte.


Strana:  1 ... « předchozí  186 187 188 189 190 191 192 193 194   další » ... 289

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

vyhledání obsahu buňky

vfort • 18.7. 11:22

Názvy z řádků do sloupců Power Query

Alfan • 18.7. 10:01

Tlac 2 roznych tabuliek

loksik.lubos • 17.7. 20:43

Týden v roce

Petr92 • 16.7. 15:34

Řazení podle času v kategoriích

veny • 16.7. 11:34

špatný výpočet ze zisku - příčina?

Anonym • 12.7. 22:56

špatný výpočet ze zisku - příčina?

Jakoby • 12.7. 12:35