Stránka 1 z 1

Makro v MS Excel - problém se sloučenými buňkami

Napsal: 02 kvě 2017 00:13
od MatesBossy
Dobrý pozdní večer,
řeším následující problém:

V rámci 1 sešitu mám více listů, na všech listech se nachází naprosto stejná tabulka. Potřebuji makro, které po aktivaci aktualizuje tabulku na prvním listu s daty ze všech ostatních listů. Níže uvádím VB kód, který používám. Pokud ho použiji na sešit, ve kterém nepoužívám sloučené buňky je vše v pořádku. Pokud ho použiji v sešitu se sloučenými buňkami (v záhlaví tabulky), makro nefunguje. Problém je zřejmě s identifikací řádků resp. sloupců, které mají sloučené buňky. Přijde mi, že VB pracuje s "viditelnými řádky" (2 sloučené počítá jako jeden) a ne s excelem označenými řádky (2 sloučené jako 2).

Prosím o radu, jak makro upravit popřípadě jaký jiný způsob použít.
Předem mockrát díky za všechny rady ;-)

Kód pro tabulku s 54 sloupci:


  1. Sub SpojListy()
  2. Dim ws As Worksheet, rs As Long, rd As Long
  3.   With Application
  4.     .EnableEvents = False
  5.     .ScreenUpdating = False
  6.   End With
  7.   With ThisWorkbook
  8.     With .Worksheets("List1")
  9.       rs = .Cells(Rows.Count, 4).End(xlUp).Row - 1
  10.       If rs > 0 Then .Cells(4, 1).Resize(rs, 54).ClearContents
  11.     End With
  12.     For Each ws In .Worksheets
  13.       rs = .Worksheets("List1").Cells(Rows.Count, 4).End(xlUp).Row
  14.       With ws
  15.         If .Name <> "List1" Then
  16.           rd = .Cells(Rows.Count, 4).End(xlUp).Row - 1
  17.           If rd > 0 Then ThisWorkbook.Worksheets("List1").Cells(rs + 1, 1).Resize(rd, 54).Value = .Cells(4, 1).Resize(rd, 54).Value
  18.         End If
  19.       End With
  20.     Next ws
  21.   End With
  22.   With Application
  23.     .EnableEvents = True
  24.     .ScreenUpdating = True
  25.   End With
  26. End Sub

Re: Makro v MS Excel - problém se sloučenými buňkami

Napsal: 02 kvě 2017 12:50
od atari
Makro ignoruje sloučené buňky. Ovšem umí do sloučených buněk psát pouze pokud tu sloučenou buňku označíš původní buńkou v levém horním rohu. Pokud zadáš jinou původní buňku, tak makro neudělá nic.

Dodatečně přidáno po 12 minutách 16 vteřinách:
Napíší to srozumitelněji: Sloučené buňky (např. B2 až E10) si makro označí jedinou buňkou, a to původní levou horní. V tomo případě "B2", a ta pak pro makro reprezentuje všechny sloučené buňky. Takže veškeré operace s těmi součenými buňkami musíš zadávat pouze přes "B2" nebo Cells(2,2).

Dodatečně přidáno po 6 hodinách 34 minutách 36 vteřinách:
Ještě poznámka:
Doporučuji zrušit sloučené buňky. Podle mě nejsou potřeba. Způsobuje to problémy, například při kopírování celých listů.
Před 10 lety jsem sloučené buňky u nás v práci zakázal. Tabulky se sloučenýma buňkama jsem předělal na nesloučené buňky. Sice to dá trochu více práce, ale stojí to za to. Od té doby neřeším problémy se sloučenýma buňkama.