Zavrieť

Porady

Nesprávna funkcia formulára "UserForm" v programe Excel pri vypĺňaní databázy pomocou čítačky čiarového kódu

Ahojte všetci
Som začiatočník v programovaní VBA. Pomocou čítačky čiarových kódov napĺňam „sklad“ databázy cez Excel UserForm, ktorý má 3 prvky - ComboBox1 - TabIndex = 0, jedná sa o pole s názvom produktu, TextBox1-TbIndex = 1, to je množstvo a CommandButton1 - TabIndex = 2, má funkciu „Potvrdiť“.
Ako sa dá zo sladby prvkov posúdiť rozhodujúxu úlohu tu zohráva nastavenie v (Properties) "TabIndex" od 0 - 2
Môj problém je, že keď načítam čiarový kód do UserForm v prvku formulára „ComboBox1“, načíta ho a automaticky prejde na „TextBox1“, kde ručne vyplním množstvo a kliknem 2x Enter na „CommandButton1“, údaje sa zobrazia v databáze aktívneho hárka.
A tu sa začína problém,keď by formulár mal cyklus opakovať a prejsť opäť k prvku „Combo Box“ (TabIndex = 0 "), ale cyklus zamrzne a je potrebné kliknúť na klávesu PC „TAB “ a ešte„ Deleteť " a až potom formulár je znovu pripravený (kurzor bliká) a môžem do databázy načítať ďalší záznam čiarového kódu.
Problém je teda v tom, že si neviem poradiť, ako v programe nahradiť stlačenie „TAB“ a „Delete“ aby cyklus pokračoval odznovu. To je prípad, keď použijem kód, kde riadky majú „Rem" teda ' apostrof. Môj program však funguje, keď odstránim prvky„ Rem “, kde je formulár prakticky vynulovaný hlavne pomocou časti kódu :
" Unload UserForm13
UserForm13.Show "
Myslím si že by sa to mohlo dať vyriešiť aj pomocou kódu ale nejako to neviem zadefinovať aby to bolo funkčné. Je možné že kód nie je správne napísaný a potreboval by odbornú úpravu. poprosil by som ak by bol niekto ochotný a pomohol vyriešiť môj problém, za čo vopred moc ďakujem.

Tu je môj kód:


Private Sub CommandButton1_Click ()
'Macro for UserForm and Barcode
'Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim x As Integer 'Variant
Dim y As Integer
Dim cel As Range
Dim ComboBox As Integer ' ComboBox1
Dim Textbox As Integer 'TextBox1
Dim CommandButton As Integer 'CommandButton1
Dim Keycode As Integer

x = Range ("B114") + 1 ' riadok – názov položky
y = Range ("D114") + 2 ' stĺpec - klient
Range ("F114"). Select ' načíta množstvo z ComboBox2 (v hárku)
'ActiveSheet.Select' ???
Selection.Copy
Cells (x, y) .Select
ScreenUpdating = False

Selection.PasteSpecial Paste: = xlPasteAll, Operation: = xlNone, SkipBlanks: = _
False, Transpose: = False
Application.CutCopyMode = False

Rem Me! ComboBox1.TabIndex = 0
Rem Me! TextBox1.TabIndex = 1
Rem Me! CommandButton1.TabIndex = 2
ScreenUpdating = True

Rem Unload UserForm13
Rem UserForm13.Show
Application.Calculation = xlCalculationAutomatic

End Sub
Pravidlá a tipy
  • Každý móže napísať len 1 odpoveď. Neskor mozete svoju odpoveď vylepšiť.
  • Odpoveď má priniesť riešenie na otázku, vyvarujte sa hodnotenia otázky.
  • Odpoveď má byť viac o faktoch ako o názoroch.
Dalšie pravidla a tipy
    Ak potrebujete v otázke niečo upresniť, najskôr sa spýtajte na podrobnosti.
    Koncept slúži na uloženie rozpracovanej odpovede, koncept sa zobrazuje len Vám, až kým ho nezverejníte.
    Ak máte podobnú otázku, založte Novú otázku alebo Súvisiacu otázku.
    ❤ Buďte priateľskí ❤
    Sme súčasťou jednej komunity, ktorá si chce vzájomne pomáhať, rozdieľnosť je vítaná ak neubližuje!
    Usporiadať podľa bodov

    xxn je offline (nepripojený) xxn

    xxn
    Vidím že Ti zatiaľ nik neodpovedal ...., takto na diaľku je to naozaj obtiažne zhodnotiť, tak moju snahu ber s rezervou.
    Predpokladám že chceš aby Ti po uložení záznamu vymazalo formulár a nastavilo kurzor do prvého Comboboxu (tabIndex=0) nového, zatiaľ prázdneho, rekordu. Pritom to chceš urobiť kliknutím na jeden button.

    1.) Procedúra na vyčistenie všetkých textboxov a combo boxov vo forme je napr:

    Private Sub CommandButton1_Click()
    Dim objOLE as OLEObject
    For Each objOLE In Me.OLEObjects
    Select Case TypeName(objOLE.Object)
    Case "TextBox", "ComboBox"
    objOLE.Object.Value = ""
    Case "CheckBox"
    objOLE.Object.Value = False
    End Select
    Next objole
    End Sub

    alebo aj
    'clear the data
    Me.Textbox = ""
    Me.Combobox = ""
    atď.

    2.) Procedúra na postavenie kurzora do požadovaného textboxu je:
    Me.Combox.SetFocus
    Application.ScreenUpdating = True

    Na nete nájdeš niekoľko stránok resp. videí s návodmi (žiaľ vačšinou v EN).
    napr. https://www.contextures.com/xluserform01.html

    Väčšina týchto návodov je ale urobená tak že máš osobitné tlačidlo pre "Save" a iné tlačidlo pre vymazanie formy a jej prípravu na nový zápis.
    napr.

    Nesprávna funkcia formulára "UserForm" v programe Excel pri vypĺňaní databázy pomocou čítačky čiarového kódu

    Porady, ktoré by vás mohli zaujímať

    Prihláste sa a sledujte len tie Porady, ktoré Vás zaujímajú.