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

 Jak uruchomić makro na podstawie wartości komórki w programie Excel?

Przypuśćmy, że mam w skoroszycie wiele kodów makr, a teraz chcę uruchomić te kody na podstawie wartości komórki. W tym artykule omówię kilka sytuacji, które możesz spotkać w codziennej pracy podczas korzystania z programu Excel.

Uruchom lub uruchom makro, jeśli wartość komórki jest większa lub mniejsza niż określona wartość z kodem VBA

Uruchom lub uruchom makro, jeśli wartość komórki jest równa określonemu tekstowi z kodem VBA


strzałka niebieski prawy bąbelek Uruchom lub uruchom makro, jeśli wartość komórki jest większa lub mniejsza niż określona wartość z kodem VBA

Na przykład, jeśli wartość w komórce A1 wynosi od 10 do 50, uruchom makro1, a jeśli wartość jest większa niż 50, uruchom makro2. Aby rozwiązać tę pracę w programie Excel, zastosuj następujący kod VBA.

1. Kliknij prawym przyciskiem myszy kartę arkusza, w którym chcesz wykonać makro na podstawie wartości komórki, a następnie wybierz Wyświetl kod z menu kontekstowego oraz w otwartym Microsoft Visual Basic dla aplikacji w oknie, skopiuj i wklej następujący kod do pustego modułu:

Kod VBA: uruchom makro, jeśli wartość komórki jest większa lub mniejsza niż:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If IsNumeric(Target) And Target.Address = "$A$1" Then
        Select Case Target.Value
        Case 10 To 50: Macro1
        Case Is > 50: Macro2
        End Select
    End If
End Sub

doc uruchamia makro na podstawie wartości komórki 1

Uwagi: W powyższym kodzie:

A1 to komórka zawierająca określoną wartość, na podstawie której chcesz uruchomić makro;

Przypadek 10 do 50: Makro1: oznacza to, że jeśli wartość wynosi od 10 do 50, uruchom Makro1;

Przypadek jest> 50: Macro2: oznacza to, że jeśli wartość jest większa niż 50, uruchom Makro2.

Zmień te nazwy i kryteria makr zgodnie z potrzebami, a także możesz dodać więcej kryteriów zgodnie z Walizka skrypt.

2. Następnie zapisz i zamknij to okno kodu, teraz, gdy wprowadzona wartość jest między 10 a 50 w komórce A1, zostanie uruchomione Makro1, jeśli wprowadzona wartość jest większa niż 50, zostanie wykonane Makro2.


strzałka niebieski prawy bąbelek Uruchom lub uruchom makro, jeśli wartość komórki jest równa określonemu tekstowi z kodem VBA

Jeśli chcesz uruchomić makro na podstawie określonego tekstu w komórce, na przykład, aby uruchomić makro1, jeśli wprowadzono tekst „Usuń”, i uruchomić makro2, jeśli zostanie wpisany tekst „Wstaw”. Poniższy kod może wyświadczyć ci przysługę.

1. Kliknij prawym przyciskiem myszy arkusz, w którym chcesz wykonać makro na podstawie wartości komórki, a następnie wybierz Wyświetl kod z menu kontekstowego oraz w otwartym Microsoft Visual Basic dla aplikacji w oknie, skopiuj i wklej następujący kod do pustego modułu:

Kod VBA: Uruchom makro, jeśli wartość komórki jest określonym tekstem

Sub worksheet_change(ByVal target As Range)
Set target = Range("A1")
If target.Value = "Delete" Then
 Call Macro1
End If
If target.Value = "Insert" Then
Call Macro2
End If
End Sub 

doc uruchamia makro na podstawie wartości komórki 2

Uwagi: W powyższym kodzie „Usuń"I"wstawka”To teksty komórek, na podstawie których chcesz uruchamiać makra, i Macro1 i Macro2 to makra, które chcesz wykonać na podstawie tekstu. Zmień je według swoich potrzeb.

2. Następnie zapisz ten kod i zamknij okno, teraz po wpisaniu tekstu „Usuń” w komórce A1 uruchamiane jest makro1, jeśli wpisany jest tekst „Wstaw”, zostanie wykonane makro2.


Podobne artykuły:

Jak uruchomić makro, gdy zmienia się wartość komórki w programie Excel?

Jak automatycznie uruchomić makro przed drukowaniem w programie Excel?

Jak uruchomić makro na podstawie wartości wybranej z rozwijanej listy w programie Excel?

Jak uruchomić makro, klikając hiperłącza w programie Excel?

Jak uruchomić makro, gdy arkusz jest wybrany ze skoroszytu?


Najlepsze narzędzia biurowe

