EXCEL makro - vyhledani a kopie radku Vyřešeno

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

Moderátor: Mods_senior

jiri255
Level 1.5
Level 1.5
Příspěvky: 105
Registrován: leden 13
Pohlaví: Muž
Stav:
Offline

EXCEL makro - vyhledani a kopie radku

Příspěvekod jiri255 » 16 pro 2015 17:17

Zdravím,
chtěl bych požádat o radu ohledně jednoho makra. Makro funguje tak, že když na listu2
zadám do buňky "B2" číselný kód, tak ho to po ENTRU porovná s kódy na listu1 a pokud
kód souhlasí,tak to odečte množství o "1" pokud to kód nenajde, tak to vyhodí hlášku,
že kód nebyl nalezen. To všechno funguje skvěle, ale já bych ještě potřeboval, že když
ten kód souhlasí a odečte to to množství, tak by to mělo ještě ten celý řádek s tím nalezeným
kódem překopírovat na list2 do řádku "A10" a pokud zadám další kód a ENTER, tak by to
mělo ten nalezený řádek překopírovat do další následné buňky "A11" a tak dále.
Doplnil, jsem tam to kopírování, ale myslím, že na to jdu špatně, protože to nefunguje
dobře a kopíruje to jen tu buňku s tím množstvím a kód ani název s toho řádku
to nezkopíruje :-(
Mohl by mi s tím někdo poradit?
Předem moc děkuji za případnou pomoc a přikládám makro + vzorový excel.

kody.xls
(40 KiB) Staženo 39 x


Kód: Vybrat vše

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$B$2" Then
    If Not IsEmpty(Target) Then
      On Error Resume Next
      With Sheets("List1").Cells(Application.WorksheetFunction.Match(Target.Value, Sheets("List1").Columns(1), 0), 2)
        If Err.Number = 0 Then
        .Value = .Value - 1
        .Copy = .Copy.Range("A:C").Select      'toto jsem doplnil
        Sheets("List2").Select                   'toto jsem doplnil
        Range("A10").Select              'toto jsem doplnil
        ActiveSheet.Paste               'a toto jsem doplnil
        Target.ClearContents
        Range("B2").Select
      Else
        MsgBox "Neznámý kód!"
        Range("B2").Select
      End If
      End With 'Sheets("List1").Cells(Application.WorksheetFunction.Match(Target.Value, Sheets("List1").Columns(1), 0), 2)
      On Error GoTo 0
    End If
 End If

Reklama
cmuch
Level 4.5
Level 4.5
Příspěvky: 1544
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: EXCEL makro - vyhledani a kopie radku

Příspěvekod cmuch » 17 pro 2015 20:23

Trochu jsem to poupravil

Kód: Vybrat vše

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim SrcRange As Range
 Dim FindRow As Integer, NewRow As Integer

  If Target.Address = "$B$2" Then
    If Not IsEmpty(Target) Then
      Application.EnableEvents = False
      On Error Resume Next
      With Sheets("List1").Cells(Application.WorksheetFunction.Match(Target.Value, Sheets("List1").Columns(1), 0), 2)
        FindRow = .Row
        Set SrcRange = Sheets("List1").Range("A" & FindRow & ":C" & FindRow)
        If Err.Number = 0 Then
        .Value = .Value - 1
          With Sheets("List2")
            NewRow = .Cells(Rows.Count, "A").End(xlUp).Row + 1
            .Range("A" & NewRow & ":C" & NewRow).Value = SrcRange.Value
          End With 'Sheets("List2")
          Range("B2").ClearContents
        Else
          MsgBox "Neznámý kód!"
        End If
      End With 'Sheets("List1").Cells(Application.WorksheetFunction.Match(Target.Value, Sheets("List1").Columns(1), 0), 2)
      On Error GoTo 0
      Application.EnableEvents = True
    End If
  End If
  Range("B2").Select
End Sub

jiri255
Level 1.5
Level 1.5
Příspěvky: 105
Registrován: leden 13
Pohlaví: Muž
Stav:
Offline

Re: EXCEL makro - vyhledani a kopie radku

Příspěvekod jiri255 » 17 pro 2015 20:36

odzkoušel jsem, ale nějak mi to nefunguje, když na listu2 zadám do B2 kód třeba 2222,
tak to jen přesune to číslo 2222 do buňky A1 a pak to vyhodí chybu, problém v makru
u tohoto řádku "Range("B2").Select"

Dodatečně přidáno po 10 hodinách 47 minutách 18 vteřinách:
tak ono to makro funguje, tak jak jsem potřeboval jen tomu vadí ten "list2",
když jsem to změnil:

Kód: Vybrat vše

With Sheets("List2")

na list3, tak se po vyplnění buňky B2 existujícím kódem, množství
na listu1 poníží o -1 a zároveň se řádek zkopíruje na list3 což je super,
ale kopírování začíná na řádku A2 což je asi ten důvod proč to na tom
listu2 nefunguje...
Nemůžu v tom makru přijít na to, jak mu říct, aby začínal vkládat ty
zkopírované řádky až od řádku A10 a ještě lze nějak ošetřit, když klesne
odečítáním množství na "0" ,aby vyhodil hlášku, že ten kód již nelze odečítat,
protože je množství na nule a nepokračoval v odečítání na -1, -2, atd.?

cmuch
Level 4.5
Level 4.5
Příspěvky: 1544
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: EXCEL makro - vyhledani a kopie radku

Příspěvekod cmuch » 29 led 2016 16:58

Tady je úprava, normálně jde i na List2

Kód: Vybrat vše

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim SrcRange As Range
 Dim FindRow As Integer, NewRow As Integer

  If Target.Address = "$B$2" Then
    If Not IsEmpty(Target) Then
      Application.EnableEvents = False
      On Error Resume Next
      With Sheets("List1").Cells(Application.WorksheetFunction.Match(Target.Value, Sheets("List1").Columns(1), 0), 2)
        FindRow = .Row
        Set SrcRange = Sheets("List1").Range("A" & FindRow & ":C" & FindRow)
        If Err.Number = 0 Then
        If .Value <= 0 Then
            MsgBox "Zboží je na nule !", vbCritical
            GoTo konec
         End If
        .Value = .Value - 1
          With Sheets("List2")
            NewRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
            If NewRow < 10 Then NewRow = 10
            .Range("A" & NewRow & ":C" & NewRow).Value = SrcRange.Value
          End With 'Sheets("List2")
          Range("B2").ClearContents
        Else
          MsgBox "Neznámý kód!"
        End If
      End With 'Sheets("List1").Cells(Application.WorksheetFunction.Match(Target.Value, Sheets("List1").Columns(1), 0), 2)
konec:
      On Error GoTo 0
     
      Application.EnableEvents = True
    End If
  End If
  Range("B2").Select
End Sub


jiri255
Level 1.5
Level 1.5
Příspěvky: 105
Registrován: leden 13
Pohlaví: Muž
Stav:
Offline

Re: EXCEL makro - vyhledani a kopie radku  Vyřešeno

Příspěvekod jiri255 » 29 led 2016 19:35

děkuji cmuchovi za úpravu :thumbup: je to úplně super a funguje to naprosto perfektně :bigups:
přesně tohle jsem potřeboval. Ještě jednou moc díky


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • excel text na konec více řádků najednou Příloha(y)
    od Myerina » 03 led 2024 11:51 » v Kancelářské balíky
    5
    907
    od Zivan Zobrazit poslední příspěvek
    04 led 2024 09:42
  • Kopírování řádků s funkcí když Příloha(y)
    od Martyn20 » 20 črc 2023 16:50 » v Kancelářské balíky
    3
    1912
    od Melvidor Zobrazit poslední příspěvek
    21 črc 2023 08:41
  • Ukotvení prvního a posledního řádku v tabulce.
    od Kopusek » 13 pro 2023 10:50 » v Kancelářské balíky
    2
    1543
    od Kopusek Zobrazit poslední příspěvek
    14 pro 2023 08:55
  • Makro pro myš Rapture Python
    od mmmartin » 27 srp 2023 15:18 » v Problémy s hardwarem
    9
    1125
    od mmmartin Zobrazit poslední příspěvek
    29 srp 2023 16:47
  • Excel a OneDrive
    od sginfo » 11 zář 2023 15:28 » v Kancelářské balíky
    16
    6243
    od mirekol Zobrazit poslední příspěvek
    20 říj 2023 08:31

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

Kdo je online

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