Přeskočit navigaci | Přeskočit na novinky
     

Jste zde: Úvodní stránka » excel » vba-listy-bunky » excel-vba-resize-offset

Offset, Resize - oblast buněk - Excel VBA

Videokurzy Excel

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

Proč resize a offset - úvod

Resize - Offset - Excel 2010

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.

Co se dozvíte:

V ukázkových kódech představím, jak Offest a Resize prakticky využít...


Offset

Offset - aneb jak se posunout o určitý počet buněk

Offset syntaxe

.Offset(RowOffset, ColumnOffset)
  • RowOffset - posun v řádcích (0 - neposunuje se, kladné směr dolů, záporné směr nahoru)
  • ColumnOffset - posun ve sloupcích (0 - neposunuje se, kladné směr vpravo, záporné směr vlevo)

Offset - 1 řádek dolů

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.

Offset - posun vpravo

Set MojeRange = Range("C5").Offset(0, 1)

Nebo

Set MojeRange = Range("C5").Offset(, 1)

Offset vlevo

Set MojeRange = Range("C5").Offset(0, -1)

nebo:

Set MojeRange = Range("C5").Offset(, -1)

Offset dolů a vpravo o několik buněk

Set MojeRange = Range("C5").Offset(3, 3)

Resize

Resize - aneb jak rozšířit oblast požadovaný počet buněk.

Resize syntaxe

Resize(RowSize, ColumnSize)
  • RowSize - rozšíření v řádcích (0 - neposunuje se, kladné směr dolů, záporné směr nahoru)
  • ColumnSize - rozšíření ve sloupcích (0 - neposunuje se, kladné směr vpravo, záporné směr vlevo)

Resize - rozšíří oblast buňek o řádky

Set MojeRange = Range("C5").Resize(3, 1)

Resize - rozšíří oblast buňek o sloupce

Set MojeRange = Range("C5").Resize(1, 3)

Resize - zmenšit oblast buňek o sloupce

Set MojeRange = Range("C5:F11").Resize(3, 3)
Microsoft Excel VBA - stahuj logo

Ke stažení

Soubor Resize, Offset - praktické příklady - Excel VBA soubor ve formátu *.xlsm ke stažení zdarma. Soubor využívá makra.


Resize - Offset - Excel 2010

Závěrem

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

Odměna

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.


Pavel Lasák - autor webu

Pavel Lasák

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ů.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil


Komentáře


Bartex

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

Pavel Lasák

Přidáno: 02.07.13 20:51

To Bartex: Děkuji za opravení mého překlepu.

Jirka

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)

Pavel Lasák

Přidáno: 13.08.14 16:13

To Jirka: Čárka přidána. V souboru ke stažení je funkční ;)

Milan

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

Pavel Lasák

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.

David

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:

David

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

David

Přidáno: 29.01.15 14:14

pardon, na potreti se snad trefim uz s tim kodem :)

Ondra

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??






Excel


Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Reklama


TOPlist Licence Creative Commons webarchiv rss XML

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 - 2021 |