Moderatori: Anthony47, Flash30005
Anthony47 ha scritto:La "pistola" che legge il codice a barre sostituisce la tastiera; quindi quando legge una etichetta ne scrive il contenuto nella cella selezionata.
Tutto il resto lo devi fare tu, o con vba (sfruttando l'evento WorksheetChange) o con formule.
Potrebbe essere utile iniziare la procedura con la lettura di una label con un contenuto standard il cui significato (da realizzare tramite vba) sia "posizionati nella prima riga libera/vuota"
Sub SelVuota()
UR = Range("B2:F201" & Rows.Count).End(xlUp).Row
For RR = 1 To UR
If Range("B2:F201" & RR).Value = "" Then
Range("B2:F201" & RR).Select
Exit Sub
End If
Next RR
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myRan As String
'
myRan = "I2:K162" '<<< L'area per i cui cambiamenti viene subito fatto un File Save
If Application.Intersect(Target, Range(myRan)) Is Nothing Then Exit Sub
Debug.Print Now, Target.Address
ThisWorkbook.Save
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myRan As String
'
myRan = "I2:K162" '<<< L'area per i cui cambiamenti viene subito fatto un File Save
If Application.Intersect(Target, Range(myRan)) Is Nothing Then Exit Sub
Debug.Print Now, Target.Address
ThisWorkbook.Save
UR = Range("B2:F201" & Rows.Count).End(xlUp).Row
For RR = 1 To UR
If Range("B2:F201" & RR).Value = "" Then
Range("B2:F201" & RR).Select
Exit Sub
End If
Next RR
End Sub
Potrebbe essere utile iniziare la procedura con la lettura di una label con un contenuto standard il cui significato (da realizzare tramite vba) sia "posizionati nella prima riga libera/vuota"
Private Sub Worksheet_Change(ByVal Target As Range)
Dim NextR As Long
If Target.Count = 1 Then
If Target.Value = "LaLabelStandard" Then '<<< La tua label che dice "Pronti Via"
Application.EnableEvents = False
Application.Undo 'Ripristina il contenuto
NextR = Evaluate("MAX(IF(B2:B201<>"""",ROW(B2:B201),""""))") + 1
Cells(NextR, "B").Select 'Prima cella in B libera, pronti a ricevere
Application.EnableEvents = True
End If
End If
Dim myRan As String
'etc etc
'il tuo codice originale
End Sub
Anthony47 ha scritto:Avevo fatto questa proposta perche' il lettore a barre scrive nella cella al momento selezionata e penso possa essere poco fluido lavorare un po' col mouse (sleziona la posizione) e un po' con la pistola.
Anthony47 ha scritto:legge prima l'etichetta campione che tiene in bella vista (e il cui contenuto va inserito nella riga marcata <<<)
Dylan666 ha scritto:Anche il più economico dei lettori di codice a barre ha la possibilità di programmare se alla fine della lettura in aggiunta deve simulare la pressione del tasto Invio (che in Excel sposta in basso) o TAB (che in Excel sposta a destra).
Nel peggiore dei casi potresti semplicemente filtrare le colonne per "vuoto" e spostarti così.
La "pistola" (il lettore di codice a barre) sostituisce la tastiera.Analizzando un esempio pratico, semplice riuscirei a "capirne" il funzionamento e lo potrei adattare ai miei bisogni.
Anthony47 ha scritto:Tradotto in vba, dando per scontato che a ogni ciclo vengono caricati in sequenza i tre campi e lavorando sulla sub di WorksheetChange:
a1) se hai inserito qualcosa in colonna B allora vai su C
a2) se hai inserito qualcosa in colonna C allora vai su F
A3) se hai inserito qualcosa in colonna F allora vai su B della riga successiva
Anthony47 ha scritto:In cosa consiste il trucco (che comunque e' assolutamente opzionale)? In parole povere, switchando sul lettore di codice a barre e dimenticando tastiera e mouse:
-ti prepari un pezzo di carta su cui scrivi in codice a barre una parola chiave; esempio "PippoZc123" (assumiamo che mai sarai chiamato a inputare un codice a barre con questo contenuto). Questa e' la "label" misteriosa di cui ti ho parlato.
Dylan666 ha scritto:Aggiungo che se fossi io l'operatore comunque non mi costerebbe tanto muovere il focus sulla cella giusta
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B2:P201")) Is Nothing Then
Select Case Target.Address
Case Is = "$B$2"
Range("C2").Select
Case Is = "$C$2"
Range("F2").Select
Case Is = "$F$2"
Range("H2").Select
Case Is = "$H$2"
Range("I2").Select
Case Is = "$I$2"
Range("P2").Select
Case Is = "$P$2"
Range("B3").Select
Case Is = "$B$3"
Range("C3").Select
Case Is = "$C$3"
Range("F3").Select
Case Is = "$F$3"
Range("H3").Select
Case Is = "$H$3"
Range("I3").Select
Case Is = "$I$3"
Range("P3").Select
Case Is = "$P$3"
Range("B4").Select
End Select
End If
End Sub
Si decisamente allucinanteL'unico problema è che per aggiungere la macro a tutto lo schema dovrei compilarlo con i riferimenti di 201 righe.. una cosa infinita/allucinante..
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
If Not Intersect(Target, Range("B2:P201")) Is Nothing Then
Select Case Target.Column
Case Is = 2 'B..
Target.Offset(0, 1).Select '..C
Case Is = 3 'C..
Target.Offset(0, 3).Select '..F
Case Is = 6 'F..
Target.Offset(0, 2).Select '..H
Case Is = 8 'H..
Target.Offset(0, 1).Select '..I
Case Is = 9 'I..
Target.Offset(0, 7).Select '..P
Case Is = 16 'P..
Target.Offset(1, -14).Select '..B+1
End Select
End If
End If
End Sub
Io non avrei dubbi: 1 campo, 1 letturasystemcrack ha scritto:Ora penserò a come fare prendere il codice, se tutti i dati in un colpo o fare con più "spari"
Mi pare che sei gia' a buon punto, almeno a guardare il lavoro fatto sul BBingoDylan ha scritto:[...] Ma una cosa è pensarlo e un'altra scriverlo
Anthony47 ha scritto:Io non avrei dubbi: 1 campo, 1 lettura
Quanto alla ricerca di esempi, mi pare che continui a far finta di ignorare che il lettore di codice a barre lavora simulando la scrittura da tastiera. Quindi collega il lettore di codice a barre, configuralo, e comincia a leggere etichette (label) con codici a barre
Anthony47 ha scritto:Mi pare che sei gia' a buon punto, almeno a guardare il lavoro fatto sul BBingoDylan ha scritto:[...] Ma una cosa è pensarlo e un'altra scriverlo
Torna a Applicazioni Office Windows
Inserimento parziale valore cella in MessageBox Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 6 |
Inserire dati filtrati da 2 file ad un terzo file Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 14 |
Codice VBA per stampare UserForm attiva Autore: Carletto Ribolla |
Forum: Applicazioni Office Windows Risposte: 8 |
Perchè l'importazione dati con Selenium non fuziona? Autore: aggittoriu |
Forum: Applicazioni Office Windows Risposte: 7 |
Visitano il forum: Nessuno e 16 ospiti