Makro pro Excel

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

Moderátor: Mods_senior

d1amond
člen HW spec týmu
Elite Level 12
Elite Level 12
Příspěvky: 16119
Registrován: květen 08
Bydliště: České Budějovice
Pohlaví: Muž
Stav:
Offline

Makro pro Excel

Příspěvekod d1amond » 16 pro 2008 14:32

Zdravím,
mám dotaz na pokročilé uživatele Excelu (já naprostý laik co se týče VBA atp.). Lze nějak provést automatické načtení buněk mezi listy(nebo i sešity) po stisku tlačítka? Konkrétně, na listu S2 označím jeden řádek (např. 3) a po stisknutí tlačítka na listu S1 se mi pouze některé hodnoty z S2 řádek 3 přenesou do konkrétních buněk na S1(A1,B1,C1,D1...)?
Nikdy neříkej, že to nejde, protože se najde někdo, kdo o tom neví a udělá to!
Chcete si nechat sestavit nový počítač?

Reklama
jirkaj.
nováček
Příspěvky: 9
Registrován: listopad 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Makro pro Excel

Příspěvekod jirkaj. » 16 pro 2008 18:09

No jde to. Bohuzel z tveho popisu to neni uplne jasne, ale to co si napsal splnuje nasledujici:

Sub makro()
Sheets("S2").Select
x = ActiveCell.Row
Range("A" & x & ",C" & x & ",E" & x & ",G" & x).Copy
Sheets("S1").Select
ActiveCell.PasteSpecial
End Sub

Staci priradit tlacitku na listu S1 toto makro.

d1amond
člen HW spec týmu
Elite Level 12
Elite Level 12
Příspěvky: 16119
Registrován: květen 08
Bydliště: České Budějovice
Pohlaví: Muž
Stav:
Offline

Re: Makro pro Excel

Příspěvekod d1amond » 16 pro 2008 18:58

Ještě že jsou chytřejší lidi. Podstatu jsi asi vystihnul, ale... Nějak mi tam u Range nesedí uvozovky.
A otázka je, kam se to vloží - resp. vložit by se to mělo na přesně danné místo na S1, např do buněk A5, A6, A7, A8.
De facto cílové buňky budou vždy stejné => S2 (A&x&) -> S1 (A5), atd...
Narážím na problém, jak uložit na S2 obsah buňky do proměnné y a poté vložit obsah proměnné y do konkrétní buňky v S1 - neumím to,ano..

Nějak takto, ale nejde to:
Private Sub CommandButton1_Click()
Sheets("Adresa").Select
x = Range("A1").Copy
Sheets("Form").Select
Range("A5") = x
End Sub
Naposledy upravil(a) d1amond dne 16 pro 2008 20:15, celkem upraveno 3 x.
Nikdy neříkej, že to nejde, protože se najde někdo, kdo o tom neví a udělá to!
Chcete si nechat sestavit nový počítač?

Uživatelský avatar
iMohos
Level 3.5
Level 3.5
Příspěvky: 745
Registrován: prosinec 07
Bydliště: Praha 8
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Makro pro Excel

Příspěvekod iMohos » 16 pro 2008 19:19

Spolužák měl na makro v excelu prezentaci,tak jestli ti pomůže :bigups: tak je zde
MB:ASUS M4A77TD | CPU : AMD Phenom II X4 3,2GHz@4,12 + Noctua NH-D14 |GK : MSI GTX560Ti TwinFrozrII OC @925/2100/1850 | RAM : 2x2GB DDR3 Zeppelin 1300MHz + 2x2GB OCZ LV 1300MHz | HDD : SSD OCZ Vexter4 120GB + Segate Barracuda 7200.12 500GB + WD AASD 500GB | PwR : OCZ Fatal1ty 550W | Case : Fractal Define R3

d1amond
člen HW spec týmu
Elite Level 12
Elite Level 12
Příspěvky: 16119
Registrován: květen 08
Bydliště: České Budějovice
Pohlaví: Muž
Stav:
Offline

Re: Makro pro Excel

Příspěvekod d1amond » 16 pro 2008 20:05

jj, díky, jsou to základy ale mé potřeby to nepokreje...
Nikdy neříkej, že to nejde, protože se najde někdo, kdo o tom neví a udělá to!
Chcete si nechat sestavit nový počítač?

