| Autore |
Discussione  |
|
|
n/a
deleted
12 Messaggi |
Inserito il - 28/02/2008 : 22:59:39
|
salve a tutti e grazie per il vostro aiuto. premetto che non sono molto esperto... Sto usando due macro per copiare dei dati in celle: ora C11:I30 ora O11:U30 a seconda del comando che eseguo...e fin qui tutto bene! (allego le macro)
Sub CopiaIncollab() Dim n As Integer ActiveSheet.Range("a5:g5").Select Selection.Copy Sheets("Copia").Select For n = 11 To 30 With Worksheets("Copia").Cells(n, 3) If .Value = "" Then GoTo 10 End With
Next n Exit Sub
10: Sheets("Copia").Select Cells(n, 3).Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False
Application.CutCopyMode = False
Range("g3").Select
End Sub
Sub CopiaIncollas() Dim n As Integer ActiveSheet.Range("A5:g5").Select ' Selection.Copy Sheets("Copia").Select For n = 11 To 30 With Worksheets("Copia").Cells(n, 15) If .Value = "" Then GoTo 10 End With
Next n Exit Sub
10: Sheets("Copia").Select Cells(n, 15).Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False
Application.CutCopyMode = False
Range("g3").Select
End Sub
Osserverete dalle macro che i dati si copiano su celle fino al riempimento di 20 caselle in verticale.
Questi dati che raccolgo in A5:G5 hanno sempre in G39 una sigla di identificazione es: o "B" o "S" Vorrei usare queste "B" o "S" (che sono in G39) per rendere automatica la mia copia, eliminando i due comandi e tenerne uno solo, facendo si che quando G39 è "B" i dati si copiassero in: C11:I30 e quando in G39 è "S" i dati si copiassero in: O11:U30 come devo fare?... vi ringrazio in anticipo per il vostro aiuto
|
|
|
Diego Vassallo
Amministratore
 
156 Messaggi |
Inserito il - 29/02/2008 : 10:50:27
|
scusami se ti rispondo così alla veloce, ma il tempo è sempre più che tiranno. puoi usare le funzioni di manipolazione delle stringhe.. Le lettere identificative B o S sono sempre all'inizio della stringa contenuta nelle celle ? in caso affermativo puoi fare così
valorecella = prelevi il valore con un ciclo nella celle del range a5:g5 ' ecco quello che fa al caso tuo primovalore = mid(valorecella,1,1) if primovalore = "B" then (fai una cosa) if primovalore = "S" then (fai un'altra cosa.)
Scusa la risposta iperveloce... Dicci se hai risolto o se hai altri problemi manda pure altre richieste.
Ciao e grazie di aver usto il nostro forum. Diego
|
 |
|
|
n/a
deleted
12 Messaggi |
Inserito il - 29/02/2008 : 17:39:37
|
ti ringrazio per la tua veloce risposta, ma come dicevo...sono poco esperto e fatico ad inserire i dati che mi hai gentilmente donato... se vuoi allego il file così vedi come funziona e quale comando è necessario sostituire o modificare... grazie
Allegato: moduli.zip 134,94 KB |
 |
|
|
Diego Vassallo
Amministratore
 
156 Messaggi |
Inserito il - 01/03/2008 : 10:04:49
|
Ciao.. prima di tutto un piccolo suggerimento .. non usare mai ( a parte casi molto speciali) l'uso del comando "goto"; se per caso volessi approfondire l'uso del VBA e dovessi scrivere programmi più corposi, saresti veramente poi in difficoltà a controllare e modificare il codice. tornando a noi potresti associare questa macro ad un singolo pultante
Sub scelta()
valorescelta = Workbooks("moduli.xls").Worksheets("copia").Cells(39, 7).Value
If valorescelta = "S" Then Call CopiaIncollas If valorescelta = "B" Then Call CopiaIncollab End Sub
l'ho provata è sembra funzionare correttamente. Fammi sapere se hai risolto. Ciao |
 |
|
|
n/a
deleted
12 Messaggi |
Inserito il - 01/03/2008 : 11:27:37
|
| ok ok ...funziona grazie mille...non so come ringraziarti... ciao |
 |
|
|
Diego Vassallo
Amministratore
 
156 Messaggi |
Inserito il - 01/03/2008 : 11:34:32
|
Bene.. la tua soddisfazione è già un'ottimo ringraziamento. Torna spesso a trovarci.. nell'area Excel VBA metterò un sacco di materiale molto interessante. Ciao !!
|
 |
|
| |
Discussione  |
|