Stránka 1 z 3
Tlačítko s kopírováním hodnot dle týdnu
Napsal: 08 lis 2011 09:58
od saabturboclub
Ahoj,
potřeboval bych nastavit aby se mi při stisku tlačítka hodnoty ze složky „souhrn“ přiřadily do každé záložky dle týdnu ve složce „Souhrn“ = každý týden doplňuji k názvům jiné hodnoty, které bych automaticky chtěl ať se mi do každé záložky vkládají k danému týdnu a vloží jako hodnoty a vkládat akorát hodnoty v záložce souhrn u daného názvu od sloupce „D až G“.
Děkuji za pomoc
Re: Tlačítko s kopírováním hodnot dle týdnu
Napsal: 09 lis 2011 07:46
od saabturboclub
Ahoj, nebo spíše jednodušeji tlačítko, aby první řádek s hodnotama doplňoval v první záložce s hodnotama, kde dle daného týdnu vyhledá daný týden a vloží jako hodnoty. Sloupec s týdnama v každé záložce se nebude měnit a první řádek patří k dané záložce, druhý řádek k následující...to se také nemění....záložek je pak více, ale pro příklad uvedeno jen takto příklad...jde mi spíše o vzorec, který vyhledá ve sloupci "danou hodnotu" (týden) a vloží určené data jako hodnoty v řádku
Re: Tlačítko s kopírováním hodnot dle týdnu
Napsal: 09 lis 2011 08:06
od d1amond
V buňce B3 bude vždy "Týden"? Nestane se, že by řádek zmizel nebo naopak přibyl? Jde o to, kde bude VBA procedura začínat s procházením. To samé na dalších listech. Vzhled je konečný? (kromě přibývajících listů)
Re: Tlačítko s kopírováním hodnot dle týdnu
Napsal: 09 lis 2011 09:54
od saabturboclub
Ahoj,
v záložce "souhr" bude vždy od řádku 4 ve sloupci B napsaný týden (nebo můžu udělat to,že bude napsaný vždy jen v jedné buňce aby nemusel být na každém řádku,když je stejný). Název ve sloupci "C" je defakto pro mně jen "název" dle kterého nechci ať se přiřazují hodnoty, ale vrát to tak, že hodnoty v řádku 4 (od D4:G4) budou patřit do první záložky "auta", kde zase ve sloupci "B" (B4:B55) budou vždy týdny a dle týdne v "souhrnu" aby přiřadil hodnoty (vložil jako hodnoty) k danému týdnu..... 5. řádek v souhrnu bude k záložce "šrouby" .... a v každé záložce by tabulka s týdnama měla být totožná, tak že mi stačí vytvořit aspoň jedno pravidlo a já si ho pak rozkopíruji a jen upravím třeba z jakého řádku v souhrnu má brát hodnoty a k jaké záložce je má přiřadit.
v záložkách mám pak i dynamický graf, ale kvůli velikosti jsem ani nepřikládal. Připade mi právě zbytečně zdlouhavé pokaždé hodnoty ze "souhrnu" každý týden doplńovat do daného týdnu v záložkách a vkládat jako hodnoty, bohužel i někteří jsou prostě nešikovní (kdo s tabulkou pracuje) a dokážou vše vložit úplně špatně, když jde jen o to zkopírovat daný řádek a vložit jako hodnotu:)
Děkuji Pavel
Re: Tlačítko s kopírováním hodnot dle týdnu
Napsal: 09 lis 2011 12:23
od d1amond
Já bych potřeboval nějaký pevně daný příznak, který identifikuje list. V tomto případě je to tedy "Název" na listu Souhrn = příslušný název listu (Auta, šrouby,...). Určovat listy na základě počtu řádků a jejich pořadového čísla je nepraktické, nehledě na to, že by musel být předem známý přesný počet listů a k nim odpovídající počet řádků v souhrnu = nemožnost to doplňovat o nové řádky v budoucnu.
Ten týden lze napsat třeba do A1 v Souhrnu a libovolně jej upravovat - podle toho by se tahaly hodnoty ze souhrnu do příslušných listů. Lze tak upravovat hodnoty zpětně nebo dopředu.
Re: Tlačítko s kopírováním hodnot dle týdnu
Napsal: 09 lis 2011 23:25
od saabturboclub
Ahoj,
to ano, jen jsem to chtěl pro ulehčení uvést jednodušeji, určitě by počet řádků v Souhrnu souhlasil s listama,které následují, je fakt,že pokud si listy přehážu a vytvořím nové, že jejich název v VBA je jiný a nemusí pořadím souhlasit, tak že by měl název v souhrnu souhlasit s názvem listem, který bude vložený za listem "SOUHRN", pokud je to takto jednodušší pro danou fukci. Týden bych uvedl do bunky sloučením "B4-B8" a tím bude v "B4" i když sloučený. Další rok zůstane zachováno vše stejné, akorát se vymažou tyto všechny hodnoty v daných listech a začne se zase od 1.týdne a každý týden doplňují hodnoty do daných listů. V tom souhrnu když excel zasílám kam mám,tak tam doplňuji nové hodnoty za následující týden,který byl předtím = ve ČT zašlu excel kde v souhrnu jsou data za minulej týden a doplněny i v daných listech aby byla vidět historie vývoje zpracování, následující týden opět souhrn vymažu,napíšu číslo minulého týdne,doplním hodnoty a pak doplním do daných listů. Proto mi připadlo jednodušší,když doplním v SOUHRNU daný týden s danýma hodnotama,aby mi automaticky po stisku tlačítka doplnil ty hodnoty i do daných listů, než to kopíroval růčně a vkládal jako hodnoty.
Re: Tlačítko s kopírováním hodnot dle týdnu
Napsal: 10 lis 2011 23:30
od saabturboclub
tak takovou funkci na tlačítku bych potřeboval aby mi ulehčilo práci.....
Re: Tlačítko s kopírováním hodnot dle týdnu
Napsal: 11 lis 2011 11:04
od d1amond
Během víkendu na to mrknu.
Re: Tlačítko s kopírováním hodnot dle týdnu
Napsal: 11 lis 2011 12:40
od saabturboclub
Dobře, díky moc....
Re: Tlačítko s kopírováním hodnot dle týdnu
Napsal: 12 lis 2011 23:23
od d1amond
Snad to bude podle představ. Týden je základní parametr (přepisuje i již existující!). Procedura je na tlačítko.
Kód: Vybrat vše
Option Explicit
Sub PrenesHodnoty()
Dim wsh1 As Worksheet
Dim wsh2 As Worksheet
Dim strList As String
Dim intH1 As Integer
Dim intH2 As Integer
Dim intH3 As Integer
Dim varH4 As Variant
Dim varH5 As Integer
Dim strEndMsg As String
Dim strErrMsg As String
On Error Resume Next
err.Clear
strErrMsg = ""
Set wsh1 = ThisWorkbook.Worksheets("SOUHRN")
With wsh1
.Range("C4").Select
'Nazev ze SOUHRN je parametrem fce, ktera na prislusne
'listy kopiruje data ze SOUHRN
Do While Selection <> ""
strList = ActiveCell.Value
strEndMsg = strEndMsg & Chr(13) & Chr(10) & KopirujHodnoty(strList)
ActiveCell.Offset(1, 0).Select
Loop
End With
'Kdyz se nedari
If strEndMsg <> "" Then
MsgBox strEndMsg, vbCritical
Else: MsgBox "Kopírování OK"
End If
End Sub
Public Function KopirujHodnoty(strList As String) As String
Dim wsh1 As Worksheet
Dim weekNum As Integer
Dim wsh2 As Worksheet
Dim intH1 As Integer
Dim intH2 As Integer
Dim intH3 As Integer
Dim varH4 As Variant
Dim varH5 As Integer
Dim fCell As Range
Dim strErrMsg As String
On Error GoTo 0
err.Clear
strErrMsg = ""
Set wsh1 = ThisWorkbook.Worksheets("SOUHRN")
On Error GoTo Error1:
Set wsh2 = ThisWorkbook.Worksheets(strList)
With wsh1
'nacteni hodnot
weekNum = .Range("B1").Value
intH1 = ActiveCell.Offset(0, 1).Value
intH2 = ActiveCell.Offset(0, 2).Value
intH3 = ActiveCell.Offset(0, 3).Value
varH4 = ActiveCell.Offset(0, 4).Value
varH5 = ActiveCell.Offset(0, 5).Value
End With
Set fCell = wsh2.Columns(2).Find(What:=weekNum)
With wsh2.Range(fCell.Address)
.Offset(0, 1).Value = intH1
.Offset(0, 2).Value = intH2
.Offset(0, 3).Value = intH3
.Offset(0, 4).Value = varH4
.Offset(0, 5).Value = varH5
End With
If err.Number = 0 Then
strErrMsg = ""
GoTo ExitProc
End If
Error1:
Select Case err.Number
Case 9: strErrMsg = "Chybí list:" & strList
Case Else: strErrMsg = "Neznámá chyba: " & err.Description
End Select
Resume ExitProc
ExitProc:
KopirujHodnoty = strErrMsg
Exit Function
End Function
Procedura začíná v buňce B4 na listu SOUHRN. Název ze sloupce B se použije jako parametr pro funkci "KopirujHodnoty", která vyhledá list s tímto názvem, najde na příslušném listu řádek s daným týdnem (použije číslo ze SOUHRN "B1") a zkopíruje do něj hodnoty. V případě že příslučný list nebude nalezen, skočí procedura na další název. Takto projde všechny názvy na listu SOUHR ve sloupci B.
Nakonec vyhodí buď hlášku OK, nebo vyjmenuje chybějící listy. Existující listy mají doplněné hodnoty.
Názvy a listy lze libovolně doplňovat, ale neměnit pořadí sloupců!
Re: Tlačítko s kopírováním hodnot dle týdnu
Napsal: 13 lis 2011 22:54
od saabturboclub
Ahoj, zítra zkusím přidat do určené tabulky, ale co jsem teďka na to koukal, tak je to super, lepší než jsem myslel i to běhá rychle, no paráda

zatím díky moooc, mně to teďka fakt potěšilo, Pavel
Re: Tlačítko s kopírováním hodnot dle týdnu
Napsal: 14 lis 2011 13:44
od saabturboclub
Ahoj,
ještě se chci zeptat, když bych ještě chtěl, aby uvedená funkce (tlačítko) bylo třeba vložené v excelu s názvem "_makra_" ale danou funkci aby provádělo v otevřeném excelu s názvem "prehled", tak bych měl jak přesně upravit tuto funkci?
Případně děkuji za doplnění