RUN-TIME ‘9’: INDICE NON INCLUSO NELL’INTERVALLO

Anonimo
2013-08-31T16:54:49+00:00

Ciao a tutti. Grazie alla community il 28/07/2013 sono riuscito a risolvere un problema nonostante fosse completamente sprovveduto, e la macro ha funzionato a meraviglia. Oggi, mi ha restituito l’errore: RUN-TIME ‘9’: INDICE NON INCLUSO NELL’INTERVALLO perché ho inserito nella colonna “e” di Sheets("FileIncassi") ragioni sociali tipo (MARE E MONTI SPA) al posto delle descrizioni dei bonifici tipo (B.ORD: UNCRITMM ORD: MARE E MONTI SPA NOTPROVIDED INTROITO RIF: SEP DOM EUR 000 00 FATTURA N. 0000000000). Chi può aiutarmi, sapendo che non ho mai studiato il linguaggio VBA?

ReDim result(1 To UBound(data), 1 To 6)

            For i = LBound(data) To UBound(data)

                For ii = LBound(strRagioniSociali) To UBound(strRagioniSociali)

                    z = InStr(1, data(i, 4), strRagioniSociali(ii), 1)

                    If z > 0 Then

                        iii = iii + 1: result(iii, 1) = strRagioniSociali(ii) ç=================================

                        result(iii, 2) = Mid(data(i, 4), z + Len(strRagioniSociali(ii)) + 1, 0)

                        result(iii, 3) = data(i, 2): result(iii, 4) = data(i, 1): result(iii, 5) = data(i, 3): result(iii, 6) = data(i, 4)

                    End If

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2013-09-02T12:42:14+00:00

...

If z > 0 Then

                        iii = iii + 1: result(iii, 1) = strRagioniSociali(ii)               ç====================

                        result(iii, 2) = Mid(data(i, 4), z + Len(strRagioniSociali(ii)) + 1, 0)

                        result(iii, 3) = data(i, 2): result(iii, 4) = data(i, 1): result(iii, 5) = data(i, 3): result(iii, 6) = data(i, 4)

Exit For

                    End If

                Next

            Next

...

Ciao,

verificato che l'anagrafica esiste, copia i dati in result e poi penso dovrebbe uscire dal ciclo FOR/NEXT. Aggiungi al tuo codice l'istruzione evidenziata.

Andrea.

La risposta è stata utile?

0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-09-03T18:26:45+00:00

    Non ho parole: sei grande! Ha funzionato a meraviglia e ha restituito i dati ricercati. Grazie di cuore. Imed.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-08-31T18:10:41+00:00

    Grazie, Andrea!

    Sub CercaIncassi()

            Dim strRagioniSociali() As String, data() As Variant, result() As Variant, flag As Boolean

            Dim i As Long, ii As Integer, iii As Integer, LastR As Long, z As Integer

            Dim wsRagioniSociali As Worksheet, wsData As Worksheet

            Dim wsProbabiliCorrispondenze As Worksheet, ws As Worksheet

            Set wsRagioniSociali = Sheets("RagioniSociali")

            Set wsData = Sheets("FileIncassi")

            For Each ws In Sheets

                If ws.Name = "ProbabiliCorrispondenze" Then: flag = True: Exit For

            Next

            If flag = False Then

                Sheets.Add after:=Sheets(Sheets.Count): ActiveSheet.Name = "ProbabiliCorrispondenze"

            End If

            Set wsProbabiliCorrispondenze = Sheets("ProbabiliCorrispondenze")

            With wsRagioniSociali

                LastR = .Range("a65536").End(xlUp).Row: ReDim strRagioniSociali(1 To LastR)

                For i = 1 To LastR: strRagioniSociali(i) = .Cells(i, "a").Value: Next

                End With

                With wsData

                    LastR = .Range("e65536").End(xlUp).Row: ReDim data(1 To LastR, 1 To 4)

                    For i = 1 To LastR

                        data(i, 1) = .Cells(i, "c").Value: data(i, 2) = .Cells(i, "b").Value: data(i, 3) = .Cells(i, "d").Value

                        data(i, 4) = .Cells(i, "e").Value

                    Next

                End With

                ReDim result(1 To UBound(data), 1 To 6)

                For i = LBound(data) To UBound(data)

                    For ii = LBound(strRagioniSociali) To UBound(strRagioniSociali)

                        z = InStr(1, data(i, 4), strRagioniSociali(ii), 1)

                        If z > 0 Then

                            iii = iii + 1: result(iii, 1) = strRagioniSociali(ii)               ç====================

                            result(iii, 2) = Mid(data(i, 4), z + Len(strRagioniSociali(ii)) + 1, 0)

                            result(iii, 3) = data(i, 2): result(iii, 4) = data(i, 1): result(iii, 5) = data(i, 3): result(iii, 6) = data(i, 4)

                        End If

                    Next

                Next

                MsgBox "Individuate " & iii & " probabili corrispondenze. Confrontare le Ragioni Sociali della colonna 'A' con quelle della colonna 'E'. Buona fortuna!"

                With wsProbabiliCorrispondenze

                    .Range("a:q").Clear

                    With .Range("a1").Resize(UBound(result, 1), UBound(result, 2))

                        .Value = result

                        .Sort key1:=wsProbabiliCorrispondenze.Range("a1"), order1:=xlAscending

                    End With

                End With

                Set wsRagioniSociali = Nothing: Set wsData = Nothing: Set wsProbabiliCorrispondenze = Nothing

                Erase strRagioniSociali: Erase data: Erase result

            End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-08-31T17:41:06+00:00

    Ciao a tutti. Grazie alla community il 28/07/2013 sono riuscito a risolvere un problema nonostante fosse completamente sprovveduto, e la macro ha funzionato a meraviglia. Oggi, mi ha restituito l’errore: RUN-TIME ‘9’: INDICE NON INCLUSO NELL’INTERVALLO perché ho inserito nella colonna “e” di Sheets("FileIncassi") ragioni sociali tipo (MARE E MONTI SPA) al posto delle descrizioni dei bonifici tipo (B.ORD: UNCRITMM ORD: MARE E MONTI SPA NOTPROVIDED INTROITO RIF: SEP DOM EUR 000 00 FATTURA N. 0000000000). Chi può aiutarmi, sapendo che non ho mai studiato il linguaggio VBA?

    ReDim result(1 To UBound(data), 1 To 6)

                For i = LBound(data) To UBound(data)

                    For ii = LBound(strRagioniSociali) To UBound(strRagioniSociali)

                        z = InStr(1, data(i, 4), strRagioniSociali(ii), 1)

                        If z > 0 Then

                            iii = iii + 1: result(iii, 1) = strRagioniSociali(ii) ç=================================

                            result(iii, 2) = Mid(data(i, 4), z + Len(strRagioniSociali(ii)) + 1, 0)

                            result(iii, 3) = data(i, 2): result(iii, 4) = data(i, 1): result(iii, 5) = data(i, 3): result(iii, 6) = data(i, 4)

                        End If

    Ciao,

    per favore, fammi vedere come assegni strRagioniSociali e data.

    Andrea.

    La risposta è stata utile?

    0 commenti Nessun commento