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

 Hur kör man makro baserat på cellvärde i Excel?

Antag att jag har flera makrokoder i min arbetsbok, och nu vill jag köra dessa koder baserat på cellvärdet. Den här artikeln kommer jag att prata om flera situationer som du kan drabbas av i ditt dagliga arbete när du använder Excel.

Kör eller utlös makro om cellvärdet är större eller mindre än ett specifikt värde med VBA-kod

Kör eller utlös makro om cellvärdet motsvarar specifik text med VBA-kod


pil blå höger bubbla Kör eller utlös makro om cellvärdet är större eller mindre än ett specifikt värde med VBA-kod

Till exempel, om värdet i cell A1 är mellan 10 och 50, kör makro1, och om värdet är större än 50, kör makro2. För att lösa detta jobb i Excel, använd följande VBA-kod.

1. Högerklicka på arkfliken som du vill utföra makrot baserat på ett cellvärde och välj sedan Visa kod från snabbmenyn och i den öppnade Microsoft Visual Basic för applikationer fönster, kopiera och klistra in följande kod i den tomma modulen:

VBA-kod: Kör makro om cellvärdet är större eller mindre än:

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 kör makro baserat på cellvärde 1

Anmärkningar: I ovanstående kod:

A1 är cellen som innehåller det specifika värde du vill köra makrot baserat på;

Fall 10 till 50: Makro1: det betyder att om värdet är mellan 10 och 50, kör Macro1;

Fall är> 50: Macro2: det betyder att om värdet är större än 50, kör Macro2.

Ändra dessa makronamn och kriterier efter dina behov, och du kan också lägga till fler kriterier efter Fall skript.

2. Spara och stäng sedan detta kodfönster, nu, när värdet du anger är mellan 10 och 50 i cell A1, kommer Macro1 att utlösas, om det inmatade värdet är större än 50, körs Macro2.


pil blå höger bubbla Kör eller utlös makro om cellvärdet motsvarar specifik text med VBA-kod

Om du till exempel vill utlösa makrot baserat på specifik text i en cell för att köra makro1 om texten ”Radera” är angiven och köra makro2 om texten ”Infoga” skrivs. Följande kod kan göra dig en tjänst.

1. Högerklicka på arket som du vill utföra makrot baserat på cellvärdet och välj sedan Visa kod från snabbmenyn och i den öppnade Microsoft Visual Basic för applikationer fönster, kopiera och klistra in följande kod i den tomma modulen:

VBA-kod: Kör makro om cellvärdet är en specifik text

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 kör makro baserat på cellvärde 2

Anmärkningar: I ovanstående kod, “Radera"Och"Insert”Är celltexterna som du vill köra makron baserat på, och Macro1 och Macro2 är de makron du vill köra baserat på text. Ändra dem efter dina behov.

2. Spara sedan den här koden och stäng fönstret, nu när du skriver in texten "Radera" i cell A1, utlöses makro1. Om texten "Infoga" matas in kommer makro2 att köras.


Relaterade artiklar:

Hur kör man makro när cellvärdet ändras i Excel?

Hur kör man makro automatiskt innan man skriver ut i Excel?

Hur kör man makro baserat på värde valt från listrutan i Excel?

Hur kör man makro genom att klicka på hyperlänkar i Excel?

Hur kör man makro när ark väljs från en arbetsbok?


De bästa Office-produktivitetsverktygen

Kutools för Excel löser de flesta av dina problem och ökar din produktivitet med 80%

  • återanvändning: Sätt snabbt i komplexa formler, diagram och allt som du har använt tidigare; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
  • Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
  • Sammanfoga celler / rader / kolumner utan att förlora data; Delat cellinnehåll; Kombinera duplicerade rader / kolumner... Förhindra duplicerade celler; Jämför intervall...
  • Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
  • Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
  • Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
  • Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
  • Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
  • Mer än 300 kraftfulla funktioner. Stöder Office / Excel 2007-2021 och 365. Stöder alla språk. Enkel implementering i ditt företag eller organisation. Fullständiga funktioner 30 dagars gratis provperiod. 60 dagars pengarna tillbaka-garanti.
kte-flik 201905

Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
officetab botten
Sortera kommentarer efter
Kommentarer (19)
Klassad 5 av 5 · 1 betyg
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, vad sägs om om du vill köra ett makro baserat på två celler? En cell är textbaserad och den andra cellen har numeriska värden? Sedan skulle du vilja anropa ett makro om de två cellerna visar exakt vad du vill ha, som "JA" för den första cellen och 1 för den andra cellen, om inte en popruta skulle visa "Finns ej".
Denna kommentar minimerades av moderatoren på webbplatsen
Krav:
Baserat på urvalet
Det kommer att finnas en rullgardinslista för att följa tre egenskaper med samma dimension som nedan.
Och det kommer att finnas tre härledda celler som kommer att härledas från cellerna (G46, G47 och G48)

Scenario:
Om jag väljer ett värde från rullgardinsmenyn för kostnadsställe, ska kostnadsstället härledd cell (K46) fyllas i med värde valt från rullgardinsmenyn för kostnadsstället (H46) och de andra två härledda cellerna (K47 och k48) ska bli tomma.

