Ahoj,
přikládám příklad jak to řeším teď (je to jen ilustrační soubor). Snad to pomůže mě lépe pochopit :-)
List DB = momentální řešení pomocí foťáku a úpravy pozice grafů během "Selection Change"
List Grafy = vyhodnocení a podklady pro grafy + grafy které se přes foťák přenáší do listu DB.
List DB2 = jak bych rád aby to fungovalo - pomocí formuláře. Momentálně tam je statický obrázek, ale ten bych rád měnil s každou změnou grafu.
Díky
M@
Ahoj, fotoaparátem to řeším momentálně, ale znamená to mít na daném listu objekt (ten fotonáhled) který si momentálně posouvám dle vybrané buňky, tak abych grafy měl vždy vlevo nahoře (takový skoro floating náhled :-) ). Ovšem přesouvat objekt po listu pomocí makra znamená znemožnění funkce "Zpět".
Proto se snažím dostat grafy na VBA formulář - kéžby to šlo dostat foťákem na formulář, ale bohužel.
Cílem je aby daný list sloužil jen jako DB bez jakýchkoliv objektů - proto VBA formulář.
Díky
M@
Ahoj,
nanapadne někoho jak graf z listu přenést na VB formulář, tak aby zůstal propojen?
Rád bych měl tabulku do které se budou zapisovat data (list DB), tyto data se na jiném listu vyhodnocují a vynášejí do grafu. A já bych rád aby uživatel při zadávání v listu DB viděl grafy, ale ne jako objekt na daném listu - tam chci jen data.
Jediné co mě zatím napadlo je list s grafy otevřít jako nové okno - to pak uživatel ty grafy při zadávání vidí, ale jen do doby kdy maximalizuje okno s DB, nebo překryje list s grafy. Rád bych to zobrazení měl vždy na vrchu. Pravda mohl bych zamknout rozložení, ale ne všichni mají stejné rozlišení a asi by nebylo ideální to nastavovat podle sebe :-).
Nějak mě nenapadá jak na to, tak budu rád za jakékoliv tipy.
Díky
M@
Ahoj,
šlo :-). Stačí si na list přidat nějaký objekt(tlačítko, obrázek, tvar, prostě něco) nastavit ve vlstnostech "Přesun Buňěk bez objektu" (to aby se nám neschovával) a pak přiřadit makro. Jako kód pak vložit:If Columns("A:AY").EntireColumn.Hidden = False Then
Columns("A:AY").EntireColumn.Hidden = True
Rows("3:12").EntireRow.Hidden = True
Else
Columns("A:AY").EntireColumn.Hidden = False
Rows("3:12").EntireRow.Hidden = False
End If
M@
Ahoj,
tady je to pomocí DB funkce DZÍSKAT.
M@
Možnosti mě napadají 3.
1) vytvořit si pomocný sloupec do kterého bych sloučil hodnoty ze sloupce A a B a vyhledával bych pak v něm.
2) databázová funkce DZÍSKAT (vyžaduje kritéria)
3) skálární součin viz. článek http://wall.cz/filtrovani-funkci-soucin.skalarni.a12.html
M@
to bude chtít přílohu.
M@
Ahoj,
asi bude snažší použít makro, než vymýšlet nějaký kostrbatý vzorec.
Public Sub vzorce()
Dim rdfix As Single
Dim pocitadlo As Single
rdfix = 3
pocitadlo = 5
For rd = 3 To ActiveSheet.UsedRange.Rows.Count
Cells(rd, 3).Formula = "=$B" & rd & "+$B$" & rdfix
pocitadlo = pocitadlo - 1
If pocitadlo = 0 Then
rdfix = rdfix + 1
pocitadlo = 5
End If
Next
End Sub
toto makro by mělo výsledek zapsat do sloupce C.
M@
Ahoj,
šlo by to řešit úplně stejným způsobem s tím že skoro všechny řádka napíšeš tolikrát kolik máš listů. Další možností by byla smyčka.
A poslední co mě napadá, co by bylo první co bych zkusil je excelová funkce fotoaparát jen teda nevím kde ji v 2007 hledat :-), u 2003 je to:
Zobrazit -> Panely Nástrojů -> Vlastní -> Záložka: Příkazy -> Kategorie: Nástroje -> Příkazy: Fotoaparát
Kdyby se to mělo řešit makrem, tak to chce přílohu s těmi listy.
M@
Když to přidáš na každý list kde to chceš zobrazit, tak by to mělo jít - teda formulář vždy pro daný list.
Private Sub Worksheet_Activate()
Activesheet.ShowDataForm
End Sub
M@
Pokus v příloze.
M@
Mě záznam makra funguje :-), nemáš ty Office 2007 - tam je to prý nějaký slabší.
Formulář lze vyvolat ať stiskem tlačítka, nebo při otevření pomocí např.:
List1.ShowDataForm
Teda pokud jsem pochopil otázku :-).
M@
Když tak koukám na ten příklad tak by klidně šlo použít: Cells(NextRow, 1) = nextrow-2
kdy -2 = dva řádky hlavičky :-), ale sám bych šel cestou vyhledání nejvyšší hodnoty ve sloupci A a k té bych přičetl 1:Cells(NextRow, 1) = Application.WorksheetFunction.Max(Range("A:A")) + 1
M@
Ahoj,
to není jen o uložení, tady je potřeba vytvořit nový soubor.
Příklad níže vyžaduje na každém listu v buňce A1 cestu k souboru do jakého by se měl uložit. V buňce B3 pak číslo k vyhodnocení.
Public Sub ulozeni()
For i = 1 To ActiveWorkbook.Sheets.Count
If Sheets(i).Cells(3, 2) > 1 Then
Sheets(i).Copy
ActiveWorkbook.SaveAs Filename:=Cells(1, 1), FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Close xlNo
End If
Next
End Sub
M@
Ahoj,
co takhle označit řádek jedenáct, zmáčknout Shift (držet) a stisknout (a pustit) klávesu End, následně stisknout (a pustit) klávesu Šipka dolů (teď už je možno pustit Shift). Označí se ti všchny řádky od 11. až dolů (teda alespoň u 2003, vzhledem k milionu řádků předpokládám, že máš 2007, ale mělo by to fungovat snad i tam).
Další možností jsou makra, ale do toho bych se zatím nepouštěl :-).
M@
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.