Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

problema con input box e variabile in somma

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

problema con input box e variabile in somma

Postdi sandrin81a » 14/07/13 05:44

Ciao a tutti,

avrei un problemino con la macro qui sotto..
vorrei aprire un file, formattarlo come piace a me e poi sommare a due colonne due variabili, copiare il risultato sulle colonne di origine, e salvare il file…

il problema è che vorrei utilizzare inputbox per immettere le due variabili, ma sembra che excel non le riconosca come numeri, infatti il risultato della somma è un errore..
ho cercato la soluzione, ma devo ammettere che non ci ho capito molto..


grazie a tutti in anticipo!

MACRO:


Sub Macro1()
'
' Macro1 Macro
'
' Scelta rapida da tastiera: CTRL+Q
'
Dim e As Variant
Dim n As Variant
Dim lastrow As Long

e = Application.InputBox("Inserisci Shift Easting")
n = Application.InputBox("Inserisci Shift Northing")
last row = Cell(Rows.Count, 1).End(xlUp).Row

Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), _
TrailingMinusNumbers:=True


Range("F1").Select
ActiveCell.Formula = "=SUM(RC[-3]+ e)"
Range("G1").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[-3]+ n)"
Range("F1").Select
Selection.AutoFill Destination:=Range("F1:F" & lastrow&)
Range("G1").Select
Selection.AutoFill Destination:=Range("G1:G" & lastrow&)
Range("F1:G" & lastrow&).Select
Selection.Copy
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("F:G").Select
Application.CutCopyMode = False
Selection.ClearContents

NOMEFILE$ = ActiveWorkbook.FullName '& ".csv"
lun = Len(ActiveWorkbook.FullName)
NOME = Left(NOMEFILE, (lun - 3))
NOMEFILE$ = NOME & "csv"
ActiveWorkbook.SaveAs Filename:= _
NOMEFILE _
, FileFormat:=xlCSV, CreateBackup:=False
ActiveWorkbook.Close SaveChanges:=False
End Sub

ESEMPIO FILE
13/06/2013,22:39:22,9479335.03,4435234.31,49657.223
13/06/2013,22:39:22,9479335.03,4435234.31,49657.245
13/06/2013,22:39:22,9479335.03,4435234.31,49657.245
13/06/2013,22:39:23,9479335.03,4435234.31,49657.245
13/06/2013,22:39:23,9479335.03,4435234.31,49657.223
13/06/2013,22:39:23,9479335.03,4435234.31,49657.245
13/06/2013,22:39:23,9479335.03,4435234.31,49657.223
13/06/2013,22:39:23,9479335.03,4435234.31,49657.245
13/06/2013,22:39:23,9479335.03,4435234.31,49657.223
13/06/2013,22:39:23,9479335.03,4435234.31,49657.245
13/06/2013,22:39:23,9479335.03,4435234.31,49657.245
13/06/2013,22:39:23,9479335.03,4435234.31,49657.223
13/06/2013,22:39:23,9479335.03,4435234.31,49657.223
sandrin81a
Utente Junior
 
Post: 22
Iscritto il: 14/07/13 00:53

Sponsor
 

Re: problema con input box e variabile in somma

Postdi sandrin81a » 14/07/13 06:02

P.S. i valori da inserire potrebbero essere anche negativi...
sandrin81a
Utente Junior
 
Post: 22
Iscritto il: 14/07/13 00:53

Re: problema con input box e variabile in somma

Postdi Flash30005 » 14/07/13 08:49

Ciao Sandrin81a e benvenuto/a nel Forum

Non entro in merito a ciò che fa la macro ma se il tuo problema è solo l'inpbox allora potresti sostituire le due righe (variabili di inserimento) con queste
Codice: Seleziona tutto
e = CDec(Application.InputBox("Inserisci Shift Easting"))
n = CDec(Application.InputBox("Inserisci Shift Northing"))


che convertono un numero-stringa in numero

ciao
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: problema con input box e variabile in somma

Postdi Anthony47 » 14/07/13 15:16

Il mio suggerimento e' di chiedere all' inputbox di restituirti un numero, usando l' argomento type e impostandolo a 1; in assenza di indicazioni ti restituisce una stringa, che poi dovresti convertire con una funzione di conversione, come ha fatto Flash.
Quindi userai, ad esempio:
Codice: Seleziona tutto
e = Application.InputBox("Inserisci Shift Easting", , , , , , , 1)
Il vantaggio di questo metodo e' che se l' utente inserisce un valore non numerico l' istruzione Inputbox lo rifiuta e ne richiede uno corretto, mentre la funzione di conversione avrebbe restituito un run-time error.

Ma il problema non e' solo quello... Infatti se ispezioni la formula inserita ad esempio in F1 essa e' =SOMMA(C1+ e), mentre immagino che avrebbe dovuto essere del tipo =SOMMA(C1+ 33,5)
Infatti dovresti calcolare la prima formula come
Codice: Seleziona tutto
ActiveCell.Formula = "=SUM(RC[-3]+" & e & ")"


Potresti anche valutare l' ipotesi di inserire i numeri prelevati con gli Inputbox in due celle, poi una a una copiarle e fare un Paste special -Valore -Operazione=Addiziona. Tramite "Registra nuova macro" ottieni il relativo codice vba, da modificare poi per usare LastRow nel range target.

Infine assumo che i tuoi regional settings prevedano che il separatore decimale sia il "punto" (e non la virgola); perche' se cosi' non fosse allora i risultati del tuo TextToColumns sarebbero "stringhe" (e non numeri) per cui la Somma fallirebbe anche con la formula corretta.
Se il tuo separatore decimale fosse la virgola, dovrai aggiungere, alle opzione della TextToColumns, DecimalSeparator:=".", ThousandsSeparator:=","

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: problema con input box e variabile in somma

Postdi sandrin81a » 14/07/13 23:50

Grazie mille per i suggerimenti! Preziosissimi, entrambe le soluzioni mi mi tornano utili!
Avevo aggirato il problema facendo scrivere le due variabili su due caselle e poi puntando queste celle per la somma.. Ma avevo l'impressione di fare qualcosa in più..

Grazie ancora
Alessandro
sandrin81a
Utente Junior
 
Post: 22
Iscritto il: 14/07/13 00:53


Torna a Applicazioni Office Windows


Topic correlati a "problema con input box e variabile in somma":

Problema Windows 10
Autore: asso1998
Forum: Software Windows
Risposte: 1

Chi c’è in linea

Visitano il forum: alfrimpa, giorgio1979 e 11 ospiti