På samma sätt om jag väljer värde från rullgardinsmenyn Budgethanterare, ska den härledda cellen från Budgethanteraren fyllas i med värde valt från rullgardinsmenyn Budgethanterare (H47) och de andra två härledda cellerna (K45 och k48) ska bli tomma.
Denna kommentar minimerades av moderatoren på webbplatsen
Jag arbetar med resultatanalys. I det här fallet kommer data i excel att vara så här Namn, Undernamn, Crade. Nu vill jag hitta alla godkända eller framgångsrika kandidatsiffror från resultatet. Hur kan jag få det. Eftersom jag har 6 olika ämnen och deras resultat i ett enda excelark. Om eleven underkänd i ett ämne är han inte en framgångsrik student. Hur tar man bort deras namn i alla ämnen.
Denna kommentar minimerades av moderatoren på webbplatsen
Vänligen korrigera koden båda för samma arbetsblad.
FÖRSTA KODEN FUNGERAR PERFEKT
Privata delarkivsförändring (ByVal-mål som område)
Om inte skära (mål, intervall("D1")) är ingenting då
Välj Case Range ("D1")
Fall "0.5": Hälften
Fall "1": Ett
Fall "1.25": OneTwentyFive
Avsluta Välj
End If
End Sub

ANDRA KODEN FUNGERAR INTE (korrigera gärna nedan)
Private Sub Change (ByVal Target As Range)
Om inte skära (mål, intervall("D2")) är ingenting då
Välj Case Range ("D2")
Fall "9.53": nio komma femtre
Avsluta Välj
End If
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Olá, quero fazer eller seguinte:
Na Celula A1, assim que ela estiver preenchida pass para a celula de baixo, no caso A2.
Eu uso um leitor de codigo de barras para cadastrar produtos, e ele lê os numeros automaticos, ai tenho que ficar apertando ENTER para ir para celula de baixo.

Tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Hola, una consulta, como se haría si por ejemplo dado un numero se pueda ejecutar las dos macros
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Gustavo
För att lösa ditt problem, använd följande 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

Försök gärna, hoppas det kan hjälpa dig!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej!
je souhaiterais appliquer cette macro à mon code. Le problème 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.

Tack i förväg
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Gilles,
Du bör infoga en Snurrknapp (ActiveX Control) först, och sedan högerklicka på den, välj Visa kod, kopiera och klistra sedan in koden nedan mellan de befintliga skripten,
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

Försök gärna, hoppas det kan hjälpa dig!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej!

Jag är väldigt ny på VBA och jag provade den här lösningen för ett excel-ark jag har. Jag har i princip bara en lång lista i excel, där du i kolumn T ska skriva Ja eller Nej, och jag skulle vilja att det, Om du skrev Ja, kör ett makro... Jag försökte många olika sätt att definiera intervallet men ingenting fungerar.

Subworkheet_change(ByVal-mål som intervall)

Ange mål = Range("T:T")
Om target.Value = "Ja" Då
Ring Macro1
End If

End Sub

Jag lyfter fram det här problemet (fel överensstämmelse mellan körtidsfel och typ): Om target.Value = "Ja" Då

Kan någon hjälpa till?

Med vänlig hälsning, Isabella
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Westergaard
Kan vara följande VBA-kod kan hjälpa dig: (Obs: Vänligen ändra namnet på Macro1 till ditt eget kodnamn)
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

Försök gärna, hoppas det kan hjälpa dig!
Denna kommentar minimerades av moderatoren på webbplatsen
Tack så mycket! Nu funkar det :)
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,
Hur man ändrar denna kodbas på cell A1 formelberäkningsresultat
Sub Worksheet_Calculate()
Snälla hjälp

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Om Target.Cells.Count > 1 Avsluta Sub
Om IsNumeric(Target) And Target.Address = "$A$1" Då
Välj Målmålvärde
Fall 10 till 50: Makro1
Fall är> 50: Macro2
Avsluta Välj
End If
End Sub
Klassad 5 av 5
Denna kommentar minimerades av moderatoren på webbplatsen
Hej FG,
För att få koden att fungera i formelceller, använd koden nedan:
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

Gör ett försök, hoppas det kan hjälpa dig!
Denna kommentar minimerades av moderatoren på webbplatsen
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 successiva in base a un intervallo temporale impostato all'apertura del foglio elettronico. L'algoritmo da me sviluppato fa si che nelle colonne: "BH" e "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. Ho provato a inserire un codice "SoundMe()" trovato on-line, ma suona ogni volta che c'è un nuovo massimo o un nuovo minimo nella riga in cui il programma sta aggiornando i prezzi. Vad är det för problem? Grazie per l'attenzione
Stefano
Denna kommentar minimerades av moderatoren på webbplatsen
God morgon,
ho provato il listato che permette di richiamare 2 macro al cambio del valore di una cella, se quel cambio deriva da una funzione "se" non funziona, se digito i valori (vero o falso) funziona.

Kom posso ovviare?
Eventualmente come potrei evitare di utilizzare il condizionale sulla cella e far verificare all listato se la cella che deve far avviare le macro è compilata o meno?

grazie
Denna kommentar minimerades av moderatoren på webbplatsen
God morgon,
vorrei eseguire una makro quando una i 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.

Kommer du med dig?
Riesco a far funzionare il tutto se inserisco in A1 manualmente un valore (in questo caso vero o falso).

Tack
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, Carlo,
Faktum är att den andra koden i den här artikeln kan lösa ditt problem.
Anmärkningar: Du behöver bara ändra texten till True and False i koden och ändra kodnamnet till ditt eget.
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 


Försök igen, tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,

ich bräuchte dafür ein Makro,

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

I 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 så wenn i 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. Även 23 +1 dann 24 + 1 dann 25 +1 usw usw.


Vielleicht kan mir da jemand helfen,

Tack på förhand.

LG Stfan
Det finns inga kommentarer här ännu
Lämna dina kommentarer
Postar som gäst
×
Betygsätt detta inlägg:
0   Tecken
Föreslagna platser

Följ oss

Copyright © 2009 - www.extendoffice.com. | Alla rättigheter förbehållna. Drivs av ExtendOffice. | | Sitemap
Microsoft och Office-logotypen är varumärken eller registrerade varumärken som tillhör Microsoft Corporation i USA och / eller andra länder.
Skyddad av Sectigo SSL