Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

APRI FILE E POSIZIONA FOGLIO E CELLA

Ultimo Aggiornamento: 07/02/2018 22:47
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! [SM=x423023] )

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
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 12:00. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com