range su excel



  • range su excel
    di orsomiki data: 05/12/2012 20:59:53

    su un foglio excel attraverso namemanager ho definito una area denominata areats
    è costituita da circa 80 righe o più e massimo 6 colonne ( ma non è il punto)
    ebbene
    con Visual Basic dico
    dim areats as range
    set areats =range ("areats")

    i dati sono sempre gli stessi nomi sulle righe e numeri sulle colonne
    areats varia in base al numero righe a volte al numero colonne
    perciò ogni volta devo rinominare areats

    la domanda è : è possibile evitare di ridefinire ogni volta areats e come si fa ?

    questo codice è scritto in maniera corretta

    dim areats as range
    set areats =range ("areats")

    funziona ma mi interessa se è corretto
    Grazie!



  • di Vecchio Frac data: 05/12/2012 21:47:06

    Ma se hai già definito "areats" sul foglio, a che ti serve assegnarlo a una nuova variabile di tipo Range?
    Nel codice puoi utilizzare tranquillamente e direttamente il riferimento ad "areats" che esiste nel foglio, come se fosse (e in effetti lo è) un range qualsiasi: Range("areats"), senza assegnarlo con Set.






  • di orsomiki data: 05/12/2012 22:13:21

    va bene ....
    ma per la re definizione quando l' atreats si espande ( o si contrae) come faccio?
    in automatico si ridefinisce da sola ?
    non penso



  • di Vecchio Frac data: 05/12/2012 22:17:55

    Penso di aver capito...
    Se l'area da nominare parte da A1, col codice appresso definisco "areats" come il range che copre la regione corrente che comprende A1 e si espande finchè non incontra una riga e una colonna vuote.

    ActiveWorkbook.Names.Add Name:="areats", RefersTo:=[A1].CurrentRegion





  • di Vecchio Frac data: 05/12/2012 22:20:00

    Ma comunque: come fa "areats" a espandersi o contrarsi da sola? non sei tu che definisci i nomi nel foglio? considera che le aree si aggiustano da sole anche inserendo una riga o una colonna.





  • di orsomiki data: 06/12/2012 07:11:38

    va bene
    areats è in realtà un estrazione dati da un database che sta a fianco della stessa area e ogni volta cambia di estensione quindi più cha aggiungere io "sovrappongo i dati ma con il codice che mi hai dato penso di aver risolto il problema
    ovviamente ( è una conferma a prova di "frescone che sarei io" )
    che l'area cominci in A1 o in V12 p.e. è indifferente?
    dico bene?
    Grazie
    p.s. non mi chiedere chiarimenti sui meccanismi per i quali dove io lavoro si !fanno queste cose" ... a chiarimento ti basti sapere che il livello di conoscenza di Excel è "tale" che la gente lo "usa" per scrivere le lettere "xchè è comodo"



  • di orsomiki data: 06/12/2012 09:00:46

    provato il codice
    ActiveWorkbook.Names.Add Name:="areats", RefersTo:=[A1].CurrentRegion
    mi da errore sulla virgola dopo "areats"
    e non a accetta : dopo name refersto



  • di Vecchio Frac data: 06/12/2012 10:00:13

    cit. " la gente lo "usa" per scrivere le lettere "xchè è comodo" "
    ---> ROTFL... e Word? ^_^

    cit. " che l'area cominci in A1 o in V12 p.e. è indifferente? "
    ---> il meccanismo è uguale

    cit. " mi da errore sulla virgola dopo "areats" "
    ---> indicami il numero di errore e la sua descrizione. Mi sembra piuttosto strano.





  • di orsomiki data: 06/12/2012 11:43:00

    mi dice
    compile error
    syntax error



  • di Vecchio Frac data: 06/12/2012 13:59:10

    Su che versione di Excel?
    A me funziona correttamente (testato su Excel 2003 e 2007).





  • di orsomiki data: 06/12/2012 14:05:03


    il sistema operativo è
    XP
    e "forse" c'è window 2077 ....



  • di orsomiki data: 06/12/2012 15:49:24

    si scusa volevo dire Window 2007



  • di orsomiki data: 17/12/2012 18:43:01

    se uso il registratore d macro per definire un nome di zona mi ritorna il codice riportato
    ma se provo a inserire un punto dopo R6C24" per inserire currentregion
    mi da errore
    ecco questo è quanto
    ti risulta?
    grazie!
     
    ActiveWorkbook.Names.Add Name:="areadiprova", RefersToR1C1:= _
            "='Daily Manhours Report'!R6C24"
        ActiveWorkbook.Names("areadiprova").Comment = ""



  • di Vecchio Frac data: 18/12/2012 10:08:51

    Questo funzionerà:

    ActiveWorkbook.Names.Add Name:="areadiprova", RefersTo:= ['Daily Manhours Report'!X6].currentregion

    Ma questo no:

    ActiveWorkbook.Names("areadiprova").Comment = ""

    Per impostare o cancellare un commento da un range puoi utilizzare la function che trascrivo qui sotto.
     
    Sub set_comment(r As Range, s As String)
        If Not (r.Comment Is Nothing) Then r.Comment.Delete
        s = Trim(s)
        If s = "" Then Exit Sub
        With [r].AddComment
            .Visible = False
            .Text s
        End With
    End Sub






  • di orsomiki data: 19/12/2012 10:26:49

    va bene grazie
    posso darti qualche dato di ritorno nell'anno nuovo
    a casa uso solo Mac al lavoro no



  • di orsomiki data: 04/01/2013 17:49:59

    ok il codice riportato funziona

    l'altro perdonami ma non lo capisco
    ma avrei un altro bel "quizzone" sempre su range!
     
    ActiveWorkbook.Names.Add Name:="areadiprova", RefersTo:= ['Daily Manhours Report'!X6].currentregion 


  • range su excel
    di orsomiki data: 04/01/2013 18:11:33

    come si fa ad inserire una snapshot
    avendo l'url di uptiki?



  • di Vecchio Frac data: 04/01/2013 18:42:25

    Intendi che non sai cosa fa "set_comment" o come funziona o come fa a funzionare?

    Per inserire un'immagine da una URL, lo vuoi fare via codice o a mano?





  • di orsomiki data: 04/01/2013 18:46:34

    vado su uptiki
    carico l'immagine e poi
    uptiki mi da l'url per il forum che io copio per incollarlo da qualche parte sul forum
    ma
    quando lo inserisco in questo spazio mi da errore perchè NON posso copiare qui un indirizzo web.
    per caricare l'immagine sul forum
    in quale posto devo incollare l'url dell'immagine ?



  • di Vecchio Frac data: 04/01/2013 18:51:42

    Scusa, avevo capito male.
    Avevo inteso che, in un progetto Excel, volessi inserire un'immagine prelevata in automatico da un link :)
    Abbi pazienza, ma l'età avanza... :P

    No, non puoi copiare qui direttamente un'immagine.
    Devi necessariamente salvarla su disco (il Desktop va bene), quindi in una nuova risposta scegliere "allega un file" e caricarlo in questo modo. I file caricati in questo modo sono visibili per 48 ore poi il sistema li cancella.






  • di Vecchio Frac data: 04/01/2013 18:52:51

    Oppure, se è un link pubblico, incolla il link in una nuova risposta (scrivendo h t t p : // altrimenti il sistema rifiuta il link esterno come misura antispam).




  • range su excel
    di orsomiki data: 04/01/2013 18:56:06

    ti allego un file spero tu riesca a vederlo

    ecco usando

    ActiveWorkbook.Names.Add Name:="areadiprova", RefersTo:= ['Daily Manhours Report'!X6].currentregion

    e al posto di usare X6 come inizio range gli dico di usare

    col AA e riga dove vedi il cursore di fianco al Nome Cigognani

    col comando current region mi prende tutto ovvero sia le colonne colorate AA AB AC

    SIA LE COLONNE Z Y X W

    ECCO LA DOMANDA è

    SE LASCIO COSì COM è come faccio a dirgli prendi solo le colonne aa ab ac ( e le righe corrispondenti ovvio)
    p.s. non mi ero accorto che si può allegare una immagine jpeg come file allegato
    scusa


  • range su excel
    di orsomiki data: 04/01/2013 19:05:16

    eventualmente posso allegare direttamente il file in excel?



  • di Vecchio Frac data: 04/01/2013 19:47:52

    Forse è meglio che alleghi il file, magari comprimilo in zip o rar.




  • range su excel
    di orsomiki (utente non iscritto) data: 04/01/2013 20:12:21

    ecco ho allegato il file
    ci troverai del codice scritto in modo artigianale,ridondante, e sicuramente poco elegante ( scritto sui "Module")
    ma funziona e io me lo sono cavato da solo senza l'aiuto se non sporadico di un amico che lavora nel dipartimento IT della società
    cmq se vai nei vari "NAme" cioè le aree che poi diventano range dovrebbe esserti chiaro



  • di Vecchio Frac data: 04/01/2013 20:59:40

    Grazie del file.
    Prima ancora di guardare ti dico da subito "bravo" perchè te la sei cavata da solo con il risultato che volevi.
    Però ti esorto a non fermarti al "ma funziona", bisogna sempre cercare di guardare l'efficienza oltre all'efficacia ^_^
    E se accetterai qualche buon consiglio, anche il tuo stile di programmazione migliorerà :)




  • range su excel
    di orsomiki data: 04/01/2013 23:19:03

    grazie!
    il mio interesse per il codice è teso a usare in modo "non noioso e ripetitivo e quindi palloso"
    l'excel
    mi spiego da "noi" usano excel come macchina da scrivere, come tabellina e fanno le somme con la calcolatrice, come power point, fer fare gli schemi flusso etc.etc.
    e poi miliardi di azioni ripetitive ... un orrore


  • range su excel
    di orsomiki data: 05/01/2013 06:11:08

    scusa dovrei fare una precisazione
    quando hai elaborato il file e dato la risposta
    ti prego di distruggerlo fisicamente poichè fa parte della società presso la quale lavoro e potrei se questo file va in "giro" avere conseguenze pesanti
    Grazie!


  • range su excel
    di orsomiki data: 05/01/2013 08:10:02

    anzi se si d'accordo ti propongo quanto segue
    per favore cancella gli allegati e ti rimando lo stesso file con la stessa struttura ma con i riferimenti (nomi, nomi campi etc.etc.)
    cambiati in toto
    che ne dici?
    Grazie!


  • range su excel
    di orsomiki data: 05/01/2013 13:28:56

    eccomi di nuovo e CHIEDO SCUSA DEL PASTICCIO CHE HO COMBINATO ma avevo messo in rete dati riservati e ero passibile di sanzioni ...
    tornando a noi

    ecco usando

    ActiveWorkbook.Names.Add Name:="areadiprova", RefersTo:= ['Sheet1'!AA12].currentregion riferito al Sheet1
    il comando nomina "areadiprova" le colonne interessate :AA AB AC + Z Y X W con le righe relative
    la domanda è : posso definire "areadiprova" solo le colonne AA AB AC e relative righe?

    mi spiace forse NON riesci a vedere il codice sui "Module" poichè usando PC Mac ho dovuto trattare il file di Excel con Libreoffice
    e non sono sicuro di DOVE mette il codice

    spero di essere stato chiaro
    Grazie!



  • di Vecchio Frac data: 05/01/2013 18:02:28

    Per il problema dell'allegato, tra due giorni il file si cancellerà da solo.




  • range excel
    di orsomiki data: 07/01/2013 12:22:37

    se preferisci ti mando il file excel originale ( con tutti i riferimenti criptati)
    così puoi vedere il codice ....



  • di Vecchio Frac data: 07/01/2013 21:15:20

    Sì, è meglio che fai così. E se puoi in formato Excel 2003 :)
    Cancella tutti i dati e sostituiscili con dati fittizi.
    L'ultimo file postato a me risulta del tutto illeggibile.




  • range su excel
    di orsomiki data: 07/01/2013 22:01:01

    ecco ti ho allegato il file non sono sicuro che sia excel 2003 forse è versione 2007
    cmq prova a vedere se riesci a leggerlo
    Grazie!



  • di Vecchio Frac data: 07/01/2013 23:09:04

    Ecco il file, vedo anche il codice (dovresti indentarlo meglio, così si legge davvero male).
    Ora, qual è il problema? obiettivo e risultato atteso.

    cit. "la domanda è : posso definire "areadiprova" solo le colonne AA AB AC e relative righe?"
    ---> in teoria sì, ma "areadiprova" può essere definito una volta sola. Attualmente si riferisce a ['Sheet1'!bc11].CurrentRegion e in pratica comprende BB16:BE18.




  • range excel
    di orsomiki data: 08/01/2013 09:04:16

    scusa ho sbagliato
    l area di riferimento è areats che inizia alla
    cella AA 12
    ( e sarà sempre lì cioè inizierà sempre lì)
    areats varia in ampiezza cioè numero di righe
    raramente numero di colonne
    se io mi posiziono in AA 12 e definisco il range tramite
    currentregion mi prende anche le colonne Z Y X W
    la domanda è posso sempre con il codice definire solo ( come range areats)
    le colonne AA AB AC e relative righe ?