< návrat zpět

MS Excel


Téma: Makro odeslani dat az po vyplneni buňek rss

Zaslal/a 21.4.2015 17:28

Ahoj,
stažím se spáchat formulář, kde uživatel vyplní data na listu Formulár a po stisku tlačítka report se data zapíší na další list report.
Já bych potřeboval aby se mi data zapsala až po vyplnění určitých buňěk: B6,B8...popřípadě když by nebyla buňka vyplněná aby to uživatele upozornilo aby tato pole vyplnil.
VB moc neovládám 7
Děkuji za pomoc 1

Sub report()

'vypln bunku jmeno
If Worksheets("Formular").Range("B6") = "" Then MsgBox ("Vyplň položku jméno!")

'vypln bunku kancelar
If Worksheets("Formular").Range("B8") = "" Then MsgBox ("Vyplň položku kancelář!")

'If Worksheets("Formular").Range("B16") = "" Then MsgBox ("Vyplň položku prefix!")
If Worksheets("Formular").Range("C16") = "" Then MsgBox ("Vyplň položku inventární číslo!")

Dim Radek As Long
Radek = Worksheets("SD karty").Cells(Rows.Count, 1).End(xlUp).Row + 1 'najde poslední plný řádek a přičte 1
'Debug.Print Radek

'list report
Worksheets("report").Cells(Radek, 1) = Worksheets("Formular").Range("B40").Value 'datum
Worksheets("report").Cells(Radek, 2) = Worksheets("Formular").Range("B16").Value 'prefix
Worksheets("report").Cells(Radek, 3) = Worksheets("Formular").Range("C16").Value 'inv cislo
Worksheets("report").Cells(Radek, 4) = Worksheets("Formular").Range("B14").Value 'nazev zarizeni
Worksheets("report").Cells(Radek, 5) = Worksheets("Formular").Range("B15").Value 'imei
End Sub

Zaslat odpověď >

Strana:  1 2   další »
#024571
elninoslov
Vieš o tom, že hľadáš posledný riadok v liste "SD karty" a tento riadok potom použiješ ako "posledný" v "report" ? To by som určo ešte opravil...

EDIT: Sorry, zabudol som tam jeden príkaz (Application.Transpose) - upravené, teraz je to OK.
Příloha: rar24571_kontrolazadaniadat.rar (15kB, staženo 28x)
citovat
#024573
elninoslov
Zameň to za toto.
Nájde korektný prvý prázdny riadok v "report", teda bez problému s preskakovaním prvého prázdneho riadku v tvojom príklade. Zádrhel vidím aj v tom, že dátum nekontroluješ, či bol zadaný, ale pritom práve stĺpec s dátumom kontroluješ na posledný záznam. To je problém, pri nevložení dátumu, dôjde k prepísaniu záznamu v reporte! Ja mám radšej vyhľadanie posledného použitého riadku v celej oblasti stĺpcov, nie len v jednom. Môžeme doplniť.

Po upozornení aktivuje danú nevyplnenú bunku.
Příloha: rar24573_kontrolazadaniadat2.rar (16kB, staženo 28x)
citovat
#024574
avatar
Děkuji za pomoc, jeste mam jeden zadrhel
checkbox1 a checkbox2 mi funguji spravne ale checkbox3 ne.
potrebuji kdyz je chceckboc3= true tak aby mi zapsal hodnotu z bunky D32, tj kapacitu paměti karty a kdyz je false tak tak aby mi to napsalo ze karta neni prilozena tj bunka D59 asi už magořím ale nechapu to mam to stejne ale chova se to jinak 5
Příloha: 7z24574_form11_se1.7z (46kB, staženo 28x)
citovat
#024576
elninoslov
Nemáš to rovnako. CB1 a CB2 riešia rovno hodnoty D58 a D59 (ANO/NE). Naproti tomu CB3 rieši ANO/NE až na základe zvolenej hodnoty. Ty prečítaš hodnotu "vyber:" a chceš od neho "NE". Chýba ti tam ešte jedna podmienka, ktorá ošetrí, že ak nič nezadáš, čiže v bunke D32 je hodnota "vyber:", tak nech to považuje za "NE". On to totiž inak nemá odkiaľ vedieť, že "vyber:" aj "---------" znamená "NE", a iba akákoľvek iná hodnota znamená "ANO".
'checkbox3 usb kabel
If Worksheets("Formular").CheckBox3.Value = True And Worksheets("Formular").Range("D32").Value <> "vyber:" Then
Worksheets("SD karty").Cells(Radek, 4) = Worksheets("Formular").Range("D32").Value 'SD karta
Else: Worksheets("SD karty").Cells(Radek, 4) = Worksheets("Formular").Range("D59").Value
End If

