Значение ячейки активного листа возвращается пустым - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь взять значение из своей ячейки activesheet.

ActiveSheet.Range("A" & numColumna).Value

Я пытаюсь взять значение столбца A одновременно с проверкой столбца G значение.

Например. If G3 = "Hi world" And A3 = "true" Then count = count + 1

Весь код здесь:

Dim cell As Range
Dim finalIndex As Integer
Dim letra2 As Single

Dim textoPlano As Integer
Dim svcPoliza As Integer
Dim svcMarcas As Integer
Dim svcDptos As Integer
Dim svcCotizacionesCme As Integer
Dim svcAniosVehiculo As Integer
Dim svcRiesgoVigente As Integer
Dim svcLineasVehiculos As Integer
Dim svcLeeLocalidades As Integer
Dim errorNegocio As Integer
Dim errorSuscripcion As Integer
Dim suscGestionada As Integer
Dim suscRiesgoVigTransc As Integer
Dim suscRiesgoVig As Integer
Dim suscVeiNoAseg As Integer
Dim suscPoliticas As Integer
Dim hoja As Worksheet
Dim ultimaFila As Long
Dim resultado As Worksheet

Set resultado = ActiveWorkbook.Worksheets("Resultados")
Set hoja = ActiveWorkbook.Worksheets(sheet)

ultimaFila = hoja.Cells(hoja.Rows.Count, "G").End(xlUp).Row

Dim numColumna As Long
numColumna = 2

For Each cell In Worksheets(sheet).Range("G2:G" & ultimaFila)

    If InStr(cell.Value, "error1") > 0 Then
        textoPlano = textoPlano + 1
    End If
    If InStr(cell.Value, "error2") > 0 Then
        svcPoliza = svcPoliza + 1
    End If
    If InStr(cell.Value, "error3") > 0 Then
        svcMarcas = svcMarcas + 1
    End If
    If InStr(cell.Value, "error4") > 0 Then
        svcDptos = svcDptos + 1
    End If
    If InStr(cell.Value, "error5") > 0 Then
        svcCotizacionesCme = svcCotizacionesCme + 1
    End If
    If InStr(cell.Value, "error6") > 0 Then
        svcAniosVehiculo = svcAniosVehiculo + 1
    End If
    If InStr(cell.Value, "error7") > 0 Then
        svcRiesgoVigente = svcRiesgoVigente + 1
    End If
    If InStr(cell.Value, "error8") > 0 Then
        svcLineasVehiculos = svcLineasVehiculos + 1
    End If
    If InStr(cell.Value, "error9") > 0 Then
        svcLeeLocalidades = svcLeeLocalidades + 1
    End If
    If (InStr(cell.Value, "error10") > 0) And (ActiveSheet.Cells(1, numColumna).Value = "RO_ERROR_SUSCRIPCION") Then
        suscGestionada = suscGestionada + 1
    End If
    If (InStr(cell.Value, "error11") > 0) And (ActiveSheet.Range("A" & numColumna).Value = "RO_ERROR_SUSCRIPCION") Then
        suscRiesgoVigTransc = suscRiesgoVigTransc + 1
    End If
    If (InStr(cell.Value, "error12") > 0) And (ActiveSheet.Range("A" & numColumna).Value = "RO_ERROR_SUSCRIPCION") Then
        suscRiesgoVig = suscRiesgoVig + 1
    End If
    If (InStr(cell.Value, "error13") > 0) And (ActiveSheet.Range("A" & numColumna).Value = "RO_ERROR_SUSCRIPCION") Then
        suscVeiNoAseg = suscVehiNoAseg + 1
    End If
    If (InStr(cell.Value, "error14") > 0) And (ActiveSheet.Range("A" & numColumna).Value = "RO_ERROR_SUSCRIPCION") Then
        suscPoliticas = suscPoliticas + 1
    End If

    numColumna = numColumna + 1

Next cell

1 Ответ

0 голосов
/ 09 июля 2020
  1. ActiveSheet не обязательно тот, который вам нужен.
  2. Вместо всего этого цикла рассмотрите возможность использования WorksheetFunction.CountIfs, добавляя подстановочные знаки * по мере необходимости:
Dim myRng As Range
Set myRng = Worksheets(sheet).Range("G2:G" & ultimaFila)

Dim anotherRng as Range
Set anotherRng = Worksheets(sheet).Range("A2:A" & ultimaFila)

textoPlano = WorksheetFunction.CountIfs(myRng, "*error1*")
svcPoliza = WorksheetFunction.CountIfs(myRng, "*error2*")
...
suscPoliticas = WorksheetFunction.CountIfs(myRng, "*error14*", anotherRng, "RO_ERROR_SUSCRIPCION")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...