gestione tabelle Excel tramite VBA
Hai un problema con Excel? 
gestione tabelle Excel tramite VBA
di spaz (utente non iscritto) data: 04/04/2014 17:17:53
Buongiorno, sono piuttosto acerbo di VBA, quindi chiedo di soprassedere su alcune nefandezze inserite nel mio codice..
Ho la necessità di pescare in una tabella denominata "elforn" inserita nel foglio "Elenco_fornitori", alcune righe in base al confronto del contenuto di una loro cella con una cella di una seconda tabella ("fornazienda") inserita nel foglio AZIENDA.
Devo in seguito copiare tutte le righe che soddisfano tale condizione in una terza tabella ("fornalt") sempre nel foglio AZIENDA.
Il mio codice arriva a selezionare e copiare la prima riga, ma non riesco a incollarla nella tabella fornalt.
Chiedo umilmente suggerimenti.
Sub fornitori_alternativi()
Dim Elenco_fornitori As Worksheet
Dim AZIENDA As Worksheet
Dim genere As String
Dim CB As Variant
Dim gen1 As String
Dim gen2 As String
Dim gen3 As String
Set AZIENDA = ActiveSheet
For i = 1 To AZIENDA.ListObjects("fornazienda").ListRows.Count
CB = AZIENDA.ListObjects("fornazienda").ListRows(i).Range(1, 7).Value
genere = AZIENDA.ListObjects("fornazienda").ListRows(i).Range(1, 3).Value
If CB = 0 Then
Set Elenco_fornitori = ActiveSheet
Sheets("Elenco_fornitori").Select
For j = 1 To ActiveSheet.ListObjects("elforn").ListRows.Count
gen1 = ActiveSheet.ListObjects("elforn").ListRows(j).Range(1, 4).Value
gen2 = ActiveSheet.ListObjects("elforn").ListRows(j).Range(1, 5).Value
gen3 = ActiveSheet.ListObjects("elforn").ListRows(j).Range(1, 6).Value
If genere = gen1 Or genere = gen2 Or genere = gen3 Then
ActiveSheet.ListObjects("elforn").ListRows(j).Range.Select
Selection.Copy
Set AZIENDA = ActiveSheet
Sheets("AZIENDA").Select
End If
Next
End If
Set AZIENDA = ActiveSheet
Next
End Sub |
di scossa data: 05/04/2014 12:56:05
Ciao,
difficile darti dei suggerimenti soprassedendo alle "licenze poetiche" del tuo codice
Comunque dovresti postare un file su cui lavorare, che sia congruente con l'originale, e farci alcuni esempi concreti di quello che vuoi ottenere.
| scossa's web site |
Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw) |
di Zer0Kelvin data: 05/04/2014 21:06:55
Ciao.
Premesso che non si possono fare dei test se non fornisci un file di esempio, una probabile soluzione è quella che segue
Option Explicit
Sub fornitori_alternativi()
Dim genere As String, gen1 As String, gen2 As String, gen3 As String
Dim CB As Variant
Dim i As Long, j As Long
Dim lFornAzienda As ListObject, lFornitori As ListObject, lFornAlt As ListObject
Set lFornitori = ThisWorkbook.Sheets("Elenco_fornitori").ListObjects("elforn")
Set lFornAzienda = ThisWorkbook.Sheets("AZIENDA").ListObjects("fornazienda")
Set lFornAlt = ThisWorkbook.Sheets("AZIENDA").ListObjects("fornalt")
For i = 1 To lFornAzienda.ListRows.Count
CB = lFornAzienda.ListRows(i).Range(1, 7).Value
genere = lFornAzienda.ListRows(i).Range(1, 3).Value
If CB = 0 Then
With lFornitori
For j = 1 To .ListRows.Count
gen1 = .ListRows(j).Range(1, 4).Value
gen2 = .ListRows(j).Range(1, 5).Value
gen3 = .ListRows(j).Range(1, 6).Value
If genere = gen1 Or genere = gen2 Or genere = gen3 Then
.ListRows(j).Range.Copy lFornAlt.ListRows.Add
End If
Next j
End With
End If
Next i
Set lFornitori = Nothing
Set lFornAzienda = Nothing
Set lFornAlt = Nothing
End Sub
|
di Zer0Kelvin data: 05/04/2014 21:09:58
PS:
correggi
.ListRows(j).Range.Copy lFornAlt.ListRows.Add
'In
.ListRows(j).Range.Copy lFornAlt.ListRows.Add.Range |
di spaz data: 07/04/2014 08:06:41
Grazie a tutti!
In particolare a Zer0Kelvin, che navigando ad occhi chiusi è riuscito a condurre la barca in porto..
di Zer0Kelvin data: 07/04/2014 08:47:56
LOL, allora il senso di ragno funziona ancora!
Vuoi Approfondire?