Aj tak sa to dá ale ešte veľmi zjednodušiť. Niečo na tom ešte zjednoduším, uvidíme, koľko bude času.
Popisky ti tiež nesedia.citovat
#024577
elninoslov
Uf. Ani neviem kde začať. Treba používať jednotný typ zápisu názvov pre celý zošit. Keď listy s diakritikou tak všetky, a naopak. Keď prvé písmeno veľké, tak všetky listy. Pozor na odkazy na list, Worksheet("Report") nieje to isté ako Worksheet("report"). Treba používať ak je to možné konštrukciu "With" - "End With", sprehľadňuje, zrýchľuje. Zjednodušil som podmienky, vyriešil som zápis tej karty. Tam bola ďalšia chyba, lebo v nasledujúcom bloku po spomínanom zápise údaju o SD, bol tento prepísaný. Zrušil som Moduly, a dal všetko do Module1. Pri resetovaní (tl. "Nový") nemusíš zadávať do buniek "FormulaR1C1", stačí "Value". Vo výberových zoznamoch si mal "Vyber:", no reset ti tam dal "vyber:", potom nefungujú náväznosti s "ANO/NE". Tie treba podľa mňa doriešiť. Upravil som aj ostatné zápisy do "Report" a "Pausal", aby tam nedávalo slovo "Vyber:" ale vytvoril som poloubiverzálnu fnc pre výpočet hodnoty (hodnota/"NE"). A čo treba doriešiť ? Čo sa má zapísať ak je v bunke "Vyber:", čo ak je tam "---------", a čo ak je tam "". Napr. Internet keď sa zadá "---------", tak napr. zapíšme "NE", čiže nemá. Ale keď zabudneme vyplniť, alebo nebudeme vedieť, bude tam "Vyber:", a v tom prípade by bolo lepšie tam zapísať "N/A". Lebo "NE" v tomto prípade nieje vhodné, a "Vyber:" už vôbec nie.
Ďalej všetky tie dáta do výberových zoznamov by som presunul na iný list, trebárs skrytý. Oblasť Prefix je tam 2x.
Takých vecí tam bolo viac, už mi ani hlava nepracuje. Nabudúce treba presnejšie popísať čo všetko treba, čo nejde, čo by si chcel atď, lebo často veľa vecí so sebou úzko súvisí, a potom to treba 5x prekopať.
Snáď si z toho niečo vyberieš. Dobrú noc.
Příloha: rar24577_form11_se1_2.rar (41kB, staženo 28x)
citovat
icon #024578
eLCHa
@elninoslov
Pozor na odkazy na list, Worksheet("Report") nieje to isté ako Worksheet("report")

Patří tam Worksheets, ale to beru jako noční únavu. Nicméně já by řekl, že to naopak je to samé. Nebo vysvětlete, jak jste to myslel...citovat
#024580
elninoslov
Dámy a páni dal by som si tuším ruku odťať za to, že mi v noci hádzalo chybu v Report/report. :) Samozrejme vo Worksheets. No čo už, tak budem o ruku kratší. Možno som ten názov listu len zle opísal. Kolega eLCHa má pravdu. Takže tú jednu vetu beriem späť.
No uvidíme, čo na to hans66, či mu niečo z toho bude k prospechu.citovat
#024586
avatar
Děkuji, do konce týdne se na to podívam a kdyžtak něco doplním 1

jeste jak mám udelat aby se mi pri zmene bunky prevzal/vratil zapsala hodnota jmeno a kancelar do urcite bunky?
(v bunce B11 na listu Formular vyberu převzal nebo předal...

ale takhle to moc nefunguje 1 a zkousel jsem dat elseif ale to mi nesežere 4 snad to je z obrazku zřejmé 4

With Worksheets("Report")
If wsFrm.Range("B11").Value = "Převzal" Then .Cells(Radek, 11) = wsFrm.Range("B6").Value 'zamestnanec prevzal zboží
'report

.Cells(Radek, 2) = wsFrm.Range("B16").Value 'prefix
.Cells(Radek, 4) = wsFrm.Range("B14").Value 'nazev zarizeni
.Cells(Radek, 5) = wsFrm.Range("B15").Value 'imei
.Cells(Radek, 10) = wsFrm.Range("B8").Value 'kancelar zamestnance
.Cells(Radek, 7) = "618/sklad" 'puvodni umisteni, vydani ze skladu


If wsFrm.Range("B11").Value = "Vrátil" Then .Cells(Radek, 8) = wsFrm.Range("B6").Value 'zamestnanec vratil zbozi
'report

.Cells(Radek, 2) = wsFrm.Range("B16").Value 'prefix
.Cells(Radek, 4) = wsFrm.Range("B14").Value 'nazev zarizeni
.Cells(Radek, 5) = wsFrm.Range("B15").Value 'imei

.Cells(Radek, 7) = wsFrm.Range("B8").Value 'kancelar zamestnance
.Cells(Radek, 10) = "618/sklad" 'puvodni umisteni, vydani ze skladu




End With
Příloha: png24586_obrazek.png (19kB, staženo 28x)
24586_obrazek.png
citovat
#024587
elninoslov
Tak ďalšie úpravy. Už ani nebudem popisovať čo som pomenil. Snáď na to prídeš.
Příloha: rar24587_form11_se1_3.rar (38kB, staženo 30x)
citovat
#024589
avatar
díky :) snad se to naučím 1 jeste se zeptam
proc tam je radek=radek+2? a ne radek+1?
'list report
With Worksheets("Report")
Radek = Radek + 2
Select Case wsFrm.Range("B11").Value
Case "Převzal"
.Cells(Radek, 11) = wsFrm.Range("B6").Value
.Cells(Radek, 10) = wsFrm.Range("B8").Value
.Cells(Radek, 7) = "sklad"citovat

Strana:  1 2   další »

Uživatelské menu

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

Menu

Formulář Faktura

Formulář Faktura IV

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

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje