< návrat zpět

MS Excel


Téma: Chyba v kódu rss

Zaslal/a 14.9.2013 23:47

Prosím o radu. V kódu je podmínka, která má najít již uložený záznam na listu a pokud jej najde, tak se má proces kopírování ukončit, bohužel prostě nevím jak na to, pravděpodobně bude v kódu něco chybět, nebo jsem něco dal někam blbě. Díky


Sub Export_do_databaze()
Application.ScreenUpdating = False

Dim c_Nabidky As String
zdroj = ActiveWorkbook.Name

Dim doDB As Boolean

' EXPORT NABÍDKY

doDB = True
ActiveWorkbook.Save
c_Nabidky = Worksheets("Nabídka").Cells(13, 18).Value ' Číslo nabídky

'existuje už v databazi?
For i = 2 To Worksheets("Databáze nabídek").Cells(65000, 2).End(xlUp).Row + 1
If c_Nabidky = Worksheets("Databáze nabídek").Cells(i, 2) Then
f_zprava = MsgBox("V databázi už tato nabídka existuje, je nutné změnit číslo cenové nabídky?", vbNo, "Nabídka už existuje")

Select Case f_zprava

Case vbNo
doDB = False
'Exit Sub
End Select
End If
Next i

'ulozeni do databaze
radek = Worksheets("Databáze nabídek").Cells(65000, 2).End(xlUp).Row + 1
If doDB = True Then
Worksheets("Databáze nabídek").Cells(radek, 2) = Worksheets("Nabídka").Range("R13") 'Číslo nabídky
Worksheets("Databáze nabídek").Cells(radek, 3) = Worksheets("Nabídka").Range("K16") 'Datum vystavení


End If

f_zprava = MsgBox("Export do databáze byl ukončen", vbYes, "Info")


End Sub

stop Uzamčeno - nelze přidávat nové příspěvky.

Strana:  « předchozí  1 2
icon #015243
avatar
@Paloo: krokovanie a debuggovanie makra - to by sa malo tesať do kameňa, to je skvelé, že to tu zmieňuješ

@Poki: na svoju obhajobu uvediem, že som hľadal v makre chybu, na ktorej to martinovi hnevá, optimalizáciu kódu som neriešil..citovat
#015244
avatar
Zvašich reakcí usuzuji, že s velkým množstvím dat v seznamu bude hledání duplicit pomalé. Je tedy možné Vás požádat o úpravu kódu?citovat
icon #015247
eLCHa
Mno - při snídani.
Nemůžu vyzkoušet, nemám data a definici těch oblastí bych asi udělal jinak, ale v zásadě

Při psaní kódu VBA musíte v Excelu přemýšlet, jak byste to udělali v listu - tam byste použili (jak píše Poki) Ctrl+H (.Find) nebo POZVYHLEDAT(MATCH) nebo COUNTIF.
Tak proč to v kódu potom řešíte pomocí cyklů (není to tak dávno, co jsem to vytýkal i Palooo) a ne stejně.

Sub Export_do_databaze()
ActiveWorkbook.Save

Dim zdroj As String
zdroj = ActiveWorkbook.Name

Dim c_Nabidky As String
c_Nabidky = Worksheets("Nabídka").Cells(13, 18).Value ' Číslo nabídky

With Worksheets("Databáze nabídek")
If Application.WorksheetFunction.CountIf(Range(.Cells(2, 2), .Cells(Columns(1).Rows.Count, 2).End(xlUp)), c_Nabidky) > 0 Then
' If Application.WorksheetFunction.CountIf(Range(.Columns(2)), c_Nabidky) > 0 Then
MsgBox "V databázi už tato nabídka existuje, je nutné změnit číslo cenové nabídky?", vbOKOnly, "Nabídka už existuje"
Else
Dim radek As Integer
radek = Worksheets("Databáze nabídek").Cells(Columns(1).Rows.Count, 2).End(xlUp).Row + 1

Worksheets("Databáze nabídek").Cells(radek, 2) = Worksheets("Nabídka").Range("R13") 'Číslo nabídky
Worksheets("Databáze nabídek").Cells(radek, 3) = Worksheets("Nabídka").Range("K16") 'Datum vystavení

MsgBox "Export do databáze byl ukončen", vbOKOnly, "Info"
End If
End With 'Worksheets("Databáze nabídek")
End Sub


Tomu zbytku kódu bez dat nerozumím, takže si to musíte doladit sám.citovat
#015362
avatar
Děkuji za opravu, úpravu, kódu:-)citovat

Strana:  « předchozí  1 2

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

Čas od do

lubo • 19.4. 16:30

Makro smyčka

MilanKop • 19.4. 10:46

Makro smyčka

elninoslov • 19.4. 9:02

Čas od do

elninoslov • 19.4. 8:46

Čas od do

jarek1111 • 18.4. 13:46

Čas od do

lubo • 18.4. 11:13

Čas od do

jarek1111 • 18.4. 8:32