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

 Hvordan køres makro baseret på celleværdi i Excel?

Antag, jeg har flere makrokoder i min projektmappe, og nu vil jeg køre disse koder baseret på celleværdien. Denne artikel vil jeg tale om flere situationer, du måtte lide i dit daglige arbejde, når du bruger Excel.

Kør eller udløs makro, hvis celleværdien er større eller mindre end en bestemt værdi med VBA-kode

Kør eller udløs makro, hvis celleværdi er lig med specifik tekst med VBA-kode


pil blå højre boble Kør eller udløs makro, hvis celleværdien er større eller mindre end en bestemt værdi med VBA-kode

For eksempel, hvis værdien i celle A1 er mellem 10 og 50, skal du køre makro1, og hvis værdien er større end 50, skal du køre makro2. For at løse dette job i Excel skal du anvende følgende VBA-kode.

1. Højreklik på arkfanen, som du vil udføre makroen baseret på en celleværdi, og vælg derefter Vis kode fra genvejsmenuen og i det åbnede Microsoft Visual Basic til applikationer vindue, kopier og indsæt følgende kode i det tomme modul:

VBA-kode: Kør makro, hvis celleværdien er større eller mindre end:

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øre makro baseret på celleværdi 1

Bemærk: I ovenstående kode:

A1 er den celle, der indeholder den specifikke værdi, du vil køre makroen baseret på;

Sag 10 til 50: Makro1: det betyder, at hvis værdien er mellem 10 og 50, skal du køre Macro1;

Sag er> 50: Makro2: det betyder, at hvis værdien er større end 50, skal du køre Macro2.

Skift disse makronavne og kriterier efter dit behov, og du kan også tilføje flere kriterier efter Kasse scripts.

2. Gem og luk derefter dette kodevindue, nu når den værdi, du indtaster, er mellem 10 og 50 i celle A1, udløses Makro1, hvis den indtastede værdi er større end 50, udføres Makro2.


pil blå højre boble Kør eller udløs makro, hvis celleværdi er lig med specifik tekst med VBA-kode

Hvis du f.eks. Vil udløse makroen baseret på specifik tekst i en celle, for at køre makroen1, hvis teksten "Slet" er indtastet, og kør makro2, hvis teksten "Indsæt" er skrevet. Følgende kode kan gøre dig en tjeneste.

1. Højreklik på det ark, som du vil udføre makroen baseret på celleværdien, og vælg derefter Vis kode fra genvejsmenuen og i det åbnede Microsoft Visual Basic til applikationer vindue, kopier og indsæt følgende kode i det tomme modul:

VBA-kode: Kør makro, hvis celleværdien er en specifik tekst

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øre makro baseret på celleværdi 2

Bemærk: I ovenstående kode, “Slette"Og"indsatte”Er de celletekster, som du vil køre makroer baseret på, og Macro1 og Macro2 er de makroer, du vil udføre baseret på tekst. Skift dem til dit behov.

2. Gem derefter denne kode og luk vinduet, når du nu indtaster teksten "Slet" i celle A1, udløses makro1. Hvis teksten "Indsæt" indtastes, udføres makro2.


Relaterede artikler:

Hvordan køres makro, når celleværdien ændres i Excel?

Hvordan køres makro automatisk inden udskrivning i Excel?

Hvordan køres makro baseret på værdi valgt fra rullelisten i Excel?

Hvordan køres makro ved at klikke på hyperlinks i Excel?

Hvordan køres makro, når ark er valgt fra en projektmappe?


De bedste Office-produktivitetsværktøjer

