creazione macro riga pre impostata
Hai un problema con Excel? 
creazione macro riga pre impostata
di fpistolesi data: 29/07/2015 14:16:09
Ciao a tutti, per un excel che devo creare avrei bisogno di creare una macro che genera una riga con del contenuto pre impostato. La macro dovrebbe creare la riga partendo dalla cella selezionata con il cursore. In allegato troverete un file di test dove ho creato una macro che dovrebbe replicare la riga num 5 dove partendo appunto dalla cella selezionata. Quando avvio la macro però viene solamente scritto nella cella la parola content1. Qualcuno mi può dare una mano? L'idea dovrebbe poi svilupparsi con dei bottoni che generano le righe pre impostate in maniera differente.
Grazie per l'aiuto!
ub RigaPreImpostata()
'
' RigaPreImpostata Macro
'
'
ActiveCell.FormulaR1C1 = "content1"
Range("B5").Select
ActiveCell.FormulaR1C1 = "content2"
Range("C5").Select
ActiveCell.FormulaR1C1 = "content3"
Range("A5:E5").Select
Range("E5").Activate
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End Sub
|
di alfrimpa data: 29/07/2015 14:37:39
Ciao fpistolesi
Non essendoci un file allegato è difficile risponderti.
Mi limito a suggerirti una semplice macro che inserisce nelle celle a1, b1 e c1 content1, content2 e content3
Alfredo
Sub intest()
Dim i as Integer
For i = 1 to 3
Cells(0, i).Value = "content" & i
Next i
End Sub |
di fpistolesi data: 29/07/2015 15:17:10
Grazie alfredo, ti allego un file molto semplice. Vorrei che la riga gialla venga replicata partendo da una cella che scelgo nel foglio. Quando avvio la macro viene eseguita solo la prima operazione ossia scrivere a nella cella selezionata! Grazie ancora!
di alfrimpa data: 29/07/2015 15:28:33
Ciao fpistolesi
Purtroppo (per te) sono in vacanza e non ho con me il pc per cui anche se ho delle idee non posso testarle adeguatamente.
Sicuramente qualche altro utente ti risponderà prima di lunedì data del mio rientro a casa.
Alfredo
di Marius44 data: 29/07/2015 15:36:53
Ciao fpistolesi
@alfrimpa - Alfredo scusa l'intromissione.
@fpistolesi
nel file allegato la sub esegue quello che gli dici di fare. Se la rileggi rigo dopo rigo vedrai che:
activecell ==> ti scrive quello che vuoi nella cella attiva
poi passi alla cella "B1" (quindi non alla cella successiva alla ex-cella-attiva ma ad una cella ben definita).
Se vuoi che le cinque caselle delle prime cinque colonne riportino quello che vuoi devi PRIMA "vedere" qual'è la colonna della cella attiva e poi assegnare le colonne successive alla stessa riga.
Assegna ad una variabile le colonna della cella attiva; ad esempio:
cln=activecell.column
poi prosegui assegnando il valore cln+1 alla cella successiva e così via.
Prova e ciao
Mario
di Vecchio Frac data: 29/07/2015 15:41:18
Il codice del file allegato non coincide con quello dell'esempio del tuo primo post.
Quello che non è affatto chiaro è cosa vuoi ottenere.
Il file di test scrive nella cella corrente il valore della prima cella del range A1:E1 e poi seleziona detto range. Il codice è prodotto dal registratore di macro, che genera una schifezza inguardabile... e deve essere aggiustato.
cit. "Vorrei che la riga gialla venga replicata partendo da una cella che scelgo nel foglio"
---> Cioè il range A1:E1. Il codice sottostante copia tutto il range interessato nella posizione della cella attiva, formattazione compresa (colori, bordi, ecc.)
sub ricopia()
range("A1:E1").copy activecell
end sub |
di alfrimpa data: 29/07/2015 15:41:33
Ci mancherebbe Mario avevo richiesto io l'intervento di altri essendo io "impsibilitato" a fornire un corretto riscontro.
Grazie del tuo intervento
Alfredo
di Vecchio Frac data: 29/07/2015 15:43:38
@marius
Dai per scontato che l'OP voglia ricopiare le colonne da A a E della riga su cui si trova la cella attiva, ma non è stato specificato così e io l'ho preso alla lettera. Gli utenti dovrebbero abituarsi a essere più espliciti.
@alfredo
Goditi il sole ^_^
di alfrimpa data: 29/07/2015 18:47:10
Grazie Francesco.
Purtroppo domenica sera rientro; speriamo che ExcelVba mi aiuti a trascorrere piacevolmente i giorni che mi separano dalla prossima andata in vacanza
Alfredo
P.S. Avrei dovuto pensare alla tua soluzione: la più semplice ed immediata ma chissà perchè le cose semplici non mi vengono mai in mente prima
di Vecchio Frac data: 29/07/2015 19:40:29
Bè non è detto che la mia interpretazione sia quella corretta :)
Vuoi Approfondire?