VBA - prenos dat bunek na ruzne listy, dalsi prazdny radek Vyřešeno

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

MK_Vs
Level 2
Level 2
Příspěvky: 185
Registrován: červen 10
Pohlaví: Nespecifikováno
Stav:
Offline

VBA - prenos dat bunek na ruzne listy, dalsi prazdny radek  Vyřešeno

Příspěvekod MK_Vs » 15 zář 2010 08:54

Dobrý den,

v některém z minulých témat bylo popsáno jak přenést data z určitého listu - rozsahu na jiný list, vždy na následující prázdné místo.

Mám provádět několikrát denně měření různých definovaných hodnot, tyto zapisovat. Zapisováno má být na papír, což nepovažuji za vhodné a raději bych zapisoval přímo do Excelu než poté přepisovat.

V přiloženém soboru je nádled vstupních dat + vzor výstupního listu.

Jak zkopíruji vždy pouze vyplněné buňky, nebo celý rozsah B5:J5; B11:J11 atd. do cílových listů 1 - 56, tak aby bylo vkládáno vždy na následující prázdný řádek listu 1 - 56 podle číselného označení v buňkách J2; J8 ...?

Další popis je přiloženém soboru.

Děkuji.
Přílohy
uvolneni.zip
(80.3 KiB) Staženo 50 x
Naposledy upravil(a) MK_Vs dne 15 zář 2010 18:18, celkem upraveno 2 x.

Reklama
navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: VBA - prenos dat bunek na ruzne listy, dalsi prazdny rad

Příspěvekod navstevnik » 15 zář 2010 13:18

1. tlačítkem přenést jen vyplněné hodnoty z listu „Vstupní data“ do záložek s názvy podle čísel ze sloupců J a U (1; 2; .... 56).
2. Přenést vždy na následující prázdný řádek v samostatném listu. Vkládat Vložit jako - hodnoty - pouze pro vyplněné položky. Rozhodující pro přenos je aby byla vyplněna alespoň jedna buňka pro hodnotu (číslo, nebo text). Potom je možno vložit i datum, čas, prac. a poznámka (celou oblast b5:j5)
3. Smazat na listu Vstupní data bílá políčka
4. Konečná pozice na B5, Vstupní data
5. Uložit

6. GRAF definice není přesně vyřešena - spojnicový graf pro jednotlivé položky, na stejném listu, který se bude průběžně doplňovat z hodnot, které budou postupně přibývat. V grafu vložení linek maximum E3, minimum G3, střed I3. Graf č. 1 pro hodnoty z řádků D-H. Graf č. 2 pro hodnoty ze sloupců D - H. Popisky budou vždy datum sl.B a R-O nebo N sl.C.


ad 1. co sloupce AF, AQ, dalsi zalozky vlozi kdo? V I2:I3 je Leden/2010, v B11 je 15.9. ???
ad 5. Co to znamena???
ad 6. Pro kazdy radek (sloupec) pozadujes samostatny graf? nebo to ma byt skupinovy graf (pro hodnotu 1 vsechny radky,...), pak to bude graf skupinovy sloupcovy.

MK_Vs
Level 2
Level 2
Příspěvky: 185
Registrován: červen 10
Pohlaví: Nespecifikováno
Stav:
Offline

Re: VBA - prenos dat bunek na ruzne listy, dalsi prazdny rad

Příspěvekod MK_Vs » 15 zář 2010 13:45

ad1. - J, U, AF, AQ, není nutno řešit, bude linkováno jako pevné.
- záložky vytvořím, budou rovněž pevné jako předloha
- Leden / 2010 - zde vložím období pro jaké jsou hodnoty. Může být i týden. Pro přenos nepodstatné. Rovněž linkováno pevně.
ad5. - CTRL+S
ad6. - graf je uložen v záložce 1, data vybírána v jednom pro řádek, v drujém pro sloupec. V tomto ale nemám zatím jasno. Musím zkoušet.

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: VBA - prenos dat bunek na ruzne listy, dalsi prazdny rad

Příspěvekod navstevnik » 15 zář 2010 16:07

Tady je pracovni verze procedury prenasejici data z listu Vstupni data na listy 1, 2, 3:

Kód: Vybrat vše

Option Explicit