Kutools dla programu Excel rozwiązuje większość problemów i zwiększa produktywność o 80%

  • Ponowne użycie: Szybko włóż złożone wzory, wykresy i wszystko, czego używałeś wcześniej; Szyfruj komórki z hasłem; Utwórz listę mailingową i wysyłaj e-maile ...
  • Pasek Super Formula (łatwo edytować wiele wierszy tekstu i formuły); Układ do czytania (łatwe odczytywanie i edytowanie dużej liczby komórek); Wklej do filtrowanego zakresu...
  • Scal komórki / wiersze / kolumny bez utraty danych; Podziel zawartość komórek; Połącz zduplikowane wiersze / kolumny... Zapobiegaj zduplikowanym komórkom; Porównaj zakresy...
  • Wybierz Duplikat lub Unikalny Wydziwianie; Wybierz puste wiersze (wszystkie komórki są puste); Super Find i Fuzzy Find w wielu zeszytach ćwiczeń; Losowy wybór ...
  • Dokładna kopia Wiele komórek bez zmiany odwołania do formuły; Automatyczne tworzenie odniesień do wielu arkuszy; Wstaw punktory, Pola wyboru i nie tylko ...
  • Wyodrębnij tekst, Dodaj tekst, Usuń według pozycji, Usuń przestrzeń; Tworzenie i drukowanie podsumowań stronicowania; Konwertuj zawartość komórek i komentarze...
  • Super filtr (zapisz i zastosuj schematy filtrów do innych arkuszy); Zaawansowane sortowanie według miesiąca / tygodnia / dnia, częstotliwości i innych; Specjalny filtr pogrubieniem, kursywą ...
  • Połącz skoroszyty i arkusze robocze; Scal tabele na podstawie kluczowych kolumn; Podziel dane na wiele arkuszy; Konwersja wsadowa xls, xlsx i PDF...
  • Ponad 300 zaawansowanych funkcji. Obsługuje Office / Excel 2007-2021 i 365. Obsługuje wszystkie języki. Łatwe wdrażanie w przedsiębiorstwie lub organizacji. Pełne funkcje 30-dniowa bezpłatna wersja próbna. 60-dniowa gwarancja zwrotu pieniędzy.
karta kte 201905

Karta Office wprowadza interfejs z zakładkami do pakietu Office i znacznie ułatwia pracę

  • Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
  • Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
  • Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!
officetab dół
Sortuj komentarze według
Komentarze (19)
Znamionowy 5 z 5 · 1 oceny
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, co powiesz na to, że chcesz uruchomić makro oparte na dwóch komórkach? Jedna komórka jest oparta na tekście, a druga komórka ma wartości liczbowe? Następnie chciałbyś wywołać makro, jeśli dwie komórki pokazują dokładnie to, czego chcesz, na przykład „TAK” dla pierwszej komórki i 1 dla drugiej komórki, jeśli nie, wyskakujące okienko pokazuje komunikat „Nie znaleziono”.
Ten komentarz został zminimalizowany przez moderatora na stronie
Wymaganie:
Na podstawie wyboru
Pojawi się lista rozwijana dla następujących trzech właściwości o tym samym wymiarze, co poniżej.
I będą trzy komórki pochodne, które zostaną wyprowadzone z komórek (G46,G47 i G48)

Scenariusz:
Jeśli wybiorę wartość z rozwijanej listy miejsc powstawania kosztów, komórka pochodna miejsc powstawania kosztów (K46) powinna zostać wypełniona wartością wybraną z rozwijanej listy miejsc powstawania kosztów (H46), a pozostałe dwie komórki pochodne (K47 i k48) powinny stać się puste.

Podobnie, jeśli wybiorę wartość z listy rozwijanej Menedżer budżetu, komórka pochodna Menedżera budżetu powinna zostać wypełniona wartością wybraną z listy rozwijanej Menedżer budżetu (H47), a pozostałe dwie komórki pochodne (K45 i k48) powinny stać się puste.
Ten komentarz został zminimalizowany przez moderatora na stronie
Zajmuję się analizą wyników. W takim przypadku dane w Excelu będą takie jak ta Nazwa, Sub nazwa , Crade. Teraz chcę znaleźć wszystkie liczby pomyślnych lub zwycięskich kandydatów z wyniku. Jak mogę to dostać. Ponieważ mam 6 różnych przedmiotów i ich wyniki w jednym arkuszu Excela. Jeśli uczeń oblał jeden przedmiot, nie jest uczniem odnoszącym sukcesy. Jak usunąć ich imię we wszystkich przedmiotach.
Ten komentarz został zminimalizowany przez moderatora na stronie
Popraw kod zarówno dla tego samego arkusza roboczego.
PIERWSZY KOD DZIAŁA IDEALNIE
Prywatny Sub Worksheet_Change (ByVal Target As Range)
Jeśli nie przecina (cel, zakres ("D1")) to nic, wtedy
Wybierz zakres obserwacji ("D1")
Przypadek „0.5”: połowa
Przypadek „1”: jeden
Przypadek „1.25”: jeden dwadzieścia pięć
End Select
End If
End Sub

