Excel VBA - makro pro přepsání dat

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

Moderátor: Mods_senior

Uživatelský avatar
Branscombe
Level 3
Level 3
Příspěvky: 469
Registrován: červen 09
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - makro pro přepsání dat

Příspěvekod Branscombe » 14 říj 2010 08:36

Typ bude vždy dlouhé celé osmimístné číslo
Tabulka bude obsahovat vždy proměnlivý počet sloupců.

Omlouvám se za neupřesněné zadání ... :blush:

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

Re: Excel VBA - makro pro přepsání dat

Příspěvekod navstevnik » 14 říj 2010 09:40

Upraveno v priloze, porad to je pracovni verze, nutno jeste osetrit nenalezeni data a typu v Tabulce.
Přílohy
PresunDat.xlsm
(28.38 KiB) Staženo 39 x

Uživatelský avatar
Branscombe
Level 3
Level 3
Příspěvky: 469
Registrován: červen 09
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - makro pro přepsání dat

Příspěvekod Branscombe » 14 říj 2010 10:06

Super, funguje jak má ... Musel jsem ještě přidat jeden řádek a sloupec, ale to jsem si již v makru ošetřil. Díky moc a já teď budu ještě chvíli testovat ... Fakt jsi dobrej, ty se tím živíš ??

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

Re: Excel VBA - makro pro přepsání dat

Příspěvekod navstevnik » 14 říj 2010 12:47

Protoze je potreba osetrit chybove stavy, pripoj sesit s tvymi upravami, at to mohu dokoncit

Uživatelský avatar
Branscombe
Level 3
Level 3
Příspěvky: 469
Registrován: červen 09
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - makro pro přepsání dat

Příspěvekod Branscombe » 14 říj 2010 13:04

Sešit asi připojit nemohu z důvodu ochrany firemních zájmů :-( Úpravy ohledně přidání řádku a sloupce a další jsem si upravil, ale mám problém s dynamickým definováním listů:

Zadal jsem následující:

Kód: Vybrat vše

Dim SS_list As String, Line  As String
 
Set SS_list = Worksheets("Main").Range("G3").Value
Set Line = Worksheets("Main").Range("H3").Value


A vyhazuje mi to s chybou "Compile error: Object required"

Kde je chyba ?? :huh:

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

Re: Excel VBA - makro pro přepsání dat

Příspěvekod navstevnik » 14 říj 2010 13:59

Chyba je v deklaraci i v prirazeni k objektu. Ukazka (na netu najdes dost informaci):

Kód: Vybrat vše

Option Explicit

Sub Ukazka()
  Dim Wbk As Workbook
  Dim SS_List As Worksheet
  Dim MyRow As Range
  Dim JmenoListu As String
  'objekt sesit
  Set Wbk = ThisWorkbook
  Debug.Print Wbk.Name
  'nebo
  Set Wbk = ActiveWorkbook
  Debug.Print Wbk.Name

  'objekt list
  Set SS_List = ActiveWorkbook.Worksheets("list1")
  Debug.Print SS_List.Name
  ' nebo: nazev listu
  Set SS_List = Wbk.Worksheets("list1")
  Debug.Print SS_List.Name
    ' nebo: nazev listu v promenne
    JmenoListu = "list1"
  Set SS_List = Wbk.Worksheets(JmenoListu)
  Debug.Print SS_List.Name
  'nebo: list prvni zleva v zobrazeni Excelu
  Set SS_List = Wbk.Worksheets(1)
  Debug.Print SS_List.Name
  'nebo: objekt List1
  Set SS_List = List1
  Debug.Print SS_List.Name
 
  ' radek
  Set MyRow = SS_List.Range("A5:AA5")
  Debug.Print MyRow.Address(0, 0)
End Sub


Nijak netouzim po firemnich datech, ale do te ukazky snad lze pridat to, co jsi pridaval. Pokud nepozadujes osetrit chybove stavy vyvolane absenci hledaneho data nebo typu, pak neni potrebne

Uživatelský avatar
Branscombe
Level 3
Level 3
Příspěvky: 469
Registrován: červen 09
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - makro pro přepsání dat

Příspěvekod Branscombe » 14 říj 2010 15:54

15:54
Tak v tom se absolutně nevyznám ... Budu zkoumat a bádat jak to vyřešit ... Potřebuji to mít proměnné s odkazem na buňku, zkusím popřemýšlet :idea:

16:56
Tak v tom opravdu tápu - nedaří se mi nastavit proměnný odkaz názvu listu na buňku :huh:

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

Re: Excel VBA - makro pro přepsání dat

Příspěvekod navstevnik » 14 říj 2010 17:47

doplneno:

Kód: Vybrat vše

Option Explicit


Sub Ukazka()
  Dim Wbk As Workbook
  Dim SS_List As Worksheet
  Dim MyRow As Range
  Dim JmenoListu As String
  Dim JmenoListuBunka As Range
  Dim JmenaListuBlok As Range, Cll As Range

  'objekt sesit
  Set Wbk = ThisWorkbook
  Debug.Print Wbk.Name
  'nebo
  Set Wbk = ActiveWorkbook
  Debug.Print Wbk.Name

  'objekt list
  ' nazev listu: list1
  Set SS_List = ActiveWorkbook.Worksheets("list1")
  Debug.Print SS_List.Name
  ' nebo: nazev listu: list1
  Set SS_List = Wbk.Worksheets("list1")
  Debug.Print SS_List.Name
  ' nebo: nazev listu v promenne
  JmenoListu = "list1"  ' nazev listu do promenne
  Set SS_List = Wbk.Worksheets(JmenoListu)
  Debug.Print SS_List.Name
  'nebo: list prvni zleva v zobrazeni Excelu
  Set SS_List = Wbk.Worksheets(1)
  Debug.Print SS_List.Name
  'nebo: objekt list: List1
  Set SS_List = List1
  Debug.Print SS_List.Name
  ' nazev listu je v List3!D4
  Set JmenoListuBunka = Wbk.Worksheets("list3").Range("d4")  ' definice bunky s nazvem
  Set SS_List = Wbk.Worksheets(JmenoListuBunka.Value)
  Debug.Print SS_List.Name
  ' nebo totez jinak
  With Wbk
    Set SS_List = .Worksheets(.Worksheets("list3").Range("d4").Value)
  End With
  Debug.Print SS_List.Name
  ' jmena listu jsou v List3!D4:D5, v D5 je neplatne
  Set JmenaListuBlok = JmenoListuBunka.Resize(2, 1)
  For Each Cll In JmenaListuBlok.Cells
    With Wbk
      On Error Resume Next ' osetreni chyby
      Set SS_List = .Worksheets(Cll.Value)
      If Err.Number <> 0 Then GoTo ErrHandler
      On Error GoTo 0
    End With
    Debug.Print SS_List.Parent.Name; " "; SS_List.Name
Pokracovat:
  Next Cll
  Debug.Print
  ' radek
  Set MyRow = SS_List.Range("A5:AA5")
  Debug.Print MyRow.Address(0, 0)

  ' odstranit objektove promenne
  Set JmenoListuBunka = Nothing
  Set JmenaListuBlok = Nothing
  Set Cll = Nothing
  Set MyRow = Nothing
  Set SS_List = Nothing
  Set Wbk = Nothing
 
  Exit Sub
ErrHandler:
  Debug.Print "Chyba v zadani nazvu listu"
  GoTo Pokracovat
End Sub

Uživatelský avatar
Branscombe
Level 3
Level 3
Příspěvky: 469
Registrován: červen 09
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - makro pro přepsání dat

Příspěvekod Branscombe » 15 říj 2010 07:23

Tak jsem to z toho vyzobnul a použil a funguje jak má ... Díky

Nevíš náhodou kde bych našel vysvětlení pojmů "String", "Integrer" atd... ??

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

Re: Excel VBA - makro pro přepsání dat

Příspěvekod navstevnik » 15 říj 2010 07:35

Zkus zacit tady: http://www.officir.ic.cz/excelentne.html - Deklarace - nutné dobro, jinak mas prece k dispozici napovedu k Excelu (promenne - typ) no a web

Uživatelský avatar
Branscombe
Level 3
Level 3
Příspěvky: 469
Registrován: červen 09
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - makro pro přepsání dat

Příspěvekod Branscombe » 15 říj 2010 12:40

Ahoj again,

mám tu další potíž s přepsání dat, tak nevím jestli kvůli tomu zakládat nové téma.
Potřebuji jednoduchou vyhledávací formulku do makra a to tak aby když na listu1 v příloze kliknu na tlačítko, aby mi překopíroval a transponoval data z oblasti D3:D20 na list2 do buněk B2:S2, ale vždy na řádek kde je ve sloupci "A" na list2 obsažena hodnota z buňky "D2" na list1.
V případě že by hodnota na list2 ve sloupci "A" nebyla, tak vložit na první volný řádek ;-)