jirkaj.
nováček
Příspěvky: 9
Registrován: listopad 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Makro pro Excel

Příspěvekod jirkaj. » 17 pro 2008 12:37

Tak to by melo vypadat takto:
Private Sub CommandButton1_Click()
Sheets("Adresa").Select
x = Range("A1").Value
Sheets("Form").Select
Range("A5") = x
End sub

d1amond
člen HW spec týmu
Elite Level 12
Elite Level 12
Příspěvky: 16119
Registrován: květen 08
Bydliště: České Budějovice
Pohlaví: Muž
Stav:
Offline

Re: Makro pro Excel

Příspěvekod d1amond » 17 pro 2008 14:29

ok, zkusím...

Private Sub CommandButton1_Click()
Sheets("A").Select
x = Range("A1").Value
Sheets("B").Select
Range("A5") = x
End Sub

Zkopírovalo se to na stejném listu z A1 do A5
Nikdy neříkej, že to nejde, protože se najde někdo, kdo o tom neví a udělá to!
Chcete si nechat sestavit nový počítač?

jirkaj.
nováček
Příspěvky: 9
Registrován: listopad 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Makro pro Excel

Příspěvekod jirkaj. » 17 pro 2008 15:02

Tomu se mi nechce věřit. Pokud máš opravdu pojmenované listy A a B pak makro načte hodnotu z listu A buňky A1 do listu B buňky A5

d1amond
člen HW spec týmu
Elite Level 12
Elite Level 12
Příspěvky: 16119
Registrován: květen 08
Bydliště: České Budějovice
Pohlaví: Muž
Stav:
Offline

Re: Makro pro Excel

Příspěvekod d1amond » 17 pro 2008 16:16

Opravdu to nejde. Zkouším to horem dolem a nic...
Když už jsme u toho brainstormingu, jak upravím x = ActiveCell.Row tak, aby mi třeba MsgBox vrátil číslo označeného řádku?
Nikdy neříkej, že to nejde, protože se najde někdo, kdo o tom neví a udělá to!
Chcete si nechat sestavit nový počítač?

jirkaj.
nováček
Příspěvky: 9
Registrován: listopad 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Makro pro Excel

Příspěvekod jirkaj. » 17 pro 2008 16:40

x = ActiveCell.Row
a = MsgBox("Číslo řádku je " & x, vbInformation, "Zpráva")

k tomu předchozímu to můžeš napsat takto:
Private Sub CommandButton1_Click()
x = Sheets("A").Range("A1").Value
Sheets("B").Range("A5") = x
End Sub

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

Re: Makro pro Excel

Příspěvekod navstevnik » 17 pro 2008 17:17

Vracim se k puvodnimu pozadavku tazatele:
Na listu S2 vybrat radek, po stisku tlacitka na listu S1 prenest z listu S2 urcene bunky na list S1 do bunek A1,B1,...
tomuto pozadavku vyhovi neco takoveho - udalostni procedura v modulu Listxx(jmenolistu):

Kód: Vybrat vše

Option Explicit

Private Sub CommandButton1_Click()
  Dim Bunky As Range, r As Long, i As Integer, Cil As Range, c As Range
  'definice bunek, ktere maji byt preneseny ze zdrojoveho S2- vychozi pro prvni radek,
  'poradi urcuje, jak budou serazeny na cilovem listu S1
  Set Bunky = Worksheets("list2").Range("a1, g1, c1:e1, i1:j1")  ' priklad
  'cislo aktivniho radku na listu S2
  Application.ScreenUpdating = False
  Worksheets("list2").Select
  r = ActiveCell.Row
  Worksheets("list1").Select
  Application.ScreenUpdating = True
  'definice cile na listu S1
  Set Cil = Worksheets("list1").Range("a1")
  i = 0
  'prenos bunek z listu S2 na list S1
  For Each c In Bunky.Offset(r - 1, 0).Cells
    Cil.Offset(0, i).Value = c.Value
    i = i + 1
  Next c
End Sub


  • 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
    4736
    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
    12159
    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
    4512
    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
    3290
    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
    4037
    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 6 hostů