Note: The other languages of the website are Google-translated. Back to English

Jak vymazat zadaný obsah buňky, pokud se hodnota jiné buňky změní v aplikaci Excel?

Předpokládejme, že chcete vymazat rozsah specifikovaného obsahu buňky, pokud se změní hodnota jiné buňky, jak to můžete udělat? Tento příspěvek vám ukáže způsob řešení tohoto problému.

Vymažte zadaný obsah buňky, pokud se hodnota jiné buňky změní s kódem VBA


Vymažte zadaný obsah buňky, pokud se hodnota jiné buňky změní s kódem VBA

Jak je ukázáno níže, snímek obrazovky, když se změní hodnota v buňce A2, obsah v buňce C1: C3 se automaticky vymaže. Postupujte prosím následovně.

1. V listu vymažete obsah buňky na základě jiných změn buňky, klikněte pravým tlačítkem na kartu listu a vyberte Zobrazit kód z kontextové nabídky. Viz snímek obrazovky:

2. V otvoru Microsoft Visual Basic pro aplikace zkopírujte a vložte pod kód VBA do okna Kód.

Kód VBA: Vymazání zadaného obsahu buňky, pokud se změní hodnota jiné buňky

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2")) Is Nothing Then
        Range("C1:C3").ClearContents
    End If
End Sub

Poznámka: V kódu je B2 buňka, ze které vymažete obsah buňky, a C1: C3 je rozsah, ze kterého vymažete obsah. Změňte je prosím podle potřeby.

3. zmáčkni Další + Q klávesy pro zavření Microsoft Visual Basic pro aplikace okno.

Pak můžete vidět, že obsah v rozsahu C1: C3 se automaticky vymaže, když se hodnota v buňce A2 změní, jak je uvedeno níže.


Související články:


Nejlepší kancelářské nástroje produktivity

Kutools pro Excel řeší většinu vašich problémů a zvyšuje vaši produktivitu o 80%

  • Opakované použití: Rychle vložte složité vzorce, grafy a cokoli, co jste dříve používali; Šifrovat buňky s heslem; Vytvořte seznam adresátů a posílat e-maily ...
  • Super Formula Bar (snadno upravit více řádků textu a vzorce); Rozložení pro čtení (snadno číst a upravovat velké množství buněk); Vložit do filtrovaného rozsahu...
  • Sloučit buňky / řádky / sloupce bez ztráty dat; Rozdělit obsah buněk; Zkombinujte duplicitní řádky / sloupce... Zabraňte duplicitním buňkám; Porovnat rozsahy...
  • Vyberte možnost Duplikovat nebo Jedinečný Řádky; Vyberte prázdné řádky (všechny buňky jsou prázdné); Super hledání a fuzzy hledání v mnoha sešitech; Náhodný výběr ...
  • Přesná kopie Více buněk beze změny odkazu na vzorec; Automaticky vytvářet reference do více listů; Vložte odrážky, Zaškrtávací políčka a další ...
  • Extrahujte text, Přidat text, Odebrat podle pozice, Odebrat mezeru; Vytváření a tisk mezisoučtů stránkování; Převod mezi obsahem buněk a komentáři...
  • Super filtr (uložit a použít schémata filtrů na jiné listy); Rozšířené řazení podle měsíce / týdne / dne, frekvence a dalších; Speciální filtr tučnou kurzívou ...
  • Kombinujte sešity a pracovní listy; Sloučit tabulky na základě klíčových sloupců; Rozdělte data do více listů; Dávkový převod xls, xlsx a PDF...
  • Více než 300 výkonných funkcí. Podporuje Office / Excel 2007-2021 a 365. Podporuje všechny jazyky. Snadné nasazení ve vašem podniku nebo organizaci. Plné funkce 30denní bezplatná zkušební verze. 60denní záruka vrácení peněz.
karta kte 201905

Office Tab přináší do Office rozhraní s kartami a usnadňuje vám práci

  • Povolte úpravy a čtení na kartách ve Wordu, Excelu, PowerPointu, Publisher, Access, Visio a Project.
  • Otevřete a vytvořte více dokumentů na nových kartách ve stejném okně, nikoli v nových oknech.
  • Zvyšuje vaši produktivitu o 50%a snižuje stovky kliknutí myší každý den!
