+ Rispondi al Thread
Pagina 2 di 2 primaprima 12
Visualizzazione dei risultati da 11 a 18 su 18

Discussione: Contare righe

  1. #11
    firstcode non è in linea Novello
    Post
    11
    in questi giorni ho continuato a provare e riprovare ma non riesco a fare funzionare la macro, e io che all'inizio pensavo fosse una cosa relativamente semplice ...

    questa volta c'è un errore nel blocco
    codice:
       Set rFind =  Range("A:A").Find(What:=oSap, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
             :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
             False, SearchFormat:=False)
        If not rFind is Nothing then '... (esegue le operazioni solo se Find ha successo)
            lRighe=1
            Do While rFind=rFind.Offset(lRighe,0)
    in quanto il debug mi restituisce : "errore di runtime 13 tipo non supportato"
    non capisco da cosa dipenda, perchè qui abbiamo solo sostituito Cells con Range ma non mi pare che debbano essere dichiarate o modificate delle variabili e nell colonna A non ci sono date

  2. #12
    L'avatar di dragone bianco
    dragone bianco non è in linea Moderatore Globale
    Luogo
    Aosta
    Post
    7,697
    Ciao

    Su quale riga ti da errore?

    Sul Set rFind
    Sull IF not rFind is Nothing then

    Dove?

    Vedo che c'è anche in ciclo di LOOP

    Ciao

  3. #13
    firstcode non è in linea Novello
    Post
    11
    in questo blocco

    codice:
     Set rFind =  Range("A:A").Find(What:=oSap, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
             :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
             False, SearchFormat:=False)
    procedendo con l'F8 me lo seleziona in giallo e il click successivo mi dà l'errore

  4. #14
    L'avatar di dragone bianco
    dragone bianco non è in linea Moderatore Globale
    Luogo
    Aosta
    Post
    7,697
    Ciao

    Ti dico cosa leggo
    La ricerca è finalizzata al primo dato trovato
    Setti la rFind (variabile di tipo Range) con l'esito della ricerca

    la Ricerca Avviene nella Colonna A (di un foglio non definito) - Range("A:A")
    Cerchi nel seguente modo:
    • What:=oSap - deve contenere la striga contenuta nella variabile di testo)
    • After:=ActiveCell - Cerca dopo la cella attiva
    • LookIn:=xlFormulas - Cerca nelle Formule della cella (lookin:=xlValues per cercare nei valori della cella)
    • LookAt:=xlPart - non confronta l'intero contenuto della cella
    • SearchOrder:=xlByRows - fa una ricerca per riga
    • SearchDirection:=xlNext - Specifica la direzione di ricerca (successiva all'intervallo)
    • MatchCase:= False - Ricerca parole sia maiuscole che minuscole
    • SearchFormat:=False - Non Specifici il formato di ricerca.

    Errori possibili sono:
    se sei in un modulo non specifici il foglio su cui cercare
    la variabile oSap potrebbe contenere valori Nulli
    Ometterei tutte quelle voci non necessarie, a parte What: tutte le altre sono facoltative

    Ciao

  5. #15
    L'avatar di Zer0Kelvin
    Zer0Kelvin non è in linea Scolaretto
    Luogo
    Teramo - provincia
    Post
    266
    Ciao a tutti e buon anno...
    L'errore potrebbe essere dovuto alla vaiabile oSap, ma non sappiamo cosa contiene.
    Forse sarebbe meglio allegare un file coerente con quello che usi, altrimenti potrebbe volerci parecchio per venirne a capo.

    PS: è meglio postare sempre tutto il codice, e non solo poche righe; l'errore potrebbe essere altrove.
    __________________________
    [Excel 2010]
    -Condividere la conoscenza aumenta la ricchezza di tutti. (Z0°K)
    -Dai ad un uomo un e pesce lo avrai sfamato per un giorno; insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
    -Il sonno della ragione genera mostri. (Francisco Goya)

  6. #16
    firstcode non è in linea Novello
    Post
    11
    riprendo un attimo quanto detto da patel45
    ancora non funziona ma grazie per la risposta perchè mi ha fatto ragionare su una questione: all'inizio dichiaro la variabile oSap come Range e le attribuisco un "valore-oggetto", non so se la definizione sia corretta ma intendo dire che attraverso questa dichiarazione la variabile diventa la cella D1, non anche il suo contenuto.
    Così, dopo che attivo il foglio per far partire la ricerca, il metodo "Find(What:=oSap)" altro non fa che ricercare la cella D1, e infatti scorrendo la routine mi si seleziona quella cella e poi parte un loop infinito.
    Forse mi sbaglio io ma l'errore mi sembra questo e credo che per risolverlo io debba fare in modo di attribuire a oSap un valore di String e non di Range (del contenuto della cella e non della cella stessa); ho provato quindi a dichiarare "Dim oSap as String", ma restituisce un altro errore (necessario oggetto per la riga "Set oSap = cells (1, 4)"); ho provato anche "Dim oSap as Variant", giusto per provarle tutte, ma a quel punto rimane selezionata una cella a caso, non va nemmeno in D1.

    anche se tutte le altre volte (mi sembra) che ho utilizzato il VBA la variabile cella restituiva il contenuto e non la cella stessa, la mia interpretazione è corretta?

    appena riesco allego un esempio di quello che sto cercando di fare

  7. #17
    firstcode non è in linea Novello
    Post
    11
    provo ad allegare un'immagine di quel che dovrei effettivamente realizzare.

    premetto che si tratta di una parte di una macro più ampia già funzionante, per questo non sto a scrivere tutto il codice. Di fatto partendo dal Foglio1 ogni campo (A5, B5 etc) viene estratto e copiato su un foglio Word al proprio posto, a mo' di lettera.
    A fine della pagina Word dovrei copiare una tabella, che si trova nel foglio 2. Come potete vedere la tabella è divisa da alcune righe gialle a seconda della chiave di riferimento che lega il Foglio1 al Foglio2.

    dunque, partendo per esempio dalla cella A5 del Foglio1 dovrei fare una ricerca nel medesimo campo sul Foglio2 e trovare il primo valore disponibile, che nell'esempio è la cella A24 (i valori corrispondenti sono nelle celle azzurre). A questo punto dovrei contare il numero di righe con chiave di riferimento 302470, spostarmi verso destra e selezionare il range "B24:E27" (qui color mattone) per poi copiarlo e incollarlo come tabella sul foglio Word.
    dopodichè si passa alla riga successiva del Foglio1 e avanti così con un ciclo, fino ad esaurimento righe.
    si noti anche che nel Foglio2 possono esserci chiavi con riga singola, la qual cosa -se non ricordo male- potrebbe creare qualche problema.


    PS. ma come si fa ad allegare un file .jpg?

  8. #18
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    13,978
    Blogs
    5
    Usa un sito che te lo fa fare gratuitamente e posta il link
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

+ Rispondi al Thread
Pagina 2 di 2 primaprima 12

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi