Naučit se SQL Naučit se SQL
Pouze tento týden až 80% sleva na SQL jazyky
Zamiluj si programování! Až 80 % bodů na prémiový obsah zdarma. Více informací

Diskuze: VBA v Excel

Software Microsoft Office a kancelářské aplikace VBA v Excel American English version English version

Aktivity (1)
Avatar
gorshok
Člen
Avatar
gorshok:23.8.2017 13:37

Dobrý den, mám takový problém. Mám velkou tabulku v Excelu, která se importuje do DB pomoci skriptu. Importuje se řádek po řádku, nehledě na to, že 90% řádku nebylo upraveno - je zbytečné je importovat. Napadlo mě, že by se dalo importovat jen změněné řádky, tím by se import mnohem zrychlil. Našel sem na webu jak nastavit pomoci makra, aby se při změně buněk A1 až X1 na prvním řádku v buňce Y1 propsalo, že řádek byl změněn, teď bych to potřeboval rozšířit na cely sešit. To znamená, že při úpravě buněk A2 až X2 se informace o změně propsala do buňky Y2, pří úpravě buněk A3 až X3 se změna propsala do Y3 atd. Nevíte někdo, jak to můžu udělat?
Přikladam kod, ktery teď mám... Děkuji za pomoc

Private Sub Worksheet_Chan­ge(ByVal Target As Range)
Dim KeyCells As Range

Set KeyCells = Range("A1:X1")
If Not Application.In­tersect(KeyCe­lls, Range(Target.Ad­dress)) _
Is Nothing Then
Range("Y1") = "Řadek byl změněn"
End If

Set KeyCells = Range("A2:X2")
If Not Application.In­tersect(KeyCe­lls, Range(Target.Ad­dress)) _
Is Nothing Then
Range("Y2") = "Řadek byl změněn"
End If

Set KeyCells = Range("A3:X3")
If Not Application.In­tersect(KeyCe­lls, Range(Target.Ad­dress)) _
Is Nothing Then
Range("Y3") = "Řadek byl změněn"
End If
End Sub

 
Odpovědět 23.8.2017 13:37
Avatar
Tomáš Vitek:23.8.2017 21:09

Dobrý den,
Visual Basicu v MS Excelu jsem se nikdy nijak zvlášť nevěnoval, ale co tak použít klasický for cyklus?
Tedy:

For i = 1 To pocetRadkuVTabulce
        Set KeyCells = Range("A" & i & ":X" & i)
        If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
                Range("Y" & i) = "Řadek byl změněn"
        End If
Next
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 23.8.2017 21:09
Avatar
gorshok
Člen
Avatar
gorshok:24.8.2017 8:29

Diky za pomoc. Vše perfektně funguje...

 
Nahoru Odpovědět 24.8.2017 8:29
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.