Prosím o úpravu kódu. Děkuji *

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

Moderátor: Mods_senior

Odpovědět
junis
nováček
Příspěvky: 46
Registrován: 25 bře 2022 21:21

Prosím o úpravu kódu. Děkuji *

Příspěvek od junis »

Dobrý den.
Jak změnit zápis, aby provedl zápis do buněk (doplnění), když bude nějaká hodnota ve sloupci 15 . (Tlačítkem)
Ve sloupci 15 mám vzorec =IFERROR(SVYHLEDAT(J2;datovepole!$C$4:$D$2000;2;NEPRAVDA);"") a doplní mi to jen když do sloupce 15 provedu změnu ručně.
Prostě do sloupce 15 se mi vzorcem zapisují data a já potřebuji pomocí vba zajistit, aby pokud bude v řádku ve sloupci 15 nějaká hodnota mít doplněny buňky vleno viz níže

Kód: Vybrat vše

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Sledovana_oblast As Range
Dim a As Integer
Dim b As Integer

    Set Sledovana_oblast = Range("O4:O2000") 'kontrolované buňky ve sloupci O

         If Not Intersect(Target, Sledovana_oblast) Is Nothing Then
         
            a = Target.Row
        
             With Target(1, -2) 'první řádek slupce K
            
             .Value = Now
            
             .EntireColumn.AutoFit 'automatická šíře sloupce
            
             .Offset(0, -1) = 1
            
             End With
        
         End If
 
End Sub

Chtěl bych to, přepsat to a makro spustit tlačítkem, kdy by se mi pak doplnilo více hodnot na jedno kliknutí

Děkuji pěkně
Uživatelský avatar
Grimm
Level 2
Level 2
Příspěvky: 165
Registrován: 30 zář 2017 20:50

Re: Prosím o úpravu kódu. Děkuji *

Příspěvek od Grimm »

???

Kód: Vybrat vše

Sub Test()

Dim Sledovana_oblast(), Datova_oblast()
Dim i As Integer
With List1		'CodeName listu si případně změň podle svého souboru
    Sledovana_oblast = List1.Range("O4:O2000").Value
    ReDim Datova_oblast(1 To UBound(Sledovana_oblast), 1 To 2)
    
        For i = LBound(Sledovana_oblast) To UBound(Sledovana_oblast)
            If Sledovana_oblast(i, 1) <> "" Then
                Datova_oblast(i, 1) = 1
                Datova_oblast(i, 2) = Now
            End If
        Next i
        
    With .Range("J4")
            .Resize(UBound(Datova_oblast, 1), 2).Value = Datova_oblast
            .Offset(, 1).EntireColumn.AutoFit 'automatická šíře sloupce
    End With
End With
Erase Sledovana_oblast
Erase Datova_oblast
End Sub
junis
nováček
Příspěvky: 46
Registrován: 25 bře 2022 21:21

Re: Prosím o úpravu kódu. Děkuji *

Příspěvek od junis »

Ano, děkuji funguje dle požadavku.
Chtěl jsem to použít po úpravách i jinam ale na větší sledovanou oblast než 30000 řádků to nelze.
Uživatelský avatar
Grimm
Level 2
Level 2
Příspěvky: 165
Registrován: 30 zář 2017 20:50

Re: Prosím o úpravu kódu. Děkuji *

Příspěvek od Grimm »

Pro příště, bylo by vhodné uvést případnou chybovou hlášku, nebo kde v kódu dojde k chybě než konstatovat - nelze.

Tady bude "zádrhel" v deklaraci proměnné:
Dim i As Integer změn na Dim i As Long
junis
nováček
Příspěvky: 46
Registrován: 25 bře 2022 21:21

Re: Prosím o úpravu kódu. Děkuji *

Příspěvek od junis »

"Grimm" přímo perfektní.
Moc a moc děkuju.
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Grafická karta pro úpravu videa
    od hanoj » » v Rady s výběrem hw a sestavením PC
    0 Odpovědi
    349 Zobrazení
    Poslední příspěvek od hanoj
  • Grafická karta na úpravu videa
    od hanoj » » v Rady s výběrem hw a sestavením PC
    4 Odpovědi
    4169 Zobrazení
    Poslední příspěvek od petr22
  • Nový stroj pro Fotofgrafa na úpravu fotek
    od vokuca » » v Rady s výběrem hw a sestavením PC
    13 Odpovědi
    5379 Zobrazení
    Poslední příspěvek od Alferi
  • PC nenaběhl - prosím o rady
    od michal84 » » v Problémy s hardwarem
    5 Odpovědi
    3298 Zobrazení
    Poslední příspěvek od michal84
  • Prosím o radu se sestavením pc
    od Patrik54321 » » v Rady s výběrem hw a sestavením PC
    5 Odpovědi
    2554 Zobrazení
    Poslední příspěvek od Patrik54321

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