Komíni

  • Increase font size
  • Default font size
  • Decrease font size

Excel 3. část - pohyb objektu

V dnešní lekci si ukážeme, jak lze excel trochu rozpohybovat. Nakreslíme kuličku a budeme ji pomocí kláves posunovat po listu.

Začneme nakreslením kuličky. Podržením Shift při kreslení zajistíme, že se nakreslí kružnice. Aby vznikl dojem stínování, můžeme použít na výplň - Vzhled výplně -> Přechod. Pokud klikneme na kuličku, objeví se v poli názvů něco jako elipsa 1. Pokud do tohoto pole vstoupíme, lze jej přepsat a pod tímto jménem potom odkazovat v kódu. Já jsem zvolil jméno mic.

 

Metodou pokus omyl si najdeme základní příkazy, které budeme používat. Spustíme záznam makra, označíme kuličku a pomocí kursorových kláves s ní trochu zajezdíme do všech směrů, zvětšíme a zmenšíme. Po zobrazení Makra bychom měli dostat:

Sub Makro2()
'
' Makro2 Makro
' Makro zaznamenané 11.1.2010, Q
'

'

ActiveSheet.Shapes("mic").Select
Selection.ShapeRange.IncrementTop -0.75
Selection.ShapeRange.IncrementTop -0.75
Selection.ShapeRange.IncrementTop -0.75
Selection.ShapeRange.IncrementLeft -0.75
Selection.ShapeRange.IncrementLeft -0.75
Selection.ShapeRange.IncrementTop 0.75
Selection.ShapeRange.IncrementTop 0.75
Selection.ShapeRange.IncrementTop 0.75
Selection.ShapeRange.IncrementLeft 0.75
Selection.ShapeRange.IncrementLeft 0.75
Selection.ShapeRange.IncrementLeft 0.75
Selection.ShapeRange.ScaleWidth 0.74, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.74, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleWidth 1.39, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 1.39, msoFalse, msoScaleFromTopLeft
End Sub

Po chvilce laborování lze posun zjednodušit na:

ActiveSheet.Shapes("mic").IncrementTop -5  - posun nahoru

ActiveSheet.Shapes("mic").IncrementTop 5  - posun dolů

ActiveSheet.Shapes("mic").IncrementLeft -5  - posun doleva

ActiveSheet.Shapes("mic").IncrementLeft 5  - posun doprava

Zbývá už jen zjistit, jak spustit tyto příkazy po stisku odpovídající klávesy. Vložíme do listu tlačítko, kterým odstartujeme pohyb kuličky. Pojmenujeme jej cmdreset. Pokud si ve VBA editoru rozklikneme příslušný list, můžeme v políčku objektů zvolit cmdreset a u událostí Keydown.

 

Okamžitě se nám vytvoří procedura, která se vykoná při aktivním tlačítku cmdreset a stisku klávesy. Abychom zjistili kódy jednotlivých tlačítek, stačí do těla procedury napsat:

Private Sub cmdreset_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Range("A1").Value = KeyCode
End Sub

Nyní si můžeme po kliknutí na tlačítko a po stisku kláves zjistit kódy jednotlivých tlačítek. Nezapomeňte po editaci tlačítek vypnout Design Mode .

A nyní už lze dát vše dohromady. Všechna předchozí pokusná makra můžeme smazat a nechat pouze:

Private Sub cmdreset_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case 37
ActiveSheet.Shapes("mic").IncrementLeft -5
Case 38
ActiveSheet.Shapes("mic").IncrementTop -5
Case 39
ActiveSheet.Shapes("mic").IncrementLeft 5
Case 40
ActiveSheet.Shapes("mic").IncrementTop 5
End Select
End Sub

Tato procedura musí být napsána v kódu pro list, na kterém se nachází tlačítko cmdstart. Příkaz Select Case by měl být z kontextu jasný. Pokud parametr KeyCode, který vrací událost cmdreset_KeyDown, nabývá některou z hodnot za Case, vykoná se příslušná akce.

Soubor je ke stažení zde.

Podobně lze zajistit i zvětšování a zmenšování objektu, jeho rotaci,...

Příště do pohybu vneseme trochu fyziky. Ukážeme si, jak vytvořit setrvačnost tělesa.