officetab dno
Komentáře (38)
Zatím žádné hodnocení. Buďte první, kdo ohodnotí!
Tento komentář byl moderátorem webu minimalizován
Kód pro vymazání buňky v případě dalších změn funguje skvěle!!!! Ale potřebuji, aby to fungovalo obráceně..... Jak se ten kód píše??


Děkujeme za vaši pomoc
Tento komentář byl moderátorem webu minimalizován
Vážený Scotte,
Co myslíš tím pracovat obráceně? Když ručně vymažete obsah určitých buněk (C1:C3), vymažete obsah buňky A2 automaticky?
Tento komentář byl moderátorem webu minimalizován
ahoj, funguje to pouze pro buňku s pevným zdrojem (A2), jak to dynamicky, jako je zdroj, je proměnná buňka? zkusil jsem napsat
A=aktivní buňka.řádek
If Not Intersect(Target, Range("A"& A)) is Nothing Then
Rozsah("C1:C3").Vymazat obsah
End If

to by mělo udělat práci s ohledem na activecell (tj. výběr), ale nefunguje
Díky
Tento komentář byl moderátorem webu minimalizován
Dobrý den,
Zkuste prosím níže uvedený kód VBA. Děkuji za váš komentář.

Soukromá dílčí tabulka_Změna (ByVal Target As Range)
If (Not Intersect(Target, Rows(1)) Is Nothing) And (Target.Count = 1) Then
Rozsah("C1:C3").Vymazat obsah
End If
End Sub
Tento komentář byl moderátorem webu minimalizován
Ahoj, hledám způsob, jak vyčistit řadu buněk od dat, když je do určité buňky zadáno "x". Použil jsem výše uvedený vzorec a fungovalo to perfektně pro tento jeden řádek. Problém je v tom, že to musím rozšířit na mnoho řádků. Pokud je například v "D13" zadáno "x", potřebuji vymazat rozsah J:13 - v:13. Také potřebuji, aby se to stalo, pokud je v "D14" zadáno x, jako v Potřebuji, aby byl vymazán rozsah d:14 - v:14. Jde to nějak napsat? Díky za vaši pomoc!
Tento komentář byl moderátorem webu minimalizován
Ahoj, u mě to nefunguje. Nic se nemění, ale ani žádné chyby. Nějaké tipy?
Tento komentář byl moderátorem webu minimalizován
Dobrý den,
Omluvám se za nepříjemnost. Poskytli byste svou verzi Office? Děkuji za Váš komentář.
Tento komentář byl moderátorem webu minimalizován
Jak mohu v případě A2 odkazovat na buňku z jiného listu?
Tento komentář byl moderátorem webu minimalizován
nějaký způsob, jak to udělat bez VBA?
Tento komentář byl moderátorem webu minimalizován
Ahoj Sonia,
Nenašli jsme žádné řešení kromě VBA. Děkuji za Váš komentář.
Tento komentář byl moderátorem webu minimalizován
Jaký kód VBA mám použít, pokud mám tabulku a potřebuji více mezer?

Můj stůl je B3:E7. Pokud je obsah ve sloupci B vymazán, chtěl bych pro daný řádek vymazat data ve sloupcích C, D, E. Mám níže uvedené pro řádek 3, ale chtěl bych totéž v řádku 4,5,6, 7, XNUMX a XNUMX.

Soukromá dílčí tabulka_Změna (ByVal Target As Range)
If Not Intersect(Target, Range("B3")) is Nothing Then
Rozsah("C3:E3").Vymazat obsah
End If
End Sub
Tento komentář byl moderátorem webu minimalizován
Co třeba jeden, který vymaže obsah libovolné buňky poklepáním?
Tento komentář byl moderátorem webu minimalizován
Ahoj, jak zopakujete kód pro více než jednu buňku v příkladu, tj. když vymažu obsah buněk a4 a a5, chci vymazat obsah b4: z4 a b5: z5, musím to udělat u velké tabulky s 1000 XNUMX řádky oceníte každou radu
Tento komentář byl moderátorem webu minimalizován
Ahoj Juliane, také hledám to samé, dej mi prosím vědět, jestli pro to máš nějaké řešení.
Tento komentář byl moderátorem webu minimalizován
Změňte odpovídajícím způsobem čísla
Dim i As Integer
Soukromá dílčí tabulka_Změna (ByVal Target As Range)
Pro i = 2 Pro 10
rozsah pohledu = "A" & i
contentrange = "B" & i & ":" & "C" & i
If Not Intersect(Target, Range(lookrange)) Is Nothing Then
Range(contentrange).ClearContents
End If
Příště já
End Sub
Tento komentář byl moderátorem webu minimalizován
Ahoj sagarsrinivas0312, mockrát děkuji za tento kód. Už týden hledám toto řešení!
Tento komentář byl moderátorem webu minimalizován
To je skvělé, díky. Jak to udělám vícekrát...takže vymazat další buňky na základě jiného sloupce?
Tento komentář byl moderátorem webu minimalizován
riusciresti a scrivermelo in modo che debba solo fare copia ed incolla?
non riesco veramente a farlo funzionare

