A kde máte cesty k tým súborom? V predošlom makre ste nechcel, ani prípony, a teraz ich chcete. Treba uchovávať aj cesty. Ďalej, odkiaľ sa berie parameter "\obrazek1.jpg" ?...
Tu je príklad. Vzhľadom na pokročilú hodinu viac nerobím ...
??? Predstavoval som si nejaký lepší popis toho čo potrebujete vyriešiť. Napríklad cieľ potrebujete vždy pri zápise posúvať pod seba, alebo že zdroj aj cieľ sú variabilné na nejakej závislosti a samé si to má určiť veľkosť cieľa podľa zdroja, a pod. Navyše aj príloha je nejednoznačná. Do TO!C8:E10 chcete skopírovať FROM!A1:C3 ? Ale dáta sú vo FROM!C8:E10, nie v A1:C3. A v TO nieje nič.
Merlin99 napsal/a:
... posunout cilovou lokaci...
Použite Offset
Workbooks("POKUS.xlsm").Worksheets(8).Range("E13:G15").Offset([Koľko riadkov od 13-teho]).Value = Workbooks("POKUS.xlsm").Worksheets(7).Range("A13:C15").Value
prípadne Cells(riadok, stĺpec).Resize(riadkov, stĺpcov)
bodla by príloha
@Jiří497: preklep - bodka
@Fantasyk: A čo ak nenájde?
Sub pokus()
Dim Compld As Range
Set Compld = Range("C:N").Find(What:=Range("A1").Value, LookIn:=xlValues, lookat:=xlWhole)
If Compld Is Nothing Then
Range("B1").ClearContents
MsgBox "Nenalezeno !", vbExclamation
Exit Sub
End If
Range("B1").Value = Cells(Compld.Row, 3).Value
'...
End Sub
W10 x64 Pro SK, Office 2019 Pro x64 SK - makro funguje.
Ako bolo napísané, to nieje funkcia s návratovou hodnotou - teda má to byť procedúra sub.
Je v liste alebo v module?
Volá sa z listu alebo z mobulu?
Alebo je v PERSONAL.XLSB?
Čo má vstupovať ako parameter, string alebo Range?
Určite by som vynechal Select...
Príloha by bodla.
Sub doubleLine(aktRange As Range)
With aktRange
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
With .Borders(xlEdgeLeft)
.LineStyle = xlDouble
.Weight = xlThick
End With
With .Borders(xlEdgeTop)
.LineStyle = xlDouble
.Weight = xlThick
End With
With .Borders(xlEdgeBottom)
.LineStyle = xlDouble
.Weight = xlThick
End With
With .Borders(xlEdgeRight)
.LineStyle = xlDouble
.Weight = xlThick
End With
End With
End Sub
Sub pokus()
doubleLine Worksheets("Hárok1").Range("B3:D10")
End Sub
Som iba na mobile, tak si prílohu nepozriem, každopádne ak chcete vypisovať alebo inak pracovať s položkami, nemôžete použiť
MsgBox strNames()
ale
MsgBox Item
Alebo
For i = LBound(strNames) To UBound(strNames)
MsgBox strNames(i)
Next i
Parameter procedúry Open ?
ReadOnly:=True
Čistý nezmysel. To chcete upravovať aj riadky v liste, aj zároveň riadky v kóde, a to tak, že sa vždy spoľahnete na to, že sa nepomýlite? A to nevravím o logike veci, keďže výrobky iba vyrábate na sklad, no nevyskladňujete. Tie "vzorce", ktoré niesú vzorcami ... to vážne keď máte na sklade 100 pomarančov a vyrobíte ďalšie 2 pomaranče, tak na sklade ich bude zrazu 200 ?
Ak chcete urobiť normálny odpis skladu, tak uvádzajte príjem, výdaj (započítajte poškodenie) a stav sa bude dať predsa dopočítať univerzálnym riadkom/riadkami kódu, bez ohľadu na pozíciu. Ak nie, musíte uviesť skutočné výpočty, čo s čím a prečo počítate. Ak máte 4 druhy absolútne iných výpočtov (čo nesedí s načrtnutou prílohou), tak si zaveďte tabuľku, kde bude uvedené aký druh výpočtu platí pre aký výrobok, a podľa tejto tabuľky sa určí spôsob výsledku.
Tak či tak, ja osobne nerozumiem o čo iné by tu mohlo ísť.
To nie sú vzorce, ale riadky kódu.
Jedine ma napadá len tak z hlavy niečo v zmysle:
R = 3
Cells(R, "B").Value = Cells(R, "B").Value - Cells(R, "D").Value: R = R + 1
Cells(R, "B").Value = Cells(R, "B").Value + Cells(R, "D").Value: R = R + 1
Cells(R, "B").Value = Cells(R, "B").Value * Cells(R, "D").Value: R = R + 1
Cells(R, "B").Value = (Cells(R, "B").Value + Cells(R, "C").Value) * (Cells(R, "D").Value): R = R + 1
aj keď najlepšie by bolo, pridať prílohu a vysvetliť to tam, či sa to nedá urobiť aj inak, lebo z tohto nevieme presne čo potrebujete robiť.
Všetky zošity majú 1 list, a ten s rovnakým názvom? Umiestnenie dát je rovnaké a začína na A1? Počet stĺpcov je rovnaký alebo rôzny? Riadky sa zisťujú podľa A:A?
Síce sa mi to fakt nechce robiť, ale keď to upresníte, možno ...
EDIT: Ešte sa dá použiť aj ADO aj dolovanie vzorcami.
VLOOOKUP / SVYHLEDAT
Dobré je vložiť požadovaný počet riadkov medzi posledný a predposledný, skopíruje sa tak formát buniek, podmienený formát sa nefragmentuje, a potom už iba natiahnete vzorce, prípadne orámovanie.
Pozor na to, maticový súčin (teda "AND", v CZ "A") sa zadáva pomocou * (hviezdička) a maticový súčet (teda "OR", v CZ "NEBO") sa zadáva pomocou + (plus) a testu na väčšiu hodnotu od 0.
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.