DRUGI KOD NIE DZIAŁA (proszę poprawić poniższe)
Prywatna zmiana subskrypcji (ByVal Target As Range)
Jeśli nie przecina (cel, zakres ("D2")) to nic, wtedy
Wybierz zakres obserwacji ("D2")
Przypadek „9.53”: dziewięć punktów pięć trzy
End Select
End If
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
Olá, quero fazer o seguinte:
Na Celula A1, assim que ela estiver preenchida passe para a celula de baixo, no caso A2.
Eu uso um leitor de codigo de barras para produtos katastrar, e ele le os numeros automaticos, ai tenho que ficar apertando ENTER para ir para celula de Baixo.

Dziękujemy!
Ten komentarz został zminimalizowany przez moderatora na stronie
Hola, una consulting, como se haría si por ejemplo dado un numero se pueda ejecutar las dos macros
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj, Gustavo
Aby rozwiązać swój problem, zastosuj następujący kod:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If IsNumeric(Target) And Target.Address = "$A$1" Then
        If Target.Value > 10 And Target.Value < 50 Then
         macro1
         macro2
        End If
    End If
End Sub

Proszę spróbować, mam nadzieję, że może ci to pomóc!
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam,
je souhaiterais appliquer cette macro à mon code. Le probleme est que la cellule s'incrémente via une toupie et le code ne reconnais pas le changement de valeur de la cellule.
Quand je saisie la valeur manuellement celà fonctionne Correctement.

Merci d'Avance
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj Gillesie,
Powinieneś wstawić Przycisk wirowania (kontrolka ActiveX) najpierw, a następnie kliknij prawym przyciskiem myszy, wybierz Wyświetl kod, a następnie skopiuj i wklej poniższy kod pomiędzy istniejącymi skryptami,
Dim xWSh As Worksheet
Dim xOL As OLEObject
Dim xRg As Range
Set xWSh = Application.ActiveSheet
Set xOL = xWSh.OLEObjects("SpinButton1") 'The name of the spin button
Set xRg = xWSh.Range(xOL.LinkedCell)
If IsNumeric(xRg) And xRg.Address = "$A$1" Then
        Select Case xRg.Value
        Case 10 To 50: Macro1
        Case Is > 50: Macro2
        End Select
End If

https://www.extendoffice.com/images/stories/comments/comment-skyyang/DOC-RUN-CODE.png

Proszę spróbować, mam nadzieję, że może ci to pomóc!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć!

Jestem bardzo nowy w VBA i wypróbowałem to rozwiązanie dla arkusza Excela, który mam. Zasadniczo mam po prostu długą listę w programie Excel, w której w kolumnie T należy wpisać Tak lub Nie, i chciałbym, aby, jeśli wpiszesz Tak, uruchom makro ... Próbowałem wielu różnych sposobów definiowania zakresu, ale nic nie działa.

Sub worksheet_change (ByVal target As Range)

Ustaw cel = Zakres("T:T")
If target.Value = "Tak" Wtedy
Zadzwoń do makro1
End If

End Sub

Podkreślam ten problem (niezgodność typu błędu w czasie wykonywania): If target.Value = "Yes" Then

Czy ktokolwiek może pomóc?

Pozdrawiam Izabelo
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj, Westergaardzie
Może ci pomóc następujący kod VBA: (Uwaga: zmień nazwę Macro1 na własny kryptonim)
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("T:T")) Is Nothing Then
If Target.Value = "Yes" Then
      Call Macro1
    End If
    End If
End Sub

Proszę spróbować, mam nadzieję, że może ci to pomóc!
Ten komentarz został zminimalizowany przez moderatora na stronie
Dziękuję Ci bardzo! Teraz działa :)
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,
Jak zmodyfikować tę bazę kodu na podstawie wyniku obliczenia formuły komórki A1
Arkusz podrzędny_Oblicz()
Proszę pomóż

