AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1701402
Accepted
wyatt7613
wyatt7613
Asked: 2022-01-26 21:12:23 +0800 CST2022-01-26 21:12:23 +0800 CST 2022-01-26 21:12:23 +0800 CST

Excel VBA - If Statement Verificando se o valor está na matriz

  • 772

Eu tenho um monte de variáveis ​​que armazenei em uma matriz. Estou tentando usar uma instrução If Then para ver se o valor de uma célula específica está nessa matriz. Aqui está o meu código:

Dim Vars1 As Variant
Vars1 = Array("Stage 2", "Stage 3", "Stage 4", "Stage 5", "Stage 6", "Stage 7", "WIP Cleanup", 
"Road Test", "Test", "Test Cleanup", "In Bay Inspection", "In Bay Clean Up", "PDI", "PDI 
Cleanup", "Verify", "Complete", "Pictures", "Remove", "ECD", "Platform Install", "#N/A")
'Cuts special delivery parts for Line 3
For RowCounter = LastRow To 1 Step -1
    If InStr(1, Range("F" & RowCounter), "underslung", vbTextCompare) Then 'Underslung
        If Range("B" & RowCounter).Value = "FA Line 3" And Range("N" & RowCounter).Value = Vars1 Then
            Rows(RowCounter).EntireRow.Cut _
                Destination:=Sheets("FA3").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
        End If
    End If
Next RowCounter

Eu não acho que o código está funcionando porque não está cortando e colando a linha. Como faço para obter a instrução if then para verificar e ver se o valor em "Range("N" & RowCounter)" está na matriz?

microsoft-excel microsoft-excel-2010
  • 2 2 respostas
  • 2538 Views

2 respostas

  • Voted
  1. Best Answer
    njc
    2022-01-26T22:19:57+08:002022-01-26T22:19:57+08:00
    ...And Range("N" & RowCounter).Value = Vars1 Then
    

    Nesta parte do seu código, você está comparando um único valor a uma matriz. Você deve verificar se o valor está na matriz. Não sei de cabeça se existe uma função do Excel VBA que faz isso. Não é difícil escrever uma função que testa um valor em um array. Aqui está uma ideia,

    Option Explicit
    Option Base 0
    
    Function InArray(ByVal pstrVal As String, ByVal pvntArray As Variant) As Boolean
    
        Dim lngIdx As Long
    
        For lngIdx = 0 To UBound(pvntArray)
        
            If (pstrVal = VBA.CStr(pvntArray(lngIdx))) Then
                InArray = True
                Exit Function
            End If
        
        Next lngIdx
    
        InArray = False
    End Function
    

    Para testar esta função,

    Sub Testing123()
    
        Dim Vars1 As Variant
    
        Vars1 = Array("Stage 2", "Stage 3", "Stage 4", "Stage 5", "Stage 6", "Stage 7", "WIP Cleanup", _
                  "Road Test", "Test", "Test Cleanup", "In Bay Inspection", "In Bay Clean Up", "PDI", "PDI", _
                  "Cleanup", "Verify", "Complete", "Pictures", "Remove", "ECD", "Platform Install", "#N/A")
    
    
        Debug.Print InArray("Testar", Vars1)
        Debug.Print InArray("Test", Vars1)
        Debug.Print InArray("In Bay Inspection", Vars1)
        Debug.Print InArray("Out Bay Inspection", Vars1)
    End Sub
    

    Então, onde você tem sua condição, primeira linha na minha resposta, tente isso;

    ...And InArray(Range("N" & RowCounter).Value, Vars1) Then
    

    Espero que isto ajude

    njc

    • 1
  2. JohnSUN
    2022-01-27T01:05:06+08:002022-01-27T01:05:06+08:00

    Outra maneira de contornar o problema é parar de descrever constantes como uma matriz. Descreva-o como

    Const Vars1 As String = "Stage 2" & vbTab & "Stage 3" & vbTab & "Stage 4" & vbTab _
        & "Stage 5" & vbTab & "Stage 6" & vbTab & "Stage 7" & vbTab _
        & "WIP Cleanup" & vbTab & "Road Test" & vbTab & "Test" & vbTab _
        & "Test Cleanup" & vbTab & "In Bay Inspection" & vbTab & "In Bay Clean Up" & vbTab _
        & "PDI" & vbTab & "PDI Cleanup" & vbTab & "Verify" & vbTab & "Complete" & vbTab _
        & "Pictures" & vbTab & "Remove" & vbTab & "ECD" & vbTab & "Platform Install" & vbTab & "#N/A"
    
    

    e use o mesmo InStr(...)que para a coluna F

    • 0

relate perguntas

  • Como usar a função LENGTH do Excel para uma coluna inteira?

  • Matriz do Excel (2 variáveis)

  • como abrir um arquivo de escritório do WSL

  • VBA para renomear planilha com base no nome do arquivo

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 Por que uma conexão de Internet gigabit/s via cabo (coaxial) não oferece velocidades simétricas como fibra? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve