Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Office suite

Notices

Rispondi
 
Strumenti discussione
Vecchio 03-05-2012, 16.12.36   #1
perla0279
Newbie
 
Registrato: 03-05-2012
Messaggi: 1
perla0279 promette bene
Ciclo For su un foglio diverso da quello attivo

Ciao
ho un problema con una macro che stò cercando di finire.
Praticamente dovrei posizionarmi sul foglio attivo corrente, ciclare su determinate colonne per riga (e fin qui tutto bene)
per ogni riga dovrei salvarmi il valore, ricercare il valore su un altro foglio exel al range A1:A999. A questo punto dovrei prendermi il valore B1 e confrontarlo con quello del ciclo precedente.
Se la cella ha il valore vuoto vorrei uscire dal 2* ciclo e proseguire con il 1* ciclo.

Vi posto il codice inserendo il maiuscolo le parti che non riesco a completare.


Windows(oldfile).Activate
'Sheets(foglioatt).Activate
Worksheets(foglioatt).Activate

Dim myVal As String
Dim myVal2 As String
'legge il primo valore
myVal = Range("d1").Value


Set D = Worksheets("Base")

'inizia il ciclo dalla riga 1 all'ultima della colonna A
For r = 3 To Range("e78").End(xlUp).Row

Range("e" & r).Select
ActiveCell.Interior.ColorIndex = 3 'rosso
myVal2 = Range("a" & r).Value

********** PARTE DA FINIRE *************************
QUI DOVREI CICLARE SU UN ALTRO FOGLIO CHE SI CHIAMA "BASE"
For g = 2 To Range("a9999").End(xlUp).Row

CONFRONTO I VALORI DEL 2* FOGLIO CON QUELLI DEL PRIMO
If Range("a" & g).Value = myVal2 Then
SE TROVO IL VALORE VERIFICO SE B1 DEL PRIMO FOGLIO è UGUALE A QUESTO (B1 LO SALVO IN UNA VARIABILE)

Else
If Range("a" & g).Value = "" Then
SE TROVO VUOTO FOTTEI USCIRE SOLO DAL CICLO FOR G MA PROSEGUIRE CON FOR R
End If

End If



Next g



Next r

Range("E1:E78").Interior.ColorIndex = 2 'bianco


Attendo un aiutino da chi ne capisce più di me :-) io qui mi sono arenata e non riesco a proseguire.
grazie mille
perla0279 non è collegato   Rispondi citando
Vecchio 03-05-2012, 23.27.50   #2
Zer0Kelvin
Guest
 
Messaggi: n/a
Smile Rif: Ciclo For su un foglio diverso da quello attivo

Ciao Perla e benvenuta!
Per il momento ho potuto scrivere questo:
Codice:
Sub zzz()
Dim myVal As String
Dim myVal2 As String
Dim Sh1 As Worksheet, Sh2 As Worksheet
    Set Sh1 = ActiveSheet 'Sh1 adesso punta al foglio corrente
    Set Sh2 = Worksheets("Base") 'Sh2 punta al foglio di nome Base
    myVal = Range("d1").Value 'legge il primo valore 'più avanti parli invece di cella B1, è questa?
    With Sh1 '<== i riferimenti che iniziano col punto sono relativi a questo foglio
        For r = 3 To .Range("e78").End(xlUp).Row
            .Cells(r, 5).Interior.ColorIndex = 3 'Range("e" & r)
            myVal2 = .Cells(r, 1) 'Range("a" & r).Value
            For g = 2 To Sh2.Range("a9999").End(xlUp).Row  '<==Sh2 punta al foglio di nome Base
                'CONFRONTO I VALORI DEL 2* FOGLIO CON QUELLI DEL PRIMO
                If Sh2.Cells(g, 1) = myVal2 Then 'If Range("a" & g).Value = myVal2 Then
                '    SE TROVO IL VALORE VERIFICO SE B1 DEL PRIMO FOGLIO è UGUALE A QUESTO (B1 LO SALVO IN UNA VARIABILE) 
                ElseIf Sh2.Cells(g, 1) = "" Then ' If Range("a" & g).Value = "" Then
                    Exit For 'SE TROVO VUOTO FOTTEI USCIRE SOLO DAL CICLO FOR G MA PROSEGUIRE CON FOR R
                End If
            Next g
        Next r
        Range("E1:E78").Interior.ColorIndex = 2 'bianco
    End With ' Sh1
End Sub
In pratica ci sarebbero alcuni punti da chiarire:
Quota:
'inizia il ciclo dalla riga 1 all'ultima della colonna A
For r = 3 To Range("e78").End(xlUp).Row
il ciclo comincia dalla riga 3 e calcola le righe nella colonna "E", perchè?
Quota:
If Range("a" & g).Value = myVal2 Then
SE TROVO IL VALORE VERIFICO SE B1 DEL PRIMO FOGLIO è UGUALE A QUESTO (B1 LO SALVO IN UNA VARIABILE)
Il valore in "B1" è fisso? perchè vuoi usare una variabile?
Parli di cella B1 ma nel codice assegni D1 alla prima variabile, sono la stessa cella?
Il confronto lo puoi includere nella condizione della stessa if
Codice:
If Sh2.Cells(g, 1) = myVal2 AND .Range("B1")= myVal2 Then ...
Ora un paio di spiegazioni:
-usare il metodo Select e fare riferimento ad Activecell è un buon sistema per sbagliare! questo è il metodo usato dal registratore di macro, ma per un essere umano è inutile; fai riferimento direttamente al range.
-nel codice ho usato la proprietà Cells che è particolarmente comoda nei cicli o se devo compiere operazioni diverse a partire da una certa cella.
Al contrario della notazione A1 i due numeri fra parentesi sono Cells(riga,colonna)
-quando devi fare riferimenti a celle in fogli diversi usa le variabili
Codice:
Sh1.Range("A1") ' cella A1 di activesheet
Sh2.Range("A1") ' cella A1 del foglio "Base"
Spero di essere stato chiaro.
Dovresti riuscire a finire da sola, ma se hai problemi...
  Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
Quelli che... Trinity Chiacchiere in libertà 117 09-03-2005 02.03.43
Problemi col CICLO DEL SISTEMA ilcielo Windows 7/Vista/XP/ 2003 3 05-12-2004 14.04.39
Ancoa VBA in Excel, creare Macro estrazione dati da un foglio Gabry Programmazione 6 16-05-2004 15.19.03
Foglio Excel Skipper Office suite 8 21-04-2004 12.52.03
Riasumere dati in unico foglio in Excel Gabry Software applicativo 6 21-02-2004 01.19.35

Orario GMT +2. Ora sono le: 23.01.59.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.