Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] With End With annidati

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Excel] With End With annidati

Postdi mpsinf » 30/03/13 19:59

Ho questo pezzo di codice racchiuso tra with end with nel quale viene richiamata un'altra macro

Codice: Seleziona tutto
 Set wsa = Sheets(Sheets(nfg).Name) ' per rimanere sul foglio intanto che carica i dati nei vari fogli
 With wsa
           
  For A = 10 To 2 Step -1     
   If .Cells(A, "E").Value <> "" And .Cells(A, "E").Value > .Range("L1").Value Then
     .Range("D" & A & ":H" & A).Copy 'brutto codice a vedersi
     .Range("K1:O1").Insert Shift:=xlDown
     ' .Range("K1:O1").Value = .Range("D" & A & ":H" & A).Copy 'brutto codice a vedersi
   End If
   
   If .Cells(A, "D").Value <> "" Then
    myHero = .Cells(A, "D").Value
    Call A02_UTENTI(myHero)
   End If
 Next A
 End With


La macro che richiama contiente altro with end with

Codice: Seleziona tutto
Sub A02_UTENTI(myHero) ' elenca gli utenti e da quando sono iscritti
Dim IE2 As Object

Set ut = Worksheets("Utenti")
With ut
' saltato righe del codice troppo lungo
 For Each myVar In TagColl
    If myVar.innertext <> "" Or MyFound Then
      Split0 = Split(myVar.innertext, Chr(10))
      .Cells(Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Row, "A").Value = Trim(myHero)
      .Cells(Cells(Rows.Count, "A").End(xlUp).Offset(0, 1).Row, "B").Value = Mid(Split0(1), 1, InStr(1, Split0(1), ".")) ' nome utente
      .Range("C:C").NumberFormat = "dd/mm/yyyy"
      .Cells(Cells(Rows.Count, "A").End(xlUp).Offset(0, 2).Row, "C").Value = CDate(Mid(Split0(2), 14, 10)) ' iscritto dal...
      Exit For
    Else
      MyFound = True
    End If
  Next myVar
     On Error GoTo 0

 IE2.Quit
 Set IE2 = Nothing

End If
End With
End Sub


Volevo sapere se in questo caso il 2° with viene accettato o tiene quello precedente ? e quando la macro torna alla macro precedente mantiene l'ultimo with ? Spero di essere stato abbastanza chiaro altrimenti istruitemi sul with annidato e con richiamo e ritorno ad altra macro
XP + Excel 2003 Ita
W7 + Excel 2007 Ita
mpsinf
Utente Senior
 
Post: 168
Iscritto il: 03/09/03 18:33

Sponsor
 

Re: [Excel] With End With annidati

Postdi Anthony47 » 31/03/13 01:22

La macro chiamata non eredita le impostazioni di With della chiamante, ne' modifica l' ambiente della chiamante. Insomma ognuno si tiene il suo With.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] With End With annidati

Postdi mpsinf » 01/04/13 08:28

Ma alloro pechè se mi trovo sul foglio "Utenti" mi inserisce i dati correttamente, mentre se sono su un altro foglio i dati nel foglio Utenti non vengono inseriti ?
XP + Excel 2003 Ita
W7 + Excel 2007 Ita
mpsinf
Utente Senior
 
Post: 168
Iscritto il: 03/09/03 18:33

Re: [Excel] With End With annidati

Postdi mpsinf » 01/04/13 09:37

E' possibile che sia perchè abbandona un ciclo With per poi rientrarci dalla seconda macro quando è terminata ?
XP + Excel 2003 Ita
W7 + Excel 2007 Ita
mpsinf
Utente Senior
 
Post: 168
Iscritto il: 03/09/03 18:33

Re: [Excel] With End With annidati

Postdi Flash30005 » 01/04/13 10:02

Se hai delle vaiabili in una macro (e nell'altra) e passi da una macro all'altra
devi dichiarare pubbliche queste variabili
altrimenti perdi il valore in esse contenute

Per i fogli bisognerebbe sapere cosa fai con questo codice
Sheets(Sheets(nfg).Name)
Forse ti converrebbe rendere attivo il foglio di lavoro di volta in volta

ciao

EDIT ore 11:15
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel] With End With annidati

Postdi scossa » 01/04/13 11:33

Flash30005 ha scritto:Se hai delle vaiabili in una macro (e nell'altra) e passi da una macro all'altra
devi dichiarare pubbliche queste variabili
altrimenti perdi il valore in esse contenute


Caio Flash,

??? sinceramente non capisco il significato di quanto sopra, puoi spiegare meglio cosa intendi dire?
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 424
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: [Excel] With End With annidati

Postdi ricky53 » 01/04/13 17:44

Ciao,
premesso che quanto già scritto da Anthony sono concetti che rimangono applicabili sempre e che, come scritto da Flash, una variabile per essere utilizzabile in due macro, non perdendo i valori acquisiti, deve essere definita "Public" o essere passata come parametro nella macro chiamata (vedi la tua variabile "myHero" passata alla macro "A02_UTENTI") io per cercare di arrivare ad una soluzione e per capire bene ritengo:
che occorra avere il resto del tuo codice in modo da riscontrare cosa vorresti fare con le tue istruzioni e ... sapendo cosa vuoi fare si potrà aiutarti a modificare il codice.

Puoi, cortesemente, riepilogare cosa vorresti effettivamente fare.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] With End With annidati

Postdi Anthony47 » 01/04/13 23:44

Credo che il commento di Flash sia di tipo generico, d' altra parte i tronconi di codice pubblicati da mpsinf aprono tutta una serie di ipotesi. Io invece (forse perche' credo di sapere cosa c' e' oltre quegli spezzoni) ho in mente un' altra ipotesi...
@mpsinf: Parli della macro A02_UTENTI, immagino.
E dove vengono inseriti i dati, o che tipo di problema si manifesta?
E' una macro che si attiva "On time"? Il problema ce l' hai quando sei su un "foglio" diverso da Utenti o quando sei su un "file" diverso da quello che contiene Utenti?

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] With End With annidati":


Chi c’è in linea

Visitano il forum: rogermo e 9 ospiti