Milimetrový papír a jiné rastry v Excelu

Milimetrový papír už sice není běžnou součástí hodin matematiky, přesto je typickým zástupcem archů s mřížkou (rastrem), kterým se v angličtině říká „graph paper“, resp. „graph grid“. Potkáváme se jak s praktickými rastry, tak s těmi, které poslouží v hrách, jako jsou lodě nebo piškvorky. A že jsou ty prázdniny, tak jsem si zkusil pár takových archů vytvořit.

Pracovní i herní rastry zpracované v Excelu

Pracovní i herní rastry zpracované v Excelu

Ukázky rastrů

Ukázky rastrů

Ačkoliv lze najít několik generátorů či hotových PDF online, jak je vidět, dal jsem si za cíl k danému účelu zneužít Excel. Výhodné je přepnout se do zobrazení Rozložení stránky, protože zde jsou na rozdíl od normálního zobrazení k dispozici pravítka a je možné s mřížkou manipulovat v běžných délkových rozměrech (cm). Přesto nečekejte zázraky. Obzvlásť v případě milimetrového papíru je nutné brát přesnost s rezervou. Uvědomte si, že chyba 0,1 mm na každém sloupečku dává na deseti buňkách (10 mm, tj. 1 cm) odchylku 1 mm a na archu A4 je potřeba cca 190 sloupečků. Tudíž je potřeba se pohybovat v setinách. To sice Excel umí, ale rozhodně to není CAD aplikace s bůhvíjakou akurátností.

Ve většině případů si vystačíme s vhodně upravenou mřížkou Excelu (a to i pro potřeby jiných elementů, např. trojúhelníků). Hodí se samozřejmě trocha matematiky a fakt, že se v rámci ohraničení můžeme obrátit i na šikmé (diagonální) čáry. Je ovšem jasné, že ze čtverce kruh nikdy neuděláme a proto se čas od času nevyhneme tvarům, které při větším počtu vytvoříme programově. Jak jsem zjistil, zobrazení Rozložení stránky je nevhodné pro vykreslování objektů, u nichž záleží na poměru šířky a výšky. To se týká především kružnic.

Sub GenerovaniKrouzku()

    Dim shpBod As Shape
   
    Dim cdblBodPrumer As Double
    Dim cdblSirka As Double
    Dim cdblVyska As Double
   
    Dim i As Integer
    Dim j As Integer

    'průměr tvaru
    cdblBodPrumer = 18

    'rozteče dle velikosti buňky
    cdblSirka = ActiveCell.Width
    cdblVyska = ActiveCell.Height

    'zamezení překreslování
    Application.ScreenUpdating = False

    'odstranění případné grafiky na listu
    For Each shpBod In ActiveSheet.Shapes
        shpBod.Delete
    Next shpBod

    For i = 1 To 26

        For j = 1 To 18

            'vytvoření tvaru a jeho umístění
            Set shpBod = ActiveSheet.Shapes.AddShape(msoShapeOval, j * _
                cdblSirka - cdblBodPrumer / 2, i * cdblVyska - cdblBodPrumer / 2, _
                cdblBodPrumer, cdblBodPrumer)

            'barevnost a další vlastnosti tvaru
            With shpBod
                .Line.Weight = 0.5
                .Line.ForeColor.RGB = RGB(217, 217, 217)
                .Fill.ForeColor.RGB = RGB(255, 255, 255)
            End With

        Next j

    Next i

    'povolení překreslování
    Application.ScreenUpdating = True

End Sub

Uvedená procedura nejprve odstraní všechny kreslené objekty na listu, následně generuje tvary (kroužky) o požadované velikosti a barvě, a umísťuje je do rohů buněk. Jejich počet je zde nastaven napevno. Teoreticky by bylo možné jej zjišťovat podle poslední buňky na stránce (viz „horizontal page breaks“). Proceduru spouštějte v normálním zobrazení listu.

V příloze nechybí čtverečkované archy (1 mm, 5 mm, 10 mm a jejich variace), linkované papíry (8 mm), notová osnova, trojúhelníky a šestiúhelníky, tečky a kroužky, podklady pro grafy a číselné osy, herní plány pro lodě, sudoku, šachy či tangram (u něj je nezbytné kreslit ohraničení „ručně“), nebo třeba list s rozlosováním sportovního turnaje. Na druhou stranu neobsahuje logaritmickou stupnici nebo nějakou formu úhlového grafu. To už by přeci jen bylo časově náročné. Ostatně rotace objektů okolo krajního bodu patří pod VBA ke složitějším úlohám, v nichž se hodně vyplatí znalosti matematiky a vektorů.

Příloha
excel_mrizky.zip

Klikni a stahuj!