Private Sub Worksheet_Change (ByVal Target As Excel.Range)
Jeśli Target.Cells.Count > 1, to wyjdź z Sub
If IsNumeric(Target) And Target.Address = "$A$1" Wtedy
Wybierz wartość docelową sprawy
Przypadek 10 do 50: Makro1
Przypadek jest> 50: Macro2
End Select
End If
End Sub
Znamionowy 5 z 5
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj FG,
Aby kod działał w komórkach z formułą, zastosuj poniższy kod:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
    If IsNumeric(Target) And Target.Address = "$A$1" Then
        Select Case Target.Value
        Case 10 To 50: macro1
        Case Is > 50: macro2
        End Select
    ElseIf (Not Intersect(Range("$A$1"), Target.Dependents) Is Nothing) Then
        Set Rg = Intersect(Range("$A$1"), Target.Dependents)(1)
        Select Case Rg.Value
        Case 10 To 50: macro1
        Case Is > 50: macro2
        End Select
    End If
End Sub

Proszę spróbować, mam nadzieję, że może ci to pomóc!
Ten komentarz został zminimalizowany przez moderatora na stronie
Ciao skyyang. Spero tu possa aiutarmi. Ho un programmino in vba che basandosi su variazioni di prezzo di una cella (E1), collegata in DDE con una piattaforma di trading di borsa, fissa i prezzi: Massimo, Minimo, Apertura, Chiusura, per poi passare alla riga sukcesiva in base a un intervallo temporale impostato all'apertura del foglio elettronico. Algoritmo da mi sviluppato fa si che inelle colonne: "BH" i "BI" vengano visualizzati i prezzi di acquisto e di vendita, ma solo quando soddisfatte le condizioni date, altrimenti le celle non restituiscono nessun valore. Quello di cui avrei bisogno è di un avviso sonoro .wav che mi avvisi quando viene restituito un valore, di acquisto o di vendita, in modo di non dover fissare lo schermo per 14 ore al giorno. Sprawdź kod „SoundMe()” w trybie online, aby uzyskać dostęp do nowej masy lub nowej wersji minimo w rydze w programie, w którym możesz się znaleźć. Pensi che il problema si possa risolvere? Grazie per l'attenzione
Stephen
Ten komentarz został zminimalizowany przez moderatora na stronie
Dzień dobry,
Sprawdź listę, która zawiera 2 makro, które mają wartość valore di una cella, se quel cambio deriva da una funzione „se” non funziona, se digito i valori (vero lub false) funziona.

Przyjdź posso ovviare?
Ewentualnie możesz skorzystać z warunków dotyczących komórek i daleko weryfikować listę tych komórek, które są dostępne w makro, a można je skompilować o meno?

grazie
Ten komentarz został zminimalizowany przez moderatora na stronie
Dzień dobry,
vorrei eseguire una macro quando una in una cella viene inserito un controllo "if" o se viene inserita una data e non un numero.

Ad esempio se nella cella A1 inserisco: If(B2=0;vero;falso) e la macro leggendo vero mi nasconde lo sheet2 altrimenti mi scopre la sheet 2.

Przyjdź posso taryfy?
Riesco a far funzionare il tutto se inserisco in A1 manualmente un valore (in questo caso vero o falso).

dzięki
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj, Karolu,
W rzeczywistości drugi kod w tym artykule może rozwiązać Twój problem.
Uwagi: Musisz tylko zmienić tekst na Prawda i Fałsz w kodzie i zmienić nazwę kodową na własną.
Sub worksheet_change(ByVal target As Range)
Set target = Range("A1")
If target.Value = "True" Then
 Call Macro1
End If
If target.Value = "False" Then
Call Macro2
End If
End Sub 


Spróbuj ponownie, dziękuję!
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam,

ich bräuchte dafür ein Makro,

ich kann dieses Problem nicht alleine lösen, wäre super wenn mir jemand helfen könnte.

W M1 steht die Zahl 5, jetzt soll der Bereich von A83 bis A683 auf die Zahl 5 geprüft werden, sollte zB A111 die Zahl 5 enthalten, dann soll C111 + 1 ( wenn in C111 23 steht dann soll da 24 stehen). Genau so wenn in A444 eine 5 steht, dann soll C444 + 1 ( wenn C444 = 99 dann 100).
Immer wenn der Wert mit M1 übereinstimmt, dann soll diese Zelle in Spalte C immer wieder + 1 zählen. Również 23 +1 dann 24 + 1 dann 25 +1 usw usw.


Vielleicht kann mir da jemand helfen,

Z góry dziękuję.

LG Stfan
Nie ma tu jeszcze żadnych komentarzy
Zostaw swój komentarz
Publikowanie jako gość
×
Oceń ten post:
0   Postacie
Sugerowane lokalizacje

Bądż na bieżąco

Prawa autorskie © 2009 - www.extendoffice.com. | Wszelkie prawa zastrzeżone. Zasilany przez ExtendOffice, | Mapa strony
Microsoft i logo Office są znakami towarowymi lub zastrzeżonymi znakami towarowymi Microsoft Corporation w Stanach Zjednoczonych i / lub innych krajach.
Chronione przez Sectigo SSL