Risolto Campo Calcolato ...

Piero_Bo

Utente abituale
3 Gennaio 2017
375
18
Emilia Romagna
Excel 2013
16
Buondì a tutti, sto implementando un mio DB che uso al lavoro dove per evitare di inserire il link manualmente alla cartella dove ci andranno i pdf creati e vorrei automatizzarlo, in parte ci sono riuscito, non riesco a NON fargli fare uno \ nel caso manca un campo successivo.
Ovvero:
Visual Basic:
[Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc] & "\" & [Variabile]
Può capitare che l'ultimo campo VARIABILE non sia presente perchè viene utilizzato per indicare il numero di revisione disegno, o altro, e se rimane vuoto mi inserisce lo \

\\NomePC\CartellaCliente\NumeroDisegno o Nome particolare\CartellaMacchina ---- Link corretto se escudo il campo Variabile dal codice

\\NomePC\CartellaCliente\NumeroDisegno o Nome particolare\CartellaMacchina\ ---- Link NON corretto nel caso manca la variabile

\\NomePC\CartellaCliente\NumeroDisegno o Nome particolare\CartellaMacchina\Variabile ---- Link corretto con variabile nel codice

Come posso evitare che mi insersca lo \ come nel esempio sopra in rosso
 

Powerwin

VBA Expert
Expert
17 Marzo 2016
4.291
83
vicino a Milano
2019
80
da adattare

Visual Basic:
Se Dir([Perc] & "\" & [CartellaCliente] & "\" & [Disegno], vbDirectory) <> vbNullString Then
   [Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc] & "\" & [Variabile]
Else
   [Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc]
End If
 

Piero_Bo

Utente abituale
3 Gennaio 2017
375
18
Emilia Romagna
Excel 2013
16
Grazie FLavio, non devo fare il controllo sulla directory, cosi ho capito dal tuo codice, ma devo controllare che il campo "Variabile" è vuoto o pieno ... provo a metterlo in codice:
=IIF (identificativo di SE per excel) variabile è vuota, allora compila questi campi
Visual Basic:
[Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc]
se è piena questi
Visual Basic:
[Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc] & "\" & [Variabile]
Visual Basic:
=IIF ([Variable] ="" else [Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc] Then [Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc] & "\" & [Variabile])
 

Piero_Bo

Utente abituale
3 Gennaio 2017
375
18
Emilia Romagna
Excel 2013
16
Se VARIABILE è vuota THEN Scrivi questi campi, ELSE scrivi in questi ....
Visual Basic:
=IIF ([Variabile] = "" THEN [Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc]; ELSE [Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc] & "\" & [Variabile])

Prima o poi ci arriverò da solo :confusostelle:
 

giulianovac

Access/VBA Expert
Expert
9 Giugno 2018
2.233
83
Italy
2013 2019
166
P @Piero_Bo

Stai sbagliando completamente la sintassi della funzione IIF.

Non ti capisco: perché invece di chiedere ad un forum non ti studi PRIMA la guida?

Poi, tutte quelle parentesi quadre non a che servono?
 

Piero_Bo

Utente abituale
3 Gennaio 2017
375
18
Emilia Romagna
Excel 2013
16
Non ti capisco: perché invece di chiedere ad un forum non ti studi PRIMA la guida?

Poi, tutte quelle parentesi quadre non a che servono?
Se inserisco i campi senza la IIF funziona tutto, ho provato a capirci da solo ma se ci arrivavo da solo non chiedevo aiuto.

Le parentesi quadre le inserisce ACCESS per identificare i campi del quando si usa lo strumento Generatore di espressioni e si dà conferma al campo suggerito in fase di scrittura
 

giulianovac

Access/VBA Expert
Expert
9 Giugno 2018
2.233
83
Italy
2013 2019
166
Devi spiegare il contesto. Altrimenti è difficile capire cosa suggerire.

A cosa serve?
Ad impostare un percorso? Ad aprire un file o una cartella? Dove è come richiami la query?
 

Piero_Bo

Utente abituale
3 Gennaio 2017
375
18
Emilia Romagna
Excel 2013
16
Devi spiegare il contesto. Altrimenti è difficile capire cosa suggerire.
Ok provo a ri-spiegarlo:
Ho una maschera dove inserisco di dati prelevati da Caselle Combinate.
Man mano che inserisco i dati mi deve generare un link con i campi compilati, dove l'ultimo chiamato [Variabile] non è sempre compilato, ma viene usato in casi di cambio materiale che ha lo stesso disegno, revisioni di disegno o altro.

I campi che vengono riempieti sono appunto quelli tra le due [ ....]
Visual Basic:
[Perc] & "\" & [CartellaCliente] & "\" & [Disegno] & "\" & [CartellaMacc] & "\" & [Variabile]
al momento creo il link dalla tabella con il comando Campo Calcolato senza usare nessuna query.

Una volta che il campo [LINK] è completo con un evento doppio click mi si apre la directory generata.
Visual Basic:
Private Sub Link_DblClick(Cancel As Integer)

Dim valore As String

valore = "" & Link.Value
Me.Application.FollowHyperlink Address:=valore, NewWindow:=True

End Sub
il campo calcolato deve crearmi il link funzionante che il campo Variabile sia compilato che NON compliato, e non deve inserire lo \ alla fine

senza IIF funziona, se gli metto la condizione mi crea sempre l'errore di sintassi
 

giulianovac

Access/VBA Expert
Expert
9 Giugno 2018
2.233
83
Italy
2013 2019
166
Se lo dicevi subito, ci saremmo risparmiati 15 post!
Ti serve per il futuro. ';)

Ti basta verificare: se l'ultimo carattere è il backslash "\" lo togli.
Tradotto in codice:
Codice:
valore =  "" & Link.Value     '''<<< Questa è la tua istruzione
valore = Iif(Right$(valore,1) = "\", Left$(valore, Len(valore) - 1), valore)
 

Piero_Bo

Utente abituale
3 Gennaio 2017
375
18
Emilia Romagna
Excel 2013
16
Se lo dicevi subito, ci saremmo risparmiati 15 post!
Eh ... avevo descritto al post #1, ma forse non era chiara la spiegazioe

Provo


edit:
Visual Basic:
Dim valore As String
valore = "" & Link.Value      '''<<< Questa è la tua istruzione
valore = IIf(Right$(valore, 1) = "\", Left$(valore, Len(valore) - 1), valore)
Me.Application.FollowHyperlink Address:=valore, NewWindow:=True
End Sub
COn il tuo codice dovrebbe togliere lo \ se manca l'ultimo campo ?
Se è cosi non lo toglie e il risultato è:
\\NomePC\CartellaCliente\NumeroDisegno o Nome particolare\CartellaMacchina\

invece di:
\\NomePC\CartellaCliente\NumeroDisegno o Nome particolare\CartellaMacchina

Con anche l'ultimo campo il risultato corretto deve essere:
\\NomePC\CartellaCliente\NumeroDisegno o Nome particolare\CartellaMacchina\Variabile
 
Ultima modifica:

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!