Sviluppare funzionalita su Microsoft Office con VBA come riempire una cella quando un altra è piena con macro VBA

LoginRegistrati
Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
  • Autore
    Articoli
  • #30244 Risposta

    Claudia Bellea

      Buongiorno,

      avrei bisogno del vs. aiuto per risolvere questo problema, h0 scritto questa macro:

      Sub PROVAPROVA()
      Application.ScreenUpdating = False
      Range("C3:Z122").Select
      Selection.ClearContents
      Dim foglio As String
      If Range("A3") = 0 Then
      Exit Sub
      ElseIf Range("A3") <> "" Then
      foglio = Range("A3").Value 
      Sheets(foglio).Activate
      Range("N11:W13").Select
      Selection.Copy
      Sheets("Calcoli").Select
      Range("AD3").Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      End If
      Dim ur As Long
      Dim rng As Range
      Dim cel As Range
      Application.ScreenUpdating = False (
      Set rng = Range("AD3:AM5")
      For Each cel In rng
      ur = Cells(Rows.Count, 3).End(xlUp).Row
      If cel.Value <> "" Then
      cel.Copy Destination:=Range("c" & ur + 1)
      End If
      Next cel

      La macro in base al valore inserito nel cella A3 apre il foglio corrispondente copia dei valori e li incolla nella colonna C nella prima riga vuota partendo dalla riga 3

      Dopo di che ho aggiunto alla macro questa parte:

      For i = 3 To 122
      If Cells(i, 3) <> "" Then
      Cells(i, 4) = Range("A4")
      Else
      Cells(i, 4) = ""
      End If
      Next i

      in cui gli dico di inserire nella colonna D il valore presente in A4 per ogni riga piena della colonna C

      la macro si ripete in seguenza:

      If Range("A15") = 0 Then
      Exit Sub
      ElseIf Range("A15") <> "" Then
      foglio = Range("A15").Value
      Sheets(foglio).Activate
      Range("N11:W13").Select
      Selection.Copy
      Sheets("Calcoli").Select
      Range("AD3").Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      End If
      Application.ScreenUpdating = False
      Set rng = Range("AD3:AM5")
      For Each cel In rng
      ur = Cells(Rows.Count, 3).End(xlUp).Row
      If cel.Value <> "" Then
      cel.Copy Destination:=Range("c" & ur + 1)
      End If
      Next cel

      fa esattamente quello che fa la macro iniziale, ma prende come riferimento la cella A15 apre il foglio di riferimento e copia i dati presenti sempre nella colonna C a partire dalla prima riga vuota.

      A questo punto anche qui ho inserito:

      For i = Range("D122").End(xlUp).Offset(1, 0).Select To 122
      ActiveCell.Offset(0, -1).Select
      If ActiveCell <> "" Then
      ActiveCell.Offset(0, 1) = Range("A16")
      Else
      Cells(i, 4) = ""
      End If
      Next i

      la macro dovrebbe inserire per ogni riga piena della colonna C partendo dalla prima riga vuota della colonna D il valore presente in A16, però la macro si ferma in questo punto (ActiveCell.Offset(0, 1) = Range("A16")) e non prosegue.

      Ho sicuramente sbagliato qualcosa io, potreste aiutarmi?

      grazie mille

      Claudia

      #30245 Risposta
      alfrimpa
      alfrimpa
      Partecipante
        20 pts

        Allega file di esempio con dati e risultato desiderato inserito a mano.

        #30248 Risposta
        patel
        patel
        Moderatore
          43 pts

          quoto la richiesta di alfrimpa che saluto, ma il modo migliore per evitare questi problemi è il seguente: mai usare SELECT e ACTIVECELL, in fondo alla pagina ci sono 2 corsi per imparare il vba.

          la riga

          For i = Range("D122").End(xlUp).Offset(1, 0).Select To 122

          non ha senso, Range("D122").End(xlUp).Offset(1, 0).Select è una selezione, non un numero, sostituisci select con value

          #30251 Risposta

          Ciao

          allego file di esempio

          grazie mille

           

          Allegati:
          You must be logged in to view attached files.
        LoginRegistrati
        Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
        Rispondi a: come riempire una cella quando un altra è piena con macro VBA
        Gli allegati sono permessi solo ad utenti REGISTRATI
        Le tue informazioni:



        vecchio frac - 2750 risposte

        patel
        patel - 1089 risposte

        albatros54
        albatros54 - 1062 risposte

        Marius44
        Marius44 - 1000 risposte

        Luca73
        Luca73 - 798 risposte