Doufám že jsem to napsal pochopitelně a doufám že to bude opravdu pouze jednoduchý zápis, abych jej pochopil a příště už nemusel otravovat :smile:
Přílohy
test.xlsm
(10.15 KiB) Staženo 20 x

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

Re: Excel VBA - makro pro přepsání dat

Příspěvekod navstevnik » 15 říj 2010 12:45

Budu te muset zklamat, urcite bude slozitejsi nez jednoduchy
V případě že by hodnota na list2 ve sloupci "A" nebyla, tak vložit na první volný řádek

taky to muzes napsat lidsky:
Pokud neni na list2!A:A hodnota z list1!D2, transponovat list1!D3:D20 na list2!Bxx:Sxx, jinak na odpovidajici radek

PS: a zacni konecne pouzivat ovladci prvky (tlacitka a ...) z ActiveX ovladacich prvku
Naposledy upravil(a) navstevnik dne 15 říj 2010 13:03, celkem upraveno 2 x.


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • EXCEL -jak otevřít 2 excel sobory abych je viděla současne a samostatně
    od Ketty02 » 30 srp 2024 21:19 » v Vše ostatní (sw)
    2
    4774
    od Riviera kid Zobrazit poslední příspěvek
    02 zář 2024 16:21
  • Přechod z Excel 21 na Excel 24
    od Snekment » 29 led 2025 13:46 » v Kancelářské balíky
    2
    12191
    od Snekment Zobrazit poslední příspěvek
    29 led 2025 15:05
  • Pohoda a excel Příloha(y)
    od brownwld » 06 kvě 2025 17:28 » v Kancelářské balíky
    1
    4613
    od atari Zobrazit poslední příspěvek
    07 kvě 2025 09:41
  • Excel - výpočet nočních hodin Příloha(y)
    od Uziv00 » 17 říj 2024 11:22 » v Kancelářské balíky
    3
    3317
    od lubo. Zobrazit poslední příspěvek
    24 říj 2024 00:00
  • Excel 2016 - vzorec kombinace podmínek Příloha(y)
    od MK_Vs » 08 led 2025 17:56 » v Kancelářské balíky
    5
    4071
    od lubo. Zobrazit poslední příspěvek
    14 led 2025 00:51

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

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 8 hostů