Sub VstupToZalozka()
  Dim SWsht As Worksheet, SBlkBJRef As Range, SBlkBJ As Range, PodBlok As Range
  Dim i As Byte, j As Byte
  Dim TWsht As Worksheet, TBlk As Range, TOfsR As Long
  Dim TWshtN As String, SBlkEmpty As Range

  Set SWsht = Worksheets("Vstupni data")
  With SWsht
    Set SBlkBJRef = .Range("b5:j5")
    Set PodBlok = .Range("j2")  ' poradove cislo podbloku --> zalozka
  End With
  For i = 0 To 3  ' 4 bloky dat
    For j = 0 To 13  ' 14 podbloku v bloku
      TWshtN = PodBlok.Offset(6 * j, 11 * i).Value  ' nazev zalozky
      'Debug.Print PodBlok.Offset(6 * j, 11 * i).Address; " "; SBlkBJ.Offset(6 * j, 11 * i).Address; " "; TWshtN
      Set SBlkBJ = SBlkBJRef.Offset(6 * j, 11 * i)  ' podblok
      ' overeni neprazdnosti v bunkach Dxx:Jxx
      Set SBlkEmpty = Nothing
      On Error Resume Next
      Set SBlkEmpty = SBlkBJ.Resize(1, SBlkBJ.Columns.Count - 2).Offset(0, 2).SpecialCells(xlCellTypeConstants, xlNumbers)
      On Error GoTo 0
      If Not SBlkEmpty Is Nothing Then  ' jsou neprazdne Dxx:Jxx
        On Error Resume Next
        Set TWsht = ActiveWorkbook.Worksheets(TWshtN)  ' definovat cilovy list
        If Err.Number <> 0 Then GoTo ErrHandler1  ' neni zalozen
        'Debug.Print TWsht.Name
        With TWsht
          TOfsR = .Range(.Range("b3"), .Range("b3").End(xlDown)).Rows.Count - 2 ' ofset volneho radku na cilovem listu
          Set TBlk = .Range("b5:j5").Offset(TOfsR, 0) ' definovat cilovy radek
          'Debug.Print TBlk.Address
          TBlk.Value = SBlkBJ.Value ' prenest hodnoty
        End With
        On Error GoTo 0
      End If
Cont:
    Next j
  Next i
  Exit Sub
ErrHandler1:
  On Error GoTo 0
  GoTo Cont
End Sub

over funcnost, jsou osetreny neexistujici cilove listy.

MK_Vs
Level 2
Level 2
Příspěvky: 185
Registrován: červen 10
Pohlaví: Nespecifikováno
Stav:
Offline

Re: VBA - prenos dat bunek na ruzne listy, dalsi prazdny rad

Příspěvekod MK_Vs » 15 zář 2010 16:18

Dobrý den, děkuji, za návrh. Funguje ve vloženém souboru, který je u tohoto tématu.

Do původního dotazu vložen soubor se všemi listy.

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: VBA - prenos dat bunek na ruzne listy, dalsi prazdny rad

Příspěvekod navstevnik » 15 zář 2010 16:28

Soubor je kde? Co je puvodni dotaz>

MK_Vs
Level 2
Level 2
Příspěvky: 185
Registrován: červen 10
Pohlaví: Nespecifikováno
Stav:
Offline

Re: VBA - prenos dat bunek na ruzne listy, dalsi prazdny rad

Příspěvekod MK_Vs » 15 zář 2010 18:19

Nyní je už správně nahrazen u původního dotazu.

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: VBA - prenos dat bunek na ruzne listy, dalsi prazdny rad

Příspěvekod navstevnik » 15 zář 2010 21:42

Uvedena procedura mela osetren stav, kdy nebyly zalozeny vsechny listy 1 - 56.
Nize je doplnena o vyprazdneni bunek Dxx:Jxx a o ulozeni souboru:

Kód: Vybrat vše

Option Explicit

