Excel VBA - zákaz spuštění makra

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Uživatelský avatar
Branscombe
Level 3
Level 3
Příspěvky: 469
Registrován: červen 09
Pohlaví: Muž
Stav:
Offline

Excel VBA - zákaz spuštění makra

Příspěvekod Branscombe » 16 lis 2010 14:20

Ahoj, mám trošku problém s Userform.

Mám formulář kde mám spoustu comboboxů, textboxů, labelů atd... Dole mám tlačítko které by mi mělo přenést hodnoty ze všech polí do buněk na listu. Problém je v tom že když chci uložit tyto data, tak se mi aktualizuje hlavní combobox a ten mi přepíše hodnoty v polích. Mohl bych přiložit sešit s chybou, ale musel bych ho sáhodlouze upravovat, jelikož jsou v něm loga a data zákazníků takže se raděj ptám - jde po kliknutí na tlačítko spustit makro "Private Sub Save_Click()" které zakáže spouštění dalších maker jako je například "Combobox_change()" ?? Díky předem za rady ...

Reklama
navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel VBA - zákaz spuštění makra

Příspěvekod navstevnik » 16 lis 2010 17:29

Popis problemu neni dostatecne jasny.
Vskutku by bylo vhodne pripojit UserForm, ve kterem jsi vytvoril kladnou zpetnou vazbu, aby bylo mozno overit reseni na realu.

Lze sice pouzit vlastnost EnableEvents, ktera zabrani vyvolani udalosti pri operacich VBA na listu Excelu:

Kód: Vybrat vše

Application.EnableEvents = False
' zde je prislusna procedura
Application.EnableEvents = True

ale pokud bude zmenen obsah bunkek ComboBox.RowSource, tak ke zmene v seznamu stejne dojde.

Uživatelský avatar
Poki
Level 2
Level 2
Příspěvky: 237
Registrován: prosinec 09
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - zákaz spuštění makra

Příspěvekod Poki » 16 lis 2010 18:11

tenhle problem jsem jednou resil tak, ze jsem si vytvoril verejnou promennou as Boolean, pri jejiz hodnote True se mohly vykonat vsechny procedury, ktere ovlivnovaly userform (ve vsech techto procedurach jsem mel if Verejna = True then...).
Na zacatku ulozeni dat Button_click jsem vsak nastavil Verejnou na False, cim se dotcene procedury neprovedly a na konci _click jsem Verejnou zase nastavil na True)

Uživatelský avatar
Branscombe
Level 3
Level 3
Příspěvky: 469
Registrován: červen 09
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - zákaz spuštění makra

Příspěvekod Branscombe » 16 lis 2010 20:59

to navstevnik: nefunguje, asi opravdu budu muset vytvořit userform znovu bez firemních chráněných dat abych ho zde mohl publikovat ...

to Poki: Dobrej nápad, ale asi až jako krajní řešení ... Ale díky, když selžou rady od návštěvníka, tak tohle by fungovat mohlo ... ;-)

Uživatelský avatar
Branscombe
Level 3
Level 3
Příspěvky: 469
Registrován: červen 09
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - zákaz spuštění makra

Příspěvekod Branscombe » 18 lis 2010 07:58

Tak přikládám soubor s Userform...

Po zobrazení formuláře, kliknu na první combobox, vyberu který záznam chci zobrazit, cokoliv upravím (třeba text: místo PC-Help napíšu PC) a kliknu na SAVE. Formulář se pouze aktualizuje a hodnoty se neuloží. Kde je chyba ??
Přílohy
vzor_Userform.xlsm
(45.83 KiB) Staženo 44 x

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel VBA - zákaz spuštění makra

Příspěvekod navstevnik » 18 lis 2010 08:06

a co takhle heslo k VBA?
Jen tak naokraj, v uvodnim dotazu problem spociva v necem jinem, nez uvadis nyni.

Uživatelský avatar
Branscombe
Level 3
Level 3
Příspěvky: 469
Registrován: červen 09
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - zákaz spuštění makra

Příspěvekod Branscombe » 18 lis 2010 08:40

Ups, sorry ... V příloze bez hesla ...

Psal jsem: "Problém je v tom že když chci uložit tyto data, tak se mi aktualizuje hlavní combobox a ten mi přepíše hodnoty v polích."
A to přetrvává. Prostě se nové hodnoty v polích neuloží na list, jelikož se aktualizuje hlavní combobox1 a ten zaktualizuje celý formulář ...
Přílohy
vzor_Userform.xlsm
(45.99 KiB) Staženo 32 x

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel VBA - zákaz spuštění makra

Příspěvekod navstevnik » 18 lis 2010 14:28

