Visualizzazione dei risultati da 1 a 6 su 6

Discussione: metodo range

  1. #1

    metodo range

    ...ciao a tutti è da poco che ho iniziato lo studio di VB6, e sto cercando di usare il metodo range con due variabili, purtroppo senza successo; per motivi che magari se utili spieghero non posso usare "cell " o almeno credo.

    codice:
    Sub b()
    Dim rig As Variant
    Dim col As Variant
    col = a
    rig = 1
    Range("A1").Select  
    
    'Range(Chr(34) & col & rig & Chr(34)).Select  'queste sono le prove che ho fatto e che non 'funzionano
    
    'Range(col & rig).Select  'queste sono le prove che ho fatto e che non funzionano
    
    End Sub

  2. #2
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Sinceramente sarei proprio curioso di sapere perchè non puoi usare il Cells...

    In ogni caso è fattibile quello che chiedi ed il problema, nel tuo caso, sta nel fatto che non concateni correttamente le variabili che inoltre non hanno il valore che ti aspetti.

    In sostanza, scrivendo:

    codice:
    col = a
    col sarà vuota e non uguale ad "A" come ti aspetteresti.

    Se vuoi porre rimedio devi scrivere:

    codice:
    col = "A"
    e poi concatenare così:

    codice:
    Range(col & rig).Select
    Giusto per completezza, non dichiarare le variabili As Variant, a meno che non sia esplicitamente necessario... usa i tipi adatti all'uso per le quali vengono richieste:

    codice:
    Dim rig As String
    Dim col As Integer
    Boolean

  3. #3
    ciao, scusa se approfitto spero di non impegnare troppo tempo
    questo è il codice dove ho applicato la risposta , eppure da solo
    funziona in questo contesto mi dice errore del metodo range
    . questo codice serve per selezionare in una macro la cella a cui corrisponde
    quello che ho scritto in "testValue"; che poi nella macro definitiva sarà una variabile

    codice:
        
     Sub FindData_in_più_fogli_in_lavorazione()
    
         ' This Sub prompts you for a value and searches each worksheet
         ' that is selected in group mode.
         ' WARNING: When this macro ends, the workbook will no longer be
         ' in group mode.
         
         
         'WARNING per avere la ricerca per voce esatta oppure per una parte aggiungere o togliere LookAt:=xlWhole LookAt:=xlPart
         'WARNING per avere la ricerca case sensitive MatchCase=true
    
    Dim lunghezza As Byte
    Dim separatore As Byte
    Dim col As Variant
    Dim rig As Long
    Dim indirizzo As Variant
    Dim testValue As Variant
    Dim x As Variant
    Dim FoundCell As Variant
    Dim response As Variant
         testValue = InputBox("Enter the value to search for : ")
         For Each x In ActiveWindow.SelectedSheets
             x.Select
             Set FoundCell = ActiveSheet.Cells.Find(testValue, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
    
             If FoundCell Is Nothing Then
                 MsgBox "The word was not found"
             Else
                 
                 indirizzo = FoundCell.Address
                 indirizzo = Trim(indirizzo)
                indirizzo = Replace(indirizzo, Chr(36), "", 1, 1)
                separatore = InStr(indirizzo, Chr(36))
                lunghezza = Len(indirizzo)
                col = Left(indirizzo, (separatore - 1))
                rig = Right(indirizzo, (lunghezza - separatore))
    LookAgain:
                     Set FoundCell = _
                         ActiveSheet.Cells.FindNext(After:=ActiveCell)
                     GoTo NextSheet
             End If
    NextSheet:
            Next x
            MsgBox "Search is complete ....."
            
           Range(col & rig).Select
            
        End Sub

  4. #4
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Perchè non metti un punto di interruzione e vedi in Debug quanto valgono Col e Rig, al momento di effettuare la chiamata?

    Poi non hai risposto alla domanda sul perchè non puoi utilizzare Cells, e quindi il riferimento riga-colonna numerici.

    Boolean

  5. #5
    grazie utilizando meglio il debug e con il tuo aiuto
    ora funziona ; nel mio codice non posso usare Cells, e quindi il riferimento riga-colonna numerici.
    perchè l'istruzione

    indirizzo = FoundCell.Address

    mi lascia nella variabile indirizzo un valore come:
    indirizzo="$C$16"
    e quindi posso solo lavorare nella fattispecie con la lettera "C"

    ciao e Grazie

  6. #6
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Originariamente inviato da ilkamalo
    nel mio codice non posso usare Cells, e quindi il riferimento riga-colonna numerici.
    perchè l'istruzione

    indirizzo = FoundCell.Address

    mi lascia nella variabile indirizzo un valore come:
    indirizzo="$C$16"
    e quindi posso solo lavorare nella fattispecie con la lettera "C"
    Beh, forse avresti potuto consultare sulla guida le proprietà dell'oggetto Range

    FoundCell, anche se nel tuo codice lo dichiari come Variant, in realtà è un oggetto Range e come tale dispone delle proprietà Row e Column che restituiscono rispettivamente la riga e la colonna cui si trova.
    Utilizzando queste proprietà, al posto della Address, puoi tranquillamente usare riga e colonna per selezionare il range di tuo interesse.

    Boolean

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.