tisíceré díky
Tento komentář byl moderátorem webu minimalizován
Dobrý den,
Snažím se vymazat další buňky ve sloupcích A a B, pokud najdu prázdné buňky ve sloupci C listu s názvem "Prodáno" a makro běží z listu s názvem "Faktura".

Dostal jsem níže kód z pomocné stránky, ale nemohu získat to, co jsem chtěl.
prosím pomozte mi s tím. Přikládám screenshot, co chci.

Suma Clear()

Dim g As Long
Pro g = 2 To ActiveSheet.UsedRange.Rows.Count
If Cells(g, "C").Value = "" Then
Cells(g, "A").ClearContents
Cells(g, "B").ClearContents

End If
další
Konečný součet
Tento komentář byl moderátorem webu minimalizován
Zdá se, že to nefunguje, pokud je zadaný obsah buňky řízen buňkou na jiném listu? existuje na to oprava?
Příklad použití názvů vašich buněk
Pokud je buňka "A2" (=list1[@[a5]] a toto číslo se změní na listu 1, změní se obsah A2, nevymaže obsah v určeném rozsahu.
Tento komentář byl moderátorem webu minimalizován
Private Sub Worksheet_Activate()
If Range("S2") <> Range("A2").Value Then
Rozsah("S2") = Rozsah("A2").Hodnota
Rozsah("d2:g2").ClearContents
End If
'S2' lze nahradit libovolnou buňkou mimo datový rozsah. To, co dělá VBA, je automatická aktualizace dat pro 'S2', pak data, která se aktualizují, řídí vámi zadaný rozsah a zda se vymažou nebo ne.
Toto je jediný způsob, jak jsem to úspěšně provedl při použití odkazovaných buněk v listu i mimo něj.
Tento komentář byl moderátorem webu minimalizován
Není to úplně to, co potřebuji, ale dostat se tam. Mám prázdnou buňku E3. Mám data v B3. Když vložím data do E3, pokud jsou stejná jako B3, B3 se odstraní. Doufám, že mi můžete pomoci.
Tento komentář byl moderátorem webu minimalizován
Je možné vymazat zadaný obsah buňky, pokud spouštěcí buňka obsahuje konkrétní číslo? Řekněme, POKUD buňka A1 = 1, pak vymazat buňky A2:A4?
Tento komentář byl moderátorem webu minimalizován
Ahoj všichni,

Besoin d'aide, j'ai besoin d'effacer le contenu d'une cellule de la colonne "I" si la cellule (de la même ligne) de la colonne "O" =0, v okolí 2000 lignes avec des titres tout le 10 lignes okolí.
Tento komentář byl moderátorem webu minimalizován
Ahoj,

Jen hledám snadný způsob, jak to udělat tak, že pokud "B2" vybralo "Ano" ze seznamu ověření dat, buňka B3 vymaže svá data... a naopak: Pokud "B3" vybralo "Ano" ze seznamu seznam ověření dat, buňka "B2" vymaže svá data.

V podstatě B2 or B3 může říct "Ano"(ze seznamu ověření dat), ale nikdy současně, jedno by mělo vymazat druhé.
Tento komentář byl moderátorem webu minimalizován
Ahoj Jeff,
Následující kód VBA vám může pomoci. Zkuste to prosím.
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220721
If Target.Cells.Count > 1 Then Exit Sub
    If (Not Intersect(Target, Range("B2")) Is Nothing) And (Target.Value = "Yes") Then
        Range("B3").ClearContents
        Else
        If (Not Intersect(Target, Range("B3")) Is Nothing) And (Target.Value = "Yes") Then
        Range("B2").ClearContents
    End If
    End If
End Sub
Tento komentář byl moderátorem webu minimalizován
Buongiorno, avrei bisogno di cancellare una serie di caselle (un rettangolo, quindi su più righe e colonne) in base al valore di un'altra cella. es: se la cella A2 è inferiore di 12, il quadrato con vertici opposto C2 : F4 venga cancellato.
Grazie mille
Tento komentář byl moderátorem webu minimalizován
Ahoj Pietro,
Promiňte, úplně nerozumím vaší otázce. Nevadí vám nahrát snímek obrazovky vašich dat?
Tento komentář byl moderátorem webu minimalizován
Помогите с решением, VBA не знаю. Мне нужно при изменении ячейки удалить данные из другой a чтобы этостовантодейтовант
Меняю А2 удаляется из G2, меняю А3 удаляется из G3, меняю A6 удаляется ит.з G6 удаляется ит.з GXNUMX

Soukromá dílčí tabulka_Změna (ByVal Target As Range)
If Not Intersect(Target, Range("A2")) Is Nothing Then
Rozsah("G2").ClearContents
End If
End Sub


Данный код хорош для одной ячейки, акак его размножить на все ячейки столбя
Tento komentář byl moderátorem webu minimalizován
Ahoj Наталья,
Následující kód VBA vám může pomoci vyřešit problém. Zkuste to prosím.

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20221013
    Dim xRight As Range
    Dim KeyCells As Range
    Set KeyCells = Range("A:A")
    Set xRight = Target.Offset(0, 6)
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
        xRight.ClearContents
    End If
End Sub
Tento komentář byl moderátorem webu minimalizován
Dobrý den,

Zu Punkt 3.
Die Taste "Andere" Finde ich nict auf meiner Windows Tastatur. Ich Habe Strg, Alt, Tab... allerdings die Taste Andere gibt es auf meiner Tastatur leider nicht.

Lieben Gruß Mathias
Tento komentář byl moderátorem webu minimalizován
Ahoj Mathiasi,
Pokud nemůžete najít odpovídající klávesu na klávesnici. Můžete pouze kliknout na Uložit tlačítko v Okno aplikací Microsoft Visual Basic uložte kód a poté toto okno ručně zavřete.
Tento komentář byl moderátorem webu minimalizován
Ahoj,
Níže uvedený kód funguje tak, jak je inzerováno, ale dochází k následujícím problémům:

Za prvé, při změně velikosti cílové tabulky se všechna data tabulky vymažou A, všechna záhlaví kromě sloupce 1 jsou přejmenována na „Sloupec1, Sloupec2 atd. A sešit se automaticky uloží a zruší vrácení zpět.

Za druhé, při mazání libovolného řádku tabulky se zobrazí „Chyba běhu 1004 (Posun metody selhal.


Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("F3:F500")) Is Nothing Then
     Target.Offset(0, 1).ClearContents
    ElseIf Not Intersect(Target, Range("G3:G500")) Is Nothing Then
        Target.Offset(0, 1).ClearContents
        Target.Offset(0, 2).ClearContents
    ElseIf Not Intersect(Target, Range("H3:H500")) Is Nothing Then
        Target.Offset(0, 1).ClearContents
    End If
End Sub


Nějaký nápad, co by mohlo být špatně?

Díky předem!
Tento komentář byl moderátorem webu minimalizován
Dobrý den, toto je informace o datové základně a KANCELÁŘ ONLINE a cestování ONEDRIVE, klid na PONER "CANCELADO" nebo "NOSHOW" eliminují obsah vybraných souborů.
Tento komentář byl moderátorem webu minimalizován
Ahoj anděli,
Kód VBA nefunguje v Office Online. Omluvám se za nepříjemnost.
Zatím zde nejsou žádné komentáře
Načíst další
Zanechat své připomínky
Odesílání jako host
×
Ohodnoťte tento příspěvek:
0   Postavy
Doporučená umístění

Sociální sítě

Copyright © 2009 - www.extendoffice.com. | Všechna práva vyhrazena. Poháněno ExtendOffice. | |. | Sitemap
Microsoft a logo Office jsou ochranné známky nebo registrované ochranné známky společnosti Microsoft Corporation ve Spojených státech a / nebo jiných zemích.
Chráněno Sectigo SSL