Nahledni do prilohy.
Přílohy
vzor_Userform-1.xlsm
(46.29 KiB) Staženo 84 x

Uživatelský avatar
Branscombe
Level 3
Level 3
Příspěvky: 469
Registrován: červen 09
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - zákaz spuštění makra

Příspěvekod Branscombe » 18 lis 2010 14:38

Super, funguje jak má ... Ještě to budu muset prozkoumat a pochopit abych to napasoval na svoje data ... Zatím díky a případně budu mít doplňující otázky ;-)

Uživatelský avatar
Branscombe
Level 3
Level 3
Příspěvky: 469
Registrován: červen 09
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - zákaz spuštění makra

Příspěvekod Branscombe » 19 lis 2010 09:28

Super, funguje to jako má... Ještě si to postupně upravuji, jelikož tvůj zápis VBA je o level výš než ten můj ... ;-)

Mám tam další překážku:
1. Chci napsat:

Kód: Vybrat vše

If ComboBox6.Value = "Materiál / Material / Material / Materiales / 材料" Then

Ale VBA mi nebere čínské znaky... Lze nějak zapsat podmínku když ComboBox6.Value (ale pouze pro prvních 8 znaků) ??

2. Nešlo by nějak upravit zápis VBA ComboBox3_Change() kde jsem to napsal dost složitě ??

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel VBA - zákaz spuštění makra

Příspěvekod navstevnik » 19 lis 2010 11:37

ad 1. Left(ComboBox6.Value, 8) = "Materiál" Then
ad 2.

Kód: Vybrat vše

Private Sub ComboBox3_Change()

  Dim wsh As Worksheet, zakaznik As Variant
  Dim HBlk As Range, HCll As Range, CB4RowSrcAddr As String
 
  Set wsh = ThisWorkbook.Worksheets("zdroj")
  Set HBlk = wsh.Range("g1:o1")
  zakaznik = ComboBox3.Value
  With HBlk
    Set HCll = .Find(zakaznik, LookIn:=xlValues, LookAt:=xlWhole)
    If Not HCll Is Nothing Then
      If HCll.Offset(3, 0).Value = vbNullString Then
        CB4RowSrcAddr = HCll.Resize(2, 1).Offset(1, 0).Address
      Else
        CB4RowSrcAddr = wsh.Range(HCll.Offset(1, 0), HCll.Offset(2, 0).End(xlDown)).Address
      End If
      Me.ComboBox4.RowSource = wsh.Name & "!" & CB4RowSrcAddr
    End If
  End With
End Sub

V tebou predlozenem souboru je skryto nekolik "min", ktere nejsou deaktivovany, reseni salamovou metodou, ktere jsi zvolil k tomu nejspis nevede.

Uživatelský avatar
Branscombe
Level 3
Level 3
Příspěvky: 469
Registrován: červen 09
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - zákaz spuštění makra

Příspěvekod Branscombe » 19 lis 2010 11:58

Díky za rady...

Psal jsem to nejlépe jak umím ... Nejsem v tom žádný expert ani se tím neživím, pouze se snažím firmě trochu pomoci ... Jaké největší miny tam jsou ??

EDIT: Ještě jedna otázka: Když otevřu soubor a pracuji s formulářem, tak je ze začátku všechno OK, ale po nějaké době když chci znovu otevřít formulář, tak mi vyskočí chybová hláška "Type mismatch" .... Proč ??
Naposledy upravil(a) Branscombe dne 19 lis 2010 12:27, celkem upraveno 1 x.


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • excel-posun makra
    od actionboy » 12 bře 2024 18:59 » v Kancelářské balíky
    1
    744
    od Grimm Zobrazit poslední příspěvek
    12 bře 2024 21:43
  • Pád PC po spuštění hry be BSOD
    od Radoozek » 07 pro 2023 15:00 » v Problémy s hardwarem
    4
    1832
    od Radoozek Zobrazit poslední příspěvek
    08 pro 2023 16:45
  • Artefakty na monitoru po spuštění
    od WinDroid » 30 čer 2023 15:47 » v Problémy s hardwarem
    2
    870
    od Mr. Incognito Zobrazit poslední příspěvek
    30 čer 2023 19:04
  • Program se stále ptá na spuštění při startu OS
    od Karrex » 17 pro 2023 15:09 » v Windows 11, 10, 8...
    3
    1596
    od zeus Zobrazit poslední příspěvek
    19 pro 2023 18:50
  • Skyrama Flash launcher, po spuštění - přihlášení BLACK SCREEN
    od Ramoneggg » 13 led 2024 17:43 » v Windows 11, 10, 8...
    2
    1083
    od Ramoneggg Zobrazit poslední příspěvek
    13 led 2024 18:06

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti