trova e sostituisci
Inviato: mercoledì 15 gennaio 2020, 17:28
non so se ho fatto bene a riaprire qui la discussione
ho il file di cui all'oggetto della precedente discussione, nel quale ho messo una macro che funziona bene per metà.
la macro è quella del module4 (perdiscogs) e non quella del module1che funziona benissimo quindi non va toccata
la macro del modulo4 (perdiscogs) dovrebbe (e in parte fa bene)
1) Rimuove colonne inutili
2)cambia alcune colonne di posizione e di contenuto.
e fino a qu va bene (fino alla riga "REM A TRASFERIMENTO DATI AVVENUTO RIMUOVI LA COLONNA COMMENT INIZIALE")
la macro dovrebbe (ma non fa)
1) chiedere il valore del PRICE (prezzo) sopra il quale cancellare tutti i records
2) cancellare i records maggiori di quel prezzo
Successivamente dovrebbe sostituire i valori dei prezzi (colonna PRICE) 4.9 a 1.0 e 5.9 a 3.0
Invece fa cose che non comprendo.
Qualcuno puo aiutarmi?
ho il file di cui all'oggetto della precedente discussione, nel quale ho messo una macro che funziona bene per metà.
la macro è quella del module4 (perdiscogs) e non quella del module1che funziona benissimo quindi non va toccata
la macro del modulo4 (perdiscogs) dovrebbe (e in parte fa bene)
1) Rimuove colonne inutili
2)cambia alcune colonne di posizione e di contenuto.
e fino a qu va bene (fino alla riga "REM A TRASFERIMENTO DATI AVVENUTO RIMUOVI LA COLONNA COMMENT INIZIALE")
la macro dovrebbe (ma non fa)
1) chiedere il valore del PRICE (prezzo) sopra il quale cancellare tutti i records
2) cancellare i records maggiori di quel prezzo
Successivamente dovrebbe sostituire i valori dei prezzi (colonna PRICE) 4.9 a 1.0 e 5.9 a 3.0
Invece fa cose che non comprendo.
Qualcuno puo aiutarmi?
Codice: Seleziona tutto
Sub perdiscogs
doc=thiscomponent
Sh1 = Doc.Sheets(0)
c = Sh1.createCursor
c.gotoEndOfUsedArea(false)
Rem ----- Trova ultima riga dati utili nel foglio di lavoro -----
UltimaRiga = c.RangeAddress.EndRow
REM ----- Rimozione delle colonne che inizialmente non servono -----
Sh1.Columns.removeByIndex(0, 6)
Sh1.Columns.removeByIndex(1, 1)
Sh1.Columns.removeByIndex(2, 1)
Sh1.Columns.removeByIndex(6, 4)
REM ----- Inserisci una colonna dopo la colonna "Media" (Quella che diventerà la nuova colonna "Comment") -----
Sh1.Columns.InsertByIndex(4, 1)
REM ----- Copia Intestazione da vecchia a nuova colona "Comment" ----
Sh1.getCellByPosition(4, 0).string = Sh1.getCellByPosition(2, 0).string
REM ----- Inizio Loop -----------
For Riga = 1 to UltimaRiga
REM ----- Il dato della Colonna C "Comments" Iniziale viene scritto nella Colonna "Location" (Ora colonna H) -----
Sh1.getCellByPosition(7, Riga).string = Sh1.getCellByPosition(2, Riga).string
REM ----- Nella nuova colonna "Comments" viene inserita la parola "PROVA" -----
Sh1.getCellByPosition(4, Riga).string = "PLEASE, TRY TO ORDER 4 RECORDS OR MORE, OR SHIPPING COSTS WILL BE TOO EXPENSIVE FOR YOU - REMEMBER THAT WE SHIP ONLY REGISTERED!"
Next Riga
REM ----- A trasferimento dati avvenuto Rimuovi la colonna "Comment" iniziale -----
Sh1.Columns.removeByIndex(2, 1)
Call CancellazionePricemaggioredi
Rem ----- Trova ultima riga dati utili nel foglio di lavoro -----
UltimaRiga = c.RangeAddress.EndRow
Rem ----- Avvio variazione dei prezzi -----
Dim sostituisci As Object
sostituisci = Sh1.createReplaceDescriptor()
sostituisci.SearchString = "5.9"
sostituisci.ReplaceString = "3.0"
Sh1.ReplaceAll(sostituisci)
sostituisci = Sh1.createReplaceDescriptor()
sostituisci.SearchString = "4.9"
sostituisci.ReplaceString = "1.0"
Sh1.ReplaceAll(sostituisci)
End sub
Sub CancellazionePricemaggioredi
doc=thiscomponent
Sh1 = Doc.Sheets(0)
c = Sh1.createCursor
c.gotoEndOfUsedArea(false)
Rem ----- Trova ultima riga dati utili nel foglio di lavoro -----
UltimaRiga = c.RangeAddress.EndRow
Rem ----- Richiesta inserimento del 'PRICE' di cui vuoi conservare i record.
RecordConPriceDaConservare = InputBox ("- Inserire il 'PREZZO' di cui si vogliono conservare i record;" & CHR$(10) & "- Come separatore decimale utilizzare il PUNTO della tastiera (NON quello del Tastierino)." , "ATTENZIONE: GESTIONE RECORD PRICE")
Rem ----- In caso annullamento dell'inserimento esci dalla procedura ------
If RecordConPriceDaConservare ="" Then Exit Sub
Rem ----- Richiesta conferma di procedere ----- In caso contrario esci dalla procedura -----
If Msgbox ("- Tutti i record con 'PRICE' diverso da " & RecordConPriceDaConservare & " saranno cancellati" & CHR$(10) & "- Confermare con il tasto INVIO o il pulsante OK", 33, "ATTENZIONE: CANCELLAZIONE DATI") = 2 Then Exit Sub
Rem ----- Avvio loop per la cancellazione dei record previsti -----
For Riga = UltimaRiga To 1 Step -1
If Sh1.getCellByPosition(1, Riga).string > RecordConPriceDaConservare then
Sh1.Rows.removeByIndex(Riga, 1)
End If
Next
End sub