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.
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 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
verze 1.1
excel_mrizky.zip