Condividi tramite

Con VBA scrivere valore della sottrazione di valori provenienti da un altro foglio

Anonimo
2012-12-14T11:40:30+00:00

Ho dei valori elencati in diversi fogli, con un macro vorrei compilare un foglio di riepilogo.

Cerco di inserire il valore di una sottrazione in una cella, ma non riesco.

Ho provato

Dim Dest as Range

Dim rng as Range

...

Dest.Value = rng.Value - rng.Offset(0, 1).Value

che provoca "Errore di run-time 204

Oppure

...

s = "=SUM(R" & rng.Row & "C" & rng.Column & ", - " & "R" & rng.Row & "C" & rng.Offset(0, 1).Column & ")"

Dest.Value= Evaluate(s)

che restituisce "Errore 2015" come valore in Dest.

Mi aiutate per favore?

Grazie

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2012-12-14T15:10:04+00:00

    Grazie Mauro, ma io vorrei scrivere il risultato in una cella di un foglio diverso da quello a cui appartengono i valori da sottrarre:

    <cut>

    A1-A2 del Foglio1 e il risultato nella cella A1 del Foglio2:

    Public Sub m()

        Dim sh1 As Worksheet

        Dim sh2 As Worksheet

        Set sh1 = ThisWorkbook.Worksheets("Foglio1")

        Set sh2 = ThisWorkbook.Worksheets("Foglio2")

        With sh1

             sh2.Range("A1").Value = .Range("A1").Value - .Range("A2").Value

         End With

        Set sh2 = Nothing

        Set sh1 = Nothing

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2012-12-14T16:25:48+00:00

    grazie, funziona perfettamente! :-)

    se non è troppo disturbo, mi potresti spiegare perché il codice che usavo io dava errore di runtime una volta arrivato a "Dest.Value = rng.Value - rng.Offset(0, 1).Value"?

    Vedo solo una parte del codice e non ho il file. Diventa difficile rispondere.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2012-12-14T16:11:49+00:00

    grazie, funziona perfettamente! :-)

    se non è troppo disturbo, mi potresti spiegare perché il codice che usavo io dava errore di runtime una volta arrivato a "Dest.Value = rng.Value - rng.Offset(0, 1).Value"?

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2012-12-14T14:56:38+00:00

    Grazie Mauro, ma io vorrei scrivere il risultato in una cella di un foglio diverso da quello a cui appartengono i valori da sottrarre:

    un esempio di codice più completo potrebbe essere

    Set Dest = Sheets("Riepilogo").Range("A1")

    For count = 1 to maxSheet-1

    Set sh = Sheets(count)

    For Each rng In sh.Range("A14:A32")

    Dest.Value = rng.Value - rng.Offset(0, 1).Value

    Set Dest = Dest.Offset(1, 0)

    Next rng

    Next

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2012-12-14T14:32:06+00:00

    Ho dei valori elencati in diversi fogli, con un macro vorrei compilare un foglio di riepilogo.

    Cerco di inserire il valore di una sottrazione in una cella, ma non riesco.

    <cut>

    Mi aiutate per favore?

    Grazie

    Questo funziona (fa riferimento alle cella A1 e A2 del Foglio1):

    Public Sub m()

        Dim s As String

        Dim sh As Worksheet

        Set sh = ThisWorkbook.Worksheets("Foglio1")

        With sh

            s = "=SUM(" & .Name & "!A" & 1 & ",-A" & 2 & ")"

            MsgBox CDbl(Evaluate(s))

            MsgBox (.Range("A1").Value - .Range("A2").Value)

        End With

        Set sh = Nothing

    End Sub

    Dalla tua macro non si capisce cosa sono e a cosa fanno riferimento Dest e rng.

    La risposta è stata utile?

    0 commenti Nessun commento