Nie je to príliš zložité?
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("A1"), Target) Is Nothing Then
Range("C1").Value = WorksheetFunction.Max(Range("C1").Value - Range("B1").Value, 0)
End If
End Sub
Nazdar kluci. Ako ste sa tu mali?
To je podľa zápisu evidentne úryvok z môjho kódu. O čo tam konkrétne šlo? Ktorá je pôvodná téma? Čo obsahuje ten dolovací vzorec v premennej "Vzorec"? Príloha?
Ale má to riešenie, čoby nie. Nemal som na to čas. Každopádne testujem riešenie, kedy sito samé zistí UTF-8 alebo ANSI a podľa toho nastaví Charset na správne načítanie. Lenže dnes mi prestala fungovať identifikácia UTF-8. Zatiaľ v obmedzenom čase skúmam prečo.
Ešte podotázka: To nahradenie toho textu za iný sa dá aplikovať skutočne na celý súbor? Nie je možné, že ten text, ktorý sa bude nahradzovať, bude aj v iných stĺpcoch ako R:S (metaTitle:cs a metaTitle:en)?
Najlepšie by bolo tie súbory CSV v Exceli neotvárať. Obsahujú tie CSV aj diakritiku? Ak nie, tak sa to dá riešiť expresne rýchlo cez textové funkcie priamo z/do CSV. Ak áno, tak to je problém, keďže VBA má problém pri načítaní/ukladaní diakritiky vkódovaní utf-8/ansi. Zdroj je utf-8 a dáta sú ansi. Stiahnite si NotePad++ v ňom otvorte origo Zdroj aj origo dátový a pozrite vpravo dole, čo tam píše. Dá sa to ošetriť cez ADO.Stream ale treba vedieť kódovanie vopred. Má za to, že rôznosť kódovania vznikla Vašou úpravou pri anonymizovaní príloh. Myslím, že to mám z časti už pripravené, ešte počkám čo napíšete, a podľa toho sa ešte raz pokúsim pochopiť či chcete naozaj nahradiť "název1" za "názevXXX", alebo je XXX nejaká premenná a pod.
Inak aký název v prílohe Zdroj?
Z těch 3 .csv souborů je jeden zdrojový, viz: název v příloze "zdroj".
Vloží tyto dva řádky vždy nakonec, tak jako se to vkládá Vám v tom vzoru.
Ach áno, pri tvorbe riadkov jedinečných hodnôt a ich súčtov som zabudol ešte raz použiť podmienku VADA="Rozbité".
Tá Vaša výsledná tabuľka je zle. Nesprávne názvy aj zoradenie.
Rozhodne nemôžete použiť to na konci Vášho príspevku.
Range() ako zdroj a Range() ako cieľ je v tom istom zošite! Musíte určiť zdrojový zošit pred Range. Idem si pozrieť futbal, možno sa k Vám ešte vrátim.
Také obmedzenie je všade, v každej verzii Excelu v Podmienenom formátovaní. Dá sa to obabrať tak, že urobíte všetko negovane. Napevno dáte bunkám hrubú čiaru v klasickom formáte, a v Podmienenom formáte ju budete rušiť opačnou podmienkou =$C4=$C5 a dáte čiaru "bez čiary". Nevýhoda je skrolovanie "obsadenej" oblasti.
Ak sú dátumy zoradené, a vyzerá to tak, tak potom napr. jednoducho pre oblast A4:K1000:
=$C4<>$C5
Sub Vytvor_import()
ThisWorkbook.Worksheets("List 3").Copy
With ActiveWorkbook
With .Worksheets(1)
R = .Cells(.Rows.Count, "A").End(xlUp).Row
With .UsedRange
.Copy
.PasteSpecial Paste:=xlPasteValues
.Resize(.Rows.Count - R + 1).Offset(R, 0).EntireRow.Delete Shift:=xlUp
End With
.Buttons(Array("Button 1", "Button 2", "Button 3", "Button 4", "Button 5", "Button 6", "Button 7", "Button 8")).Delete
End With
Application.DisplayAlerts = False
.SaveAs "C:\Users\DELL i7\Desktop\IMP Produkty\import1.xlsx", xlOpenXMLWorkbook
Application.DisplayAlerts = True
.Close False
End With
End Sub
To má predsa milión riešení závislých na presnom rozložení Vašich dát. Musíte priložiť prílohu, a podľa nej sa dá urobiť, viac alebo menej komplikované riešenie. Ale vždy šité na mieru danému rozloženiu.
2x pr.
Pavle, ja Vám fakt čoraz viac nerozumiem
Nie je náhodou to, čo naposledy popisujete, typické pre VLOOKUP/SVYHLEDAT ???
Bez makra to bude o dobrom prstoklade. Pr.:
Chcem dátový riadok 1 a 3 (teda riadok 5 a 7):
1. Označím si Názvy. Mám označené C4:F4
2. Označím k tomu pomocou Ctrl aj bunku C5. Mám označené C4:F4,C5
3. Ctrl+Shift+šípka vpravo. Mám označené C4:F4,C5:F5
Ďalšie oblasti pridávam opakovaním bodov 2. a 3., pričom môžem označiť aj viac riadkov, a po klávesovej skratke sa označia všetky riadky v stĺpcoch vpravo.
Potom už iba Ctrl+C...
Ak chcete makro, tak potom by sa mohlo napr. na klávesovú skratku Ctrl+G nastaviť
Sub Makro1()
' Klávesová skratka: Ctrl+g
Dim RNG As Range
With ActiveSheet
Set RNG = Intersect(Selection.EntireRow, .Range("C4:F4").EntireColumn)
If RNG Is Nothing Then MsgBox "Nevybrali jste sloupce C:F", vbCritical: Exit Sub
Union(.Range("C4:F4"), RNG).Copy
End With
End Sub
Musíte mať v Outlooku nastavené a funkčné Vaše mailové konto, a hlavne si aktivujte jeden z riadkov
.Display
.Send
odstránením apostrofu na začiatku riadku. Význam je jasný, aj popísaný v makre.
Takže poznáte či nepoznáte počet a názvy všetkých tlačítok?
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.