Kutools til Excel løser de fleste af dine problemer og øger din produktivitet med 80%

  • Genbruge: Indsæt hurtigt komplekse formler, diagrammer og alt, hvad du har brugt før; Krypter celler med adgangskode Opret postliste og send e-mails ...
  • Super formel bar (let redigere flere linjer med tekst og formel); Læsning Layout (let at læse og redigere et stort antal celler); Indsæt til filtreret rækkevidde...
  • Flet celler / rækker / kolonner uden at miste data; Split celler indhold; Kombiner duplikerede rækker / kolonner... Forhindre duplikerede celler; Sammenlign områder...
  • Vælg Duplicate eller Unique Rækker; Vælg tomme rækker (alle celler er tomme); Super Find og Fuzzy Find i mange arbejdsbøger; Tilfældig valg ...
  • Præcis kopi Flere celler uden at ændre formelreference; Auto Opret referencer til flere ark; Indsæt kugler, Afkrydsningsfelter og mere ...
  • Uddrag tekst, Tilføj tekst, Fjern efter position, Fjern mellemrum; Opret og udskriv personsøgningssubtotaler; Konverter mellem celler indhold og kommentarer...
  • Superfilter (gem og anvend filterskemaer på andre ark); Avanceret sortering efter måned / uge / dag, hyppighed og mere; Specielt filter af fed, kursiv ...
  • Kombiner arbejdsbøger og arbejdsark; Fletabeller baseret på nøglekolonner; Opdel data i flere ark; Batch Konverter xls, xlsx og PDF...
  • Mere end 300 kraftfulde funktioner. Understøtter Office / Excel 2007-2021 og 365. Understøtter alle sprog. Nem implementering i din virksomhed eller organisation. Fuld funktioner 30-dages gratis prøveperiode. 60 dages pengene tilbage garanti.
kte-fane 201905

Fanen Office bringer en grænseflade til et kontor med Office, og gør dit arbejde meget lettere

  • Aktiver redigering og læsning af faner i Word, Excel, PowerPoint, Publisher, Access, Visio og Project.
  • Åbn og opret flere dokumenter i nye faner i det samme vindue snarere end i nye vinduer.
  • Øger din produktivitet med 50 % og reducerer hundredvis af museklik for dig hver dag!
officetab bund
Sorter kommentarer efter
Kommentarer (18)
Bedømt 5 ud af 5 · 1 vurderinger
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, hvad med hvis du vil køre en makro baseret på to celler? Er den ene celle tekstbaseret, og den anden celle har numeriske værdier? Så vil du gerne kalde en makro, hvis de to celler viser præcis, hvad du ønsker, som "JA" for den første celle og 1 for den anden celle, hvis ikke en pop-boks ville vise "Ikke fundet".
Denne kommentar blev minimeret af moderatoren på webstedet
Krav:
Baseret på udvalget
Der vil være en rulleliste for at følge tre egenskaber af samme dimension som nedenfor.
Og der vil være tre afledte celler, som vil blive afledt fra cellerne (G46, G47 og G48)

Scenario:
Hvis jeg vælger en værdi fra omkostningsstedsrullelisten, skal omkostningsstedsafledt celle(K46) udfyldes med værdi valgt fra omkostningsstedsrullelisten(H46), og de to andre afledte celler (K47 og k48) skulle blive tomme.

På samme måde, hvis jeg vælger værdi fra rullelisten Budget manager, skal den budgetansvarlige afledte celle udfyldes med værdien valgt fra rullelisten Budget manager (H47), og de to andre afledte celler (K45 og k48) skulle blive tomme.
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg arbejder med resultatanalyse. I dette tilfælde vil dataene i excel være som dette Navn, Undernavn, Crade. Nu vil jeg finde alle beståede eller succesfulde kandidatnumre fra resultatet. Hvordan kan jeg få det. Fordi jeg har 6 forskellige emner og deres resultater i et enkelt excel-ark. Hvis eleven ikke bestod i et fag, er han ikke en succesfuld studerende. Hvordan fjerner man deres navn i alle fagene.
Denne kommentar blev minimeret af moderatoren på webstedet
Ret venligst koden begge for det samme regneark.
FØRSTE KODE VIRKER PERFEKT
Privat Sub Worksheet_Change (ByVal Target As Range)
Hvis ikke skærer (mål, rækkevidde("D1")) er ingenting så
Vælg sagsområde ("D1")
Sag "0.5": Halvt
Sag "1": En
Sag "1.25": OneTwentyFive
Afslut Vælg
End If
End Sub

