Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:
Co umí Offset a Resize, k čemu jej lze využít ve VBA Excel.
Doplněno a rozšířeno: 25.10.2014
Když je k dispozici objekt Range, k čemu pak je Offset? Máme-li nějakou oblast, můžeme se pomocí Offset přesouvat nebo přes Resize měnit velikost oblasti.
V ukázkových kódech představím, jak Offest a Resize prakticky využít...
Offset - aneb jak se posunout o určitý počet buněk
.Offset(RowOffset, ColumnOffset)
Dim MojeRange As Range
Set MojeRange = Range("C5").Offset(1, 0)
MojeRange.Select
Nebo
Dim MojeRange As Range
Set MojeRange = Range("C5").Offset(1)
MojeRange.Select
V dalším budu definici typu zanedbávat.
Set MojeRange = Range("C5").Offset(0, 1)
Nebo
Set MojeRange = Range("C5").Offset(, 1)
Set MojeRange = Range("C5").Offset(0, -1)
nebo:
Set MojeRange = Range("C5").Offset(, -1)
Set MojeRange = Range("C5").Offset(3, 3)
Resize - aneb jak rozšířit oblast požadovaný počet buněk.
Resize(RowSize, ColumnSize)
Set MojeRange = Range("C5").Resize(3, 1)
Set MojeRange = Range("C5").Resize(1, 3)
Set MojeRange = Range("C5:F11").Resize(3, 3)
Soubor Resize, Offset - praktické příklady - Excel VBA ke stažení zdarma. Soubor využívá makra.
Pokud Vás něco napadne k Offset a resize můžete uvést v komentáři.
Článek byl aktualizován: 19.09.2020 11:06
Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.
Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.
Přidáno: 02.07.13 07:16
Offset vlevo je špatně. (je napsán stejně jak vpravo) Má tam být mínus. Fakturu pošlu poštou
Přidáno: 02.07.13 20:51
To Bartex: Děkuji za opravení mého překlepu.
Přidáno: 12.08.14 10:13
Chtěl bych vás upozornit na zapomenutou čárku. Pro odsazení vpravo i dolů o jeden sloupec či řádek máte stejný vzorec - Offset(1)
Přidáno: 13.08.14 16:13
To Jirka: Čárka přidána. V souboru ke stažení je funkční ;)
Přidáno: 14.08.14 12:50
Rad bych se zeptal jak je to z Offsetem u filtrovaných dat. Prikaz Offset mi neignoruje skryte radky fitru a odskoci to ne na dalsi viditelnou bunku, ale na dalsi v poradi, coz je prave skryta. Da se to nejak obejit aby so skocilo na dalsi viditelnou? Diky
Přidáno: 27.10.14 09:22
To Milan: Kód který najde další prázdný a viditelný řádek:
' najde další prázdný
Aktualni_Radek = ActiveCell.Row + 1
MaxPocetRadku = 44
For i = Aktualni_Radek To MaxPocetRadku
If Rows(Aktualni_Radek).Hidden = True Then
Aktualni_Radek = Aktualni_Radek + 1
Else
Exit For
End If
Next i
MsgBox Aktualni_Radek
Postačí doplnit o cyklus, který provede požadovaný počet z Ofsset.
Přidáno: 29.01.15 13:38
Dobry den, musim vam rici, ze asi po 14-ti dennim hledani po celem internetu jsem konecne nasel odpoved na vasich strankach :) Slo mi o to, abych mohl udelat paste special ve filtru, ale nedarilo se mi, ziskat adresy vyfiltrovanych radku (nebo posunovat o jeden radek, to se posouvalo bez ohledu na filtr) az jsem to vyresil podle vaseho posledniho prispevku a rad bych se o to podelil:
Přidáno: 29.01.15 14:13
Sub pastSpecial() Dim c As Long Dim x As Long Dim a As String Dim b As Long Dim e As String Dim g As String Selection.End(xlUp).Select a = Selection.Address b = InStr(2, a, "$") e = Left(a, b) g = Replace(e, "$", "") c = Selection.CurrentRegion.Rows.Count For x = 2 To c If Rows(x).Hidden = True Then GoTo kam Else With Range(g & x) .Copy .pasteSpecial Paste:=xlPasteValues End With End If kam: Next Application.CutCopyMode = False End Sub
Přidáno: 29.01.15 14:14
pardon, na potreti se snad trefim uz s tim kodem :)
Přidáno: 01.12.15 21:22
Dobrý den, řeším problém s posunem buňky Linked Cell v TextBoxu o řádek níž po každém stisku tlačítka. Napadlo mě to řešit OffSetem, ale neznám syntaxi. Nebo je možné řešit to jiný způsobem??
Pomohl Vám návod? Sdílejte na Facebooku, G+ |
||
LinkedIn... |
Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2024 |