Excel - Spustí makro, když je položka vybrána z rozevíracího seznamu

Microsoft Office je komerční Office Software s organizovanými servery, službami a desktopovými aplikacemi pro operační systémy Windows a Mac OS X. Tento kancelářský software obsahuje aplikaci nazvanou Microsoft Excel, která je komerční tabulkovou aplikací s makro programováním, výpočty atd. Makro je řada instrukcí v aplikaci Excel, která provádí konkrétní úlohu. Pokud chcete provést určitý úkol opakovaně, můžete tento úkol automatizovat pomocí makra. Rozevírací seznam umožňuje zadat data do tabulky z přednastaveného seznamu položek. To usnadňuje zadávání dat a omezuje počet pozic pro zadávání dat. Pro každý výběr v rozevíracím seznamu můžete spustit jiné makro.

Problém

Byl jsem schopen vytvořit makro, které naplní buňku ve sloupci A s datem a buňkou ve sloupci B s časem (s relativními odkazy, takže to udělá na libovolném řádku, ve kterém je kurzor) a zavolali to datetimeentry (je to modul)

 Sub datetimeentry () '' datetimeentry Makro '' ActiveCell.Value = Datum ActiveCell.Offset (0, 1) .Range ("A1") Vyberte ActiveCell.Value = Čas ActiveCell.Offset (0, 2) .Range ("A1 "). Vyberte End Sub 
  • Vytvořil jsem také rozevírací seznam ve sloupci C, ze kterého si můžete vybrat. Chci to udělat:
  • Chci, aby se makro spustilo, jakmile vyberu něco z rozevíracího seznamu. Toto makro by mělo běžet na stejném řádku jako buňka, ze které jsem ho vybral.

tj. pokud vyberu z rozevíracího seznamu v buňce c1156, než chci, aby makro spustilo a vložte datum do A1156 a času v B1156 pak přeskočte na buňku D1156, abych zadal hodnotu v.

Řešení

Nejdříve mi dovolte říct, že selhání je velmi platná volba: P

Tuto funkci musíte definovat:

Private Sub Worksheet_Change (Cíl cíl ByVal jako rozsah)

End Sub

Řekněme, že list, o kterém mluvíme, je sheet1

  • Otevřete VBE a poklepejte na list1 v průzkumníku projektu
  • Vložte tuto rutinu a přečtěte si poznámky v kódu o prázdné

 Private Sub Worksheet_Change (ByVal Target As Range) zde 3 je sloupec číslo 3, který je sloupec C Pokud (Target.Column 3) Pak Exit Sub Application.EnableEvents = False thisrow = Target.Row Pokud Target.Value = "" Potom " kód můžete komentovat, pokud to nedává smysl, ale nápad je, pokud buňka ve sloupci C byla vymazána, „odpovídající datum a čas by měly být také vymazány. Cells (thisrow, " A ") =" "Buňky (thisrow, "B") = "" Else Cells (thisrow, "A") = Datové buňky (thisrow, "B") = Čas Konec Pokud Application.EnableEvents = True End Sub 

Všimněte si, že

Díky rizvisa1 za tento tip na fóru.

Předchozí Článek Následující Článek

Nejlepší Tipy