3d preglednica in premikanje po listih

Pomoč pri delu z MS Excelom
Odgovori
mipax
Prispevkov: 57
Pridružen: Po Avg 01, 2005 9:37 pm

3d preglednica in premikanje po listih

Odgovor Napisal/-a mipax »

Naredil sem 3D preglednico x, y, z, pri kateri so za "z" os imena listov.

Zanima me, če je možno kako narediti, da bi se premikal po listih naprej in nazaj hitro brez klikanja in da bi bila izbrana celica na vseh listih vedno ista. (npr. bi pritisnil alt in premikal kolešček na miški ali pritisnil kakšno tipko - npr. nek posnet makro, ki bi se zagnal avtomatsko z odpiranjem preglednice).

Zaenkrat sem našel tole možnost s posnetimi makroji v katerih sem popravil makro in se premikam z ctrl+m naprej, in ctrl+n nazaj.
Kako bi naredil, da bi bilo premikanje s koleščkom miške ali puščicami na tipkovnici?

Tudi del vprašanja, da bi bila izbrana na vseh listih ista celica pa še ostaja.

naslednji list:
naslednji list:

Sub Makro1()
' Makro1 Makro
' Makro ustvaril: nn, dne 18.2.2015
' Bližnjica na tipkovnici: Ctrl+m
On Error Resume Next
Sheets(ActiveSheet.Index + 1).Activate
If Err.Number <> 0 Then Sheets(1).Activate

End Sub
Prejšnji list:
Sub Makro2()
' Makro2 Makro
' Makro ustvaril: nn, dne 18.2.2015
'' Bližnjica na tipkovnici: Ctrl+n
On Error Resume Next
Sheets(ActiveSheet.Index - 1).Activate
If Err.Number <> 0 Then Sheets(Worksheets.Count).Activate

End Sub
dragopre
Prispevkov: 105
Pridružen: To Dec 11, 2012 11:46 pm

Re: 3d preglednica in premikanje po listih

Odgovor Napisal/-a dragopre »

Pozdravljen.
Tudi del vprašanja, da bi bila izbrana na vseh listih ista celica pa še ostaja
Jaz bi to rešil s proceduro, ki bi jo zaganjal na vsakem listu pri dogodku "Worksheet_SelectionChange".

Uporabiš lahko spodnjo proceduro:

Koda: Izberi vse

                                                                ' Procedura sinhronizira SELECT na vseh listih zvezka
                                                                ' ---------------------------------------------------
Sub SinhroSel(pNaslov As String, pList As String)               ' P1- Naslov izbrane celice, P2 - Aktivni list zvezka
  Dim nI As Integer                                             ' - Delovna spremenljivka

  Application.ScreenUpdating = False                            ' - Deaktiviram osveževanje ekrana, da ne "žmrka"
  Application.EnableEvents = False                              ' - Deaktiviram dogodke ( da preprečim zanko pri select )

  For nI = 1 To Worksheets.Count                                ' - Obdelam vse liste zvezka
    Worksheets(nI).Select                                       '   - Select tekoči list
    Range(pNaslov).Select                                       '   - Select izbrana celica
  Next nI                                                       '   - Ponovi za vse liste
  Worksheets(pList).Select                                      ' - Izberem izhodiščni list

  Application.ScreenUpdating = True                             ' - Aktiviram osveževanje
  Application.EnableEvents = True                               ' - Aktiviram dogodke
End Sub
Na vseh listih pri dogodku "Worksheet_SelectionChange" pa vpiši klic takole:

Koda: Izberi vse

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  SinhroSel Target.Address, ActiveSheet.Name                        ' Sinhroniziraj "Select" za vse liste
End Sub
Če je kakšna elegantnejša rešitev, pa počakajva Matjaža.

Lep pozdrav,
Drago
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: 3d preglednica in premikanje po listih

Odgovor Napisal/-a admin »

Pozdravljeni,

koda za premikanje med listi naprej in nazaj je dokaj trivialna. Prilagam vam makro, ki se premika naprej in nazaj (pač odvisno od parametra) in ko pride do konca/začetka se obrne. Koda je napisana tako da je preprosta za razumevanje.

Koda: Izberi vse

Option Explicit

Sub premakni(naprej As Boolean)
  Dim celica As Range: Set celica = Selection.Range("a1")
  Dim stLista As Integer: stLista = celica.Worksheet.Index
  
  Dim stNovegaLista As Integer
  
  If (naprej) Then
    If (stLista = Worksheets.Count) Then
      stNovegaLista = 1
    Else
      stNovegaLista = stLista + 1
    End If
  Else
    If (stLista = 1) Then
      stNovegaLista = Worksheets.Count
    Else
      stNovegaLista = stLista - 1
    End If
  End If
  
  Worksheets(stNovegaLista).Select
  Cells(celica.Row, celica.Column).Select
End Sub

Sub naprej()
  premakni True
End Sub

Sub nazaj()
  premakni False
End Sub
Makra naprej/nazaj pač lahko vežete na tipke ALT+nekaj.... Kar pa se tiče uporabe kolesca pa stvar nikakor ni več preprosta in presega odgovor na forumu, saj Excel ne podpira uporabe kolesca in je zato potrebno poseči po programiranju na nivoju Oken, kar pa zahteva napredno znanje programiranja.
lp,
Matjaž Prtenjak
Administrator
Odgovori