Makro, které vymaže ovládací prvky vložené makrem

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Odpovědět
lurban
nováček
Příspěvky: 7
Registrován: 01 dub 2015 11:10

Makro, které vymaže ovládací prvky vložené makrem

Příspěvek od lurban »

Dobrý den, potřebuji poradit s tímto problémem: Mám makro, které do listu vloží tři ovládací prvky.
Sub Makro1()
'
' Makro1 Makro
'

'
Range("A4").Select
ActiveSheet.CheckBoxes.Add(1.5, 45, 93.75, 17.25).Select
Selection.Characters.Text = "Zateplení"
With Selection
.Value = xlOff
.LinkedCell = "A4"
.Display3DShading = True
End With
Range("C4").Select
ActiveSheet.CheckBoxes.Add(96, 45, 91.5, 17.25).Select
Selection.Characters.Text = "Výměna zdroje"
With Selection
.Value = xlOff
.LinkedCell = "B4"
.Display3DShading = True
End With
Range("E4").Select
ActiveSheet.CheckBoxes.Add(191.25, 44.25, 99.75, 17.25).Select
Selection.Characters.Text = "Využití odpadního tepla"
With Selection
.Value = xlOff
.LinkedCell = "C4"
.Display3DShading = True
End With
Range("B2").Select
End Sub

Je podmíněně spouštěno dalším makrem na základě hodnoty v buňce B2. Když je B2="5.1" vloží se ovládací prvky.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim VRange As Range

Set VRange = Range("B2") 'hlídaná buňka

If Union(Target, VRange).Address = VRange.Address Then

If VRange = "5.1" Then Call Makro1 'zavolá makro vase_makro


End If

End Sub

Nyní ale potřebuji, aby když se hodnota B2 změní, ovládací prvky zase zmizely. Zkoušel jsem přes záznam makra, ale nefunguje to.

Nemám zkušenosti, nevím, zda raději vytvořit nové makro, které bude prvky mazat, nebo jestli je možné něco jako undo makra, případně zda to lze vyřešit úpravou spouštěcího makra...

Mohl by mi tedy někdo, prosím, poradit?
Děkuji.
Azuzula
Level 3
Level 3
Příspěvky: 452
Registrován: 14 led 2012 18:44
Bydliště: Země, bohužel...
Kontaktovat uživatele:

Re: Makro, které vymaže ovládací prvky vložené makrem

Příspěvek od Azuzula »

Vítám Tě na PC-HELPu.
Prosím, když sem dáváš nějaký kód, tak ho vkládej do tagu Code pro přehlednost. Děkujeme :)

A teď k dotazu. Nejprve bych checkboxu už při jeho vytvoření přiřadila nějaký název (v ukázce "xyz1"), podle toho jde snadno identifikovat a odstranit.
1.

Kód: Vybrat vše

'vytvoření checkboxu
With ActiveSheet.CheckBoxes.Add(1.5, 45, 93.75, 17.25)
    .Name = "xyz1"
    .Characters.Text = "Zateplení"
    .Value = xlOff
    .LinkedCell = "A4"
    .Display3DShading = True
End With


2.

Kód: Vybrat vše

'odstraní checkbox podle jeho názvu
ActiveSheet.Shapes.Range(Array("xyz1")).Delete

Když budeš chtít mazat víc checkboxů najednou, tak jejich názvy jednoduše přidáš do závorek a oddělíš je čárkou: Array("xyz1","xyz2", atd.)

Tohle celé můžeš nahradit 1. kódem.

Kód: Vybrat vše

Range("A4").Select
ActiveSheet.CheckBoxes.Add(1.5, 45, 93.75, 17.25).Select
Selection.Characters.Text = "Zateplení"
With Selection
.Value = xlOff
.LinkedCell = "A4"
.Display3DShading = True
End With


--- Doplnění předchozího příspěvku (02 Dub 2015 12:33) ---

Mazání checkboxů pak můžeš provádět buď automaticky makrem na základě definované změny na listu v buňce, nebo tlačítkem ručně.
Pokud je to vše.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Sieťové prvky v neventilovanom priestore
    od TheSalon112 » » v Vše ostatní (hw)
    5 Odpovědi
    5403 Zobrazení
    Poslední příspěvek od petr22

Zpět na „Kancelářské balíky“