Ciao, quali sono i comandi che non conosci?
comunque il codice usato è facilmente adattabile, questo il codice delle 2 macro per gli eventi del foglio.
Option Explicit
Private k
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r, c, c1, d, x
On Error GoTo 1
If Not Intersect(Target, [A4:AL35]) Is Nothing Then
Application.EnableEvents = False
Debug.Print k
r = Target.Row: c1 = Target.Column: d = Target
If Not IsNumeric(d) Then
For x = 1 To 38
If d = Cells(1, x) Then c = x: Exit For
Next x
Cells(r, c1) = k
Cells(r, c).Select
End If
End If
1:
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim r, c, d
On Error GoTo 1
If Not Intersect(Target, [A4:AL35]) Is Nothing Then
Application.EnableEvents = False
r = Target.Row
Range("A4:AL34").Interior.Pattern = xlSolid
Range(Cells(r, 1), Cells(r, 38)).Interior.Pattern = xlGray25
k = Target
End If
1:
Application.EnableEvents = True
End Sub
la prima cosa da cambiare è la convalida per la ricerca della colonna, io ho inserito un nome per l'area delle intestazioni, quindi seleziona tutte le intestazioni e cambia la convalida con il nuovo range.
Elimina le celle unite delle intestazioni, non vanno bene, le intestazioni del file che hai inserito sono 38 ecco il primo elemento da cambiare nel codice dove vedi 38 inserisci il numero delle tue colonne
If Not Intersect(Target, [A4:AL35]) Is Nothing Then
questa riga stabilisce il range interessato quindi consideralo come Range("A4:AL35"), a questo punto devi cambiare "AL35" con la tua ultima colonna e riga se sono maggiori di 35
la seconda riga "Private k" è una variabile pubblica per il foglio non toccarla
questa è l'ìaltra riga da modificare
Range("A4:AL34").Interior.Pattern = xlSolid
devi sostituire "AL34" con l'ultima colonna/riga questa riga serve per eliminare l'evidenziazione precedente, prima di evidenziare la riga selezionata.
queste sono le modifiche da fare per funzionare con più colonne, tutto qui.
anche se credo che il tuo metodo non sia molto efficiente se devi fare ricerche e report, io invertirei la tabella mettendo le colonne in verticale, ed i prezzi in orizzontale.
Ciao By Sal (8-D
[Modificato da by sal 25/07/2022 16:26]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie
clicca qui