ANDEN KODE VIRKER IKKE (retur venligst nedenstående)
Privat underændring (ByVal Target As Range)
Hvis ikke skærer (mål, rækkevidde("D2")) er ingenting så
Vælg sagsområde ("D2")
Sag "9.53": nipointfemtre
Afslut Vælg
End If
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Olá, quero fazer eller 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 for matrikulære produkter, e ele lê os numeros automaticos, ai tenho que ficar apertando ENTER for ir para celula de baixo.

Tak!
Denne kommentar blev minimeret af moderatoren på webstedet
Hola, una consulta, como se haría si por ejemplo dado un numero se pueda ejecutar las dos macros
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Gustavo
For at løse dit problem skal du anvende følgende kode:
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

Prøv venligst, håber det kan hjælpe dig!
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,
je souhaiterais appliquer cette makro à mon kode. 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 korrektion.

Merci d'avance
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Gilles,
Du skal indsætte en Spin-knap (ActiveX Control) først, og derefter højreklik på den, vælg Se kode, så kopier og indsæt nedenstående kode mellem de eksisterende scripts,
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

Prøv venligst, håber det kan hjælpe dig!
Denne kommentar blev minimeret af moderatoren på webstedet
Hej!

Jeg er meget ny til VBA, og jeg prøvede denne løsning til et excel-ark, jeg har. Jeg har stort set bare en lang liste i excel, hvor du i kolonne T skal skrive Ja eller Nej, og jeg vil gerne have, at hvis du har skrevet Ja, køre en makro... Jeg prøvede en masse forskellige måder at definere området på, men intet virker.

Sub workheet_change(ByVal target As Range)

Indstil mål = Range("T:T")
Hvis target.Value = "Ja" Så
Ring til Macro1
End If

End Sub

Jeg fremhæver dette problem (runtime error-type mismatch): Hvis target.Value = "Ja" Så

Kan nogen hjælpe?

Med venlig hilsen Isabella
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Westergaard
Måske kan følgende VBA-kode hjælpe dig: (Bemærk: Venligst skift navnet på Macro1 til dit eget kodenavn)
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

Prøv venligst, håber det kan hjælpe dig!
Denne kommentar blev minimeret af moderatoren på webstedet
Mange tak! Det virker nu :)
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,
Sådan ændres denne kodebase på celle A1 formelberegningsresultat
Underregneark_Beregn()
Please hjælp

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Hvis Target.Cells.Count > 1 Afslut Sub
Hvis IsNumeric(Target) And Target.Address = "$A$1" Så
Vælg Case Target.Value
Sag 10 til 50: Makro1
Sag er> 50: Makro2
Afslut Vælg
End If
End Sub
Bedømt 5 ud af 5
Denne kommentar blev minimeret af moderatoren på webstedet
Hej FG,
For at få koden til at fungere i formelceller, skal du anvende nedenstående kode:
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

Prøv venligst, håber det kan hjælpe dig!
Denne kommentar blev minimeret af moderatoren på webstedet
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 dato, 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. Hvis du vil inserere en kode "SoundMe()" trovato on-line, kan du finde en ny masse eller en nuovo minimo nella riga in cui il program sta aggiornando i prezzi. Vil du have et problem? Grazie per l'attenzione
Stefano
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,
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.

Kommer du til at spise?
Eventualmente come potrei evitare di utilizzare il condizionale sulla cella e far verificare al listato se la cella che deve far avviare le macro è compilata o meno?

Grazie
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,
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 billetten?
Riesco a far funzionare il tutto se inserisco in A1 manualmente un valore (in questo caso vero o falso).

Thanks
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Carlo,
Faktisk kan den anden kode i denne artikel løse dit problem.
Bemærk: Du skal bare ændre teksten til True and False i koden, og ændre kodenavnet til dit 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 


Prøv venligst igen, tak!
Der er endnu ingen kommentarer her
Efterlad dine kommentarer
Sender som gæst
×
Bedøm dette indlæg:
0   Tegn
Foreslåede steder

Følg os

Copyright © 2009 - www.extendoffice.com. | Alle rettigheder forbeholdes. Drevet af ExtendOffice. | | Sitemap
Microsoft og Office-logoet er varemærker eller registrerede varemærker tilhørende Microsoft Corporation i USA og / eller andre lande.
Beskyttet af Sectigo SSL