..|| Blog || Produkti/Storitve || MExcel || MDodatki || 300 nasvetov ||..

3d preglednica in premikanje po listih

Pomoč pri delu z MS Excelom

3d preglednica in premikanje po listih

OdgovorNapisal/-a mipax » Sr feb 18, 2015 11:25 am

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
mipax
 
Prispevkov: 57
Pridružen: Po avg 01, 2005 9:37 pm



Matjazev.NET
 

Re: 3d preglednica in premikanje po listih

OdgovorNapisal/-a dragopre » Sr feb 18, 2015 7:37 pm

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
dragopre
 
Prispevkov: 75
Pridružen: To dec 11, 2012 11:46 pm

Re: 3d preglednica in premikanje po listih

OdgovorNapisal/-a admin » Sr feb 18, 2015 9:48 pm

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
admin
Site Admin
 
Prispevkov: 3532
Pridružen: Sr jul 20, 2005 10:06 pm


Vrni se na Excel

Kdo je prisoten

Po forumu brska: 0 registriranih uporabnikov in 4 gostov

cron