< návrat zpět

MS Excel


Téma: přiřazování hodnot pomocí makra rss

Zaslal/a 21.2.2013 9:06

Dobrý den
Používám makro které mi přiřazuje to tabulky vyexportované hodnoty ze SAPU.
Vyhledá hodnotu dle indexu, zapíše do příslušného pole a řádek smaže.
Pokud stejný index nenajde, řádek ponechá a přeskočí na další.
Vše fungovalo donedávna bez problému, ale jak jde čas a rozrůstají se indexační kódy, začala nepříjemná věc a to slučování hodnot.
Např. u indexu 1040 dojde k jeho vyhledání i zapsání do příslušné pozice bez konfliktu, problém nastává u indexu 104090 a dalších, které mají společnou část (v tomto případě 1040), veškeré hodnoty se zapíší k první vyhledané shodě
Dokážete někdo tohle makro opravit, začíná mi to trochu přerůstat přes hlavu a sám si nevím rady.
Makro mi totiž psal před lety kamarád a já si dokážu leda tak změnit rozsah a pozice.
předem děkuji

Dim I As Integer, m As Byte
Const k = 380
------------------------------------------------
Sub Nacti_SKLAD()
Range("O6").Select
Workbooks.Open Filename:="c:\Documents and Settings\SapWorkDir\sklad.xls"
Windows.Arrange ArrangeStyle:=xlTiled
Range("A1").Select
Columns("B:B").EntireColumn.AutoFit
Columns("O:O").EntireColumn.AutoFit
Krokovani
Windows("Stav skladu.xlsm").Activate
Range("A1").Select
End Sub
---------------------------------------------------------------
Sub Krokovani()
Range("A1").Select
rowlast = Range("A1").End(xlDown).Row
For I = 1 To rowlast
m = 0
a = ActiveCell.Value
ActiveCell.Offset(0, 2).Activate
b = ActiveCell.Value
Windows("Stav skladu.xlsm").Activate
With Worksheets(1).Range("b6:b" & k)
Set c = .Find(a, LookIn:=xlValues, SearchOrder:=xlByColumns)
If Not c Is Nothing Then
Range(c.Address).Select
ActiveCell.Offset(0, 13).Activate
ActiveCell.Value = ActiveCell.Value + b
Windows("sklad.XLS").Activate
Selection.EntireRow.Delete
ActiveCell.Offset(0, -2).Activate
m = 1
Else
With Worksheets(1).Range("c6:c" & k)
Set c = .Find(a, LookIn:=xlValues)
If Not c Is Nothing Then
Range(c.Address).Select
ActiveCell.Offset(0, 13).Activate
ActiveCell.Value = ActiveCell.Value + b
Windows("sklad.XLS").Activate
Selection.EntireRow.Delete
ActiveCell.Offset(0, -2).Activate
m = 1
Else: Windows("sklad.XLS").Activate
End If
End With
End If
End With
If m = 0 Then ActiveCell.Offset(1, -2).Activate
Next I
End Sub

Zaslat odpověď >

#011783
Opičák
Odkrokuj a zjistíš kde to zlobí. Předpokládám, že .Find, ale bez nějakých dat se špatně hledá, alespoň mě.citovat
#011784
avatar
odkrokováním to nejde, makro je v pořádku a celé proběhne bez problému, jen k jednomu číslu, přiřadí několik hodnot
např.k indexu 1040 na které narazí nejdříve, přiřadí hodnoty 1040 ale i 104090,104085,104098 atd. prostě vše co obsahuje 1040
zkoušel jsem měnit formáty buňky, ale bezúspěchucitovat
icon #011848
Poki
Metoda .find hleda tak, jak ji zadate, takze jestli hleda jen cast (pak je mozne, ze najde i 104090 misto pouze 1040), takze potrebujete rict, ze se ma hledat jen cela hodnota, nejen cast)

Prozkoumejte metodu .find a zjistite, ze ma i vlastnost 'lookat'.

pridal bych do metody .find 'Lookat:=xlwhole'

...ale pouze odhaduju, neznam vasi proceduru podrobne, jen jsem to tak prolitl...citovat
#011915
avatar
odhad byl naprosto přesný, po rozšíření metody .find vše běží jak má
problém vyřešen, děkuji za nakopnutí 1citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 15:12

Relativní cesta - zdroje Power Query

Alfan • 25.4. 15:08

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 14:21

Relativní cesta - zdroje Power Query

Alfan • 25.4. 10:49

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 10:47

Relativní cesta - zdroje Power Query

Alfan • 25.4. 10:40

Relativní cesta - zdroje Power Query

Alfan • 25.4. 9:44