Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Visual Basic - Error jenom v některých verzích Office

Aktivity
Avatar
Kateřina
Člen
Avatar
Kateřina:13.11.2018 10:22

Ahoj, prosím o radu ohledně makra.
Některé verze office toto makro berou v pořádku, jiné hlásí chybu (viz příloha).

Myslím si, že tam mám chybu v nějakém detailu zápisu, když to některé verze berou.

Zjednodušeně se jedná o Makro, které mi na základě podmínky zapíše hodnoty z jednoho sloupce do druhého:

Sub pouzit_v_planu()
Application.Scre­enUpdating = False
Sheet8.Unprotect "..."
Sheet8.Activate
Columns("BY")­.Select
Selection.Cle­arContents
Dim i As Integer
Dim m As Integer
m = 17
For i = 18 To (24) Step 1
BY = 18 'jdu po řádcích
'kam chci název napsat

If Range("BP" & i).Value = 2 Then
m = m + 1
Range("BY" & m).Value = Range("BM" & i).Value

End If
Next i
Sheet8.Protect "...", , , , , True, True, True, True, True, , , , , True

Application.Scre­enUpdating = True
End Sub

Díky za rady, Katka

 
Odpovědět
13.11.2018 10:22
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:13.11.2018 13:20

Ve kterych verzich?
A bez kompletniho kodu to stejne nejde testovat.
Zkus tam nechat jenom tu samotnou cast. Ostatni dej do komentare Protect si zrus rucne. Kdyz jsem zkousel ladit jedno macro, zjistil jse, ze v ruznych verzich se nektere prikazy zapisuji jinak. Je potreba tam dat potom ify.

 
Nahoru Odpovědět
13.11.2018 13:20
Avatar
Kateřina
Člen
Avatar
Kateřina:13.11.2018 14:02

Díky za zprávu.

Toto je celý kod, jen jsem smazala heslo. Určitě to nejde v Office 2010, ale jen u některých... Je to tvořené na Office 2016, kde mi to funguje v pohodě... (zasílám celou miniplakaci dál a potřebovala bych, aby to jelo na všem od 2010 výš...)
Trošku jsem doufala, že se bude jednat o úpravy z tečky na dvojtečku nebo něco podobného, co 2016 už berou a některé starší to vidí jako chybu...

 
Nahoru Odpovědět
13.11.2018 14:02
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:14.11.2018 8:29

Ok, tak moznost 1, googlem prikaz po prikazu, pr
google = office 2010 vba Sheet .Unprotect

ActiveSheet.Unprotect Password:="Secret"
Worksheets("MySheet").Unprotect Password:="Secret"
Workbooks("OtherWorkbook.xlsx").Workheets("MySheet").Unprotect Password:="Secret"
ActiveSheet.Unprotect Password:=InputBox("Please enter the password")
expression. Unprotect( _Password_ )  ' zajimave je, ze v dokumentaci to maji se zavorkou
---
Worksheets("Sheet1").Activate ' to se zda OK, jen mne napada, ze bych mozna napsat toto

Worksheets("Sheet8").Activate ' a pak teprve zkousel unprotect pres activesheet
ActiveSheet.Unprotect
---
ActiveSheet.Range(Columns(2), Columns(4)).Select ' columns pouzivaji na internetu s cislem, mozna je treba pristupovat k tomu pres range
Columns(2).Select
myRange.Columns(myRange.Columns.Count).Column
Columns("BL:BL").Select ' z fora z roku 2009, takze i toto by melo byt OK

2)
Excel ma moznost zaznamenat macro. Zkus v tom, kde to nefunguje, zaznamenat makro s presne stejnymi kroky nebo aspon 1 prikaz, kdyz se jedna o cyklus.
Mne obvykle macro zkape na tom, ze policko neexistuje. Jakoze, kdyz chci pracovat s tabulkou a v dane tabulce cell nebo row neexistuje (asi jsem to zkousel ve wordu), tak to vypise nejakou nejasnou chybu.
mozna by to jen chtelo pridat kontrolu, a neexistujici hodnoty nahradit prazdnym retezcem. Nebo tam je nejaky podivny znak. A nebo ma ten clovek v excelu jine nastaveni, ze to treba automaticky prevadi nejaka policka na jiny typ nez string. Treba selze prave to porovnavani Range("BP" & i).Value = 2
https://support.office.com/…1e5fb3d581a8

Editováno 14.11.2018 8:31
 
Nahoru Odpovědět
14.11.2018 8:29
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:14.11.2018 8:34

Jeste mne napadlo
Columns("BY")­.Select
Columns("BL:BL")­.Select ' z forma 2009, mozna je treba to psat takto "BL:BL" a ne jen "BL"

 
Nahoru Odpovědět
14.11.2018 8:34
Avatar
Kateřina
Člen
Avatar
Odpovídá na Peter Mlich
Kateřina:14.11.2018 10:50

Paráda, děkuji moc. Vyzkouším.

 
Nahoru Odpovědět
14.11.2018 10:50
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:15.11.2018 7:51

http://programujte.com/…zich-office/#…

range("xx" & i)
range(("xx" & i))
 
Nahoru Odpovědět
15.11.2018 7:51
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.