| | Post: 10 | Registrato il: 04/09/2017
| Città: GENOVA | Età: 47 | Utente Junior | Excel 2016 / 2011 | | OFFLINE | |
|
05/02/2018 13:50 | |
Ciao a tutti
Il file allegato, al doppio click sulla colonna “H”, apre il file corrispondente sulla stessa riga indicato in colonna “F”
È possibile che oltre ad aprire il file, apra direttamente sul nome del foglio indicato in colonna “ D” e posizioni la cella indicata in colonna “B” sotto il blocco riga situato sulla riga 10 ?
Tutti i fogli contengono un blocco riga posizionato sulla riga 10 e sarebbe magnifico se la cella selezionata in colonna “B” si posizioni subito sotto il blocco riga
Un enorme grazie a tutti per ogni aiuto
Elvis |
|
| | Post: 2.645 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
05/02/2018 16:14 | |
Buon pomeriggio, Elvis;
nella tua richiesta ci sono un paio di cose che non mi sono del tutto chiare.
@Elvis.77, scrive:
È possibile che oltre ad aprire il file, apra direttamente sul nome del foglio indicato in colonna “ D” e posizioni la cella indicata in colonna “B” sotto il blocco riga situato sulla riga 10 ?
- L'evento "Worksheet_BeforeDoubleClick" avrà effetto solo sul Foglio di lavoro "controllo archivi" del File attivo (in questo caso "Apri file e posiziona foglio e cella.xlsm")
Voglio dire, il File indicato in Colonna "F" verrà aperto ma non potrai visulaizzare un Foglio di lavoro diverso da quello con il quale è stato salvato il File indicato in Colonna "F"
- La struttura del Codice VBA "Private Sub Worksheet_BeforeDoubleClick" non mi è del tutto chiara; questo però potrebbe essere un mio problema (l'età è quella che è e di certo ... non aiuta! )
Quello che posso proporti è:
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("H:H")) Is Nothing Then Test
End Sub
In un Modulo:
Option Explicit
Sub Test()
Application.ScreenUpdating = False
Const mPath As String = ""C:\TuaCartella\" '<<<<< VARIARE"
Dim c As Byte
Dim Fgl As String, Cll As String
If ActiveCell.Value = "" Then End
Fgl = Cells(ActiveCell.Row, 4).Value
Cll = Cells(ActiveCell.Row, 2).Value
Workbooks.Open mPath & Cells(ActiveCell.Row, 6)
Sheets(Fgl).Select
Range(Cll).Select
Application.ScreenUpdating = True
End Sub
A disposizione.
Buon Lavoro e buona serata.
Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 10 | Registrato il: 04/09/2017
| Città: GENOVA | Età: 47 | Utente Junior | Excel 2016 / 2011 | | OFFLINE | |
|
06/02/2018 08:36 | |
Ti ringrazio molto Giuseppe per la soluzione.
Sapresti dirmi se esite anche un modo per posizionare la cella attiva trovata sotto il blocco riga situato sulla riga 10? O bisogna fare lo "scroll " manualmente?
Saluti e grazie di nuovo
Elvis
|
| | Post: 2.651 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
06/02/2018 10:35 | |
Buona giornata, Elvis;
grazie del riscontro, non è sempre così scontato.
@Elvis.77, scrive:
Sapresti dirmi se esite anche un modo per posizionare la cella attiva trovata sotto il blocco riga situato sulla riga 10? O bisogna fare lo "scroll " manualmente?
Credo dipenda dall'altezza delle Righe e dalla risoluzione dello schermo; molto empiricamente ho eseguito alcuni test con:
- altezza riga 13,5
- righe visualizzate nella schermata 26
In base a questi due parametri, potresti provare con:
Option Explicit
Sub Test()
If ActiveCell.Value = "" Then End
Application.ScreenUpdating = False
Const mPath As String = "C:\Forum#2\Elvis_77\Archivio\"
Dim c As Byte, Rgt As Byte
Dim Fgl As String, Cll As String
Fgl = Cells(ActiveCell.Row, 4).Value
Cll = Cells(ActiveCell.Row, 2).Value
Workbooks.Open mPath & Cells(ActiveCell.Row, 6)
Sheets(Fgl).Select
Rgt = Range(Cll).Row / 15
Cells(10, 1).Select
ActiveWindow.LargeScroll Down:=Rgt - 1
Range(Cll).Select
Application.ScreenUpdating = True
End Sub
A disposizione.
Buon Lavoro.
Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
| | Post: 11 | Registrato il: 04/09/2017
| Città: GENOVA | Età: 47 | Utente Junior | Excel 2016 / 2011 | | OFFLINE | |
|
07/02/2018 21:02 | |
Grazie Giuseppe per le indicazioni. Appena un attimo guardo se riesco ad applicarle al mio file
saluti Elvis |
| | Post: 2.660 | Registrato il: 03/04/2013
| Utente Veteran | Excel 2000 - 2013 | | OFFLINE | |
|
07/02/2018 22:47 | |
Buona sera, Elvis.
a volte la soluzione più banale è quella alla quale si pensa in ritardo e pensare che è una mia regola in tutti i Codici VBA di questo tipo.
Prova questo Codice VBA nel quale ho semplicemente spostato la selezione della Cella immediatamente dopo l'istruzione "Application.ScreenUpdating = True"
Option Explicit
Sub Test()
If ActiveCell.Value = "" Then End
Application.ScreenUpdating = False
Const mPath As String = "C:\Forum#2\Elvis_77\Archivio\"
Dim c As Byte, Rgt As Byte
Dim Fgl As String, Cll As String
Fgl = Cells(ActiveCell.Row, 4).Value
Cll = Cells(ActiveCell.Row, 2).Value
Workbooks.Open mPath & Cells(ActiveCell.Row, 6)
Sheets(Fgl).Select
Application.ScreenUpdating = True
Range(Cll).Select
End Sub
Se lo ritieni utile e opportuno, fai sapere se è una soluzione utile per le tue necessità.
Chiedo scusa per il refuso iniziale.
A disposizione.
Buona serata.
Giuseppe
Windows XP - Excel 2000
Windows 10 - Excel 2013 |
|
|