Sub VstupToZalozka()
  Dim SWsht As Worksheet, SBlkBJRef As Range, SBlkBJ As Range, PodBlok As Range
  Dim i As Byte, j As Byte
  Dim TWsht As Worksheet, TBlk As Range, TOfsR As Long
  Dim TWshtN As String, SBlkEmpty As Range

  Set SWsht = Worksheets("Vstupni data")
  With SWsht
    Set SBlkBJRef = .Range("b5:j5")
    Set PodBlok = .Range("j2")  ' poradove cislo podbloku --> zalozka
  End With
  For i = 0 To 3  ' 4 bloky dat
    For j = 0 To 13  ' 14 podbloku v bloku
      TWshtN = PodBlok.Offset(6 * j, 11 * i).Value  ' nazev zalozky
      'Debug.Print PodBlok.Offset(6 * j, 11 * i).Address; " "; SBlkBJ.Offset(6 * j, 11 * i).Address; " "; TWshtN
      Set SBlkBJ = SBlkBJRef.Offset(6 * j, 11 * i)  ' podblok
      ' overeni neprazdnosti v bunkach Dxx:Jxx
      Set SBlkEmpty = Nothing
      On Error Resume Next
      Set SBlkEmpty = SBlkBJ.Resize(1, SBlkBJ.Columns.Count - 2).Offset(0, 2).SpecialCells(xlCellTypeConstants, xlNumbers)
      On Error GoTo 0
      If Not SBlkEmpty Is Nothing Then  ' jsou neprazdne Dxx:Jxx
        On Error Resume Next
        Set TWsht = ActiveWorkbook.Worksheets(TWshtN)  ' definovat cilovy list
        If Err.Number <> 0 Then GoTo ErrHandler1  ' neni zalozen
        On Error GoTo 0
        'Debug.Print TWsht.Name
        With TWsht
          TOfsR = .Range(.Range("b3"), .Range("b3").End(xlDown)).Rows.Count - 2  ' ofset volneho radku na cilovem listu
          Set TBlk = .Range("b5:j5").Offset(TOfsR, 0)  ' definovat cilovy radek
          'Debug.Print TBlk.Address
          TBlk.Value = SBlkBJ.Value  ' prenest hodnoty
          SBlkBJ.Resize(1, SBlkBJ.Columns.Count - 2).Offset(0, 2).ClearContents  ' vyprazdnit radek Dxx:Jxx
        End With
      End If
Cont:
    Next j
  Next i
  ActiveWorkbook.Save
  Set TBlk = Nothing
  Set TWsht = Nothing
  Set PodBlok = Nothing
  Set SBlkBJ = Nothing
  Set SBlkBJRef = Nothing
  Set SWsht = Nothing
  Exit Sub
ErrHandler1:
  On Error GoTo 0
  GoTo Cont
End Sub

Tlacitko pouzij z Panely nastroju> Ovladaci prvky, nikoliv Formulare, zavolat proceduru VstupToZalozka zvladnes.
Body 1-5 z prilozeneho souboru jsou tedy splneny, bod 6 je tvoje parketa.

MK_Vs
Level 2
Level 2
Příspěvky: 185
Registrován: červen 10
Pohlaví: Nespecifikováno
Stav:
Offline

Re: VBA - prenos dat bunek na ruzne listy, dalsi prazdny rad

Příspěvekod MK_Vs » 16 zář 2010 05:52

Dobrý den, děkuji za úpravu.

Snad ještě dotaz, pokud by bude v buňce hodnotou písmeno, přenos neproběhne. Pokud zadám „x“ nebo „o“. Lze očetřit přenos nejen čísel ale i písmen?


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Různé způsoby souhlasu s cookies. Příloha(y)
    od mmmartin » 26 led 2024 15:14 » v PC-HELP - připomínky k fóru
    38
    6335
    od Ltb Zobrazit poslední příspěvek
    18 úno 2024 20:52
  • Výběr zásuvkové lišty (prodlužovačka) Příloha(y)
    od Speedhack » 09 zář 2023 15:08 » v Vše ostatní (hw)
    14
    3621
    od faraon Zobrazit poslední příspěvek
    12 zář 2023 20:02
  • Excel - z jedné tabulky automaticky vytvořené jednotlivé listy Příloha(y)
    od yanetta » 09 říj 2023 10:55 » v Kancelářské balíky
    3
    3536
    od elninoslov Zobrazit poslední příspěvek
    10 říj 2023 11:38
  • Přenos product key na druhé PC Příloha(y)
    od sasshrek » 21 lis 2023 17:11 » v Windows 11, 10, 8...
    8
    1620
    od sasshrek Zobrazit poslední příspěvek
    22 lis 2023 08:45
  • Přenos souborů SD - USB flash bez PC
    od Asanoth » 29 črc 2023 17:35 » v Sítě - hardware
    11
    2092
    od Grander Zobrazit poslední příspěvek
    30 črc 2023 15:20

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Facebook [Bot] a 42 hostů