» Poradna » Programy

Excel VBA - Neplatný kvalifikátor

 |   |  Microsoft Windows 10 Chrome 77.0.3865.90

Ahoj, mám dotaz jestli někdo nebude vědět nějaké hezké řešení, číslo 12 v tomto kusu kódu potřebuji měnit až na 42 a tak jsem tedy upravil na viz níže:'If TextBox12 <> "" Then'hodnota12 = TextBox12.Value'List1.Copy after:=Sheets(1)'ActiveSheet.Name = hodnota12'ActiveSheet.Move after:=Worksheets(Worksheets.Count)'ActiveSheet.Unprotect'Cells(2, 3) = hodnota12'Cells(15, 2) = hodnota12'ActiveSheet.Protect'End If'******************************************************************For i = 12 To 42 Dim TextBox As String TextBox = "TextBox" & i If TextBox <> "" Then Hodnota = TextBox.Value List1.Copy after:=Sheets(1) ActiveSheet.Name = Hodnota ActiveSheet.Move after:=Worksheets(Worksheets.Count) ActiveSheet.Unprotect Cells(2, 3) = Hodnota Cells(15, 2) = Hodnota ActiveSheet.Protect End IfNext iBohužel mi to píše na řádku viz níže neplatný kvalifikátor.Hodnota = TextBox.Value Jak jinak přířadit x TextBoxům pořadové číslo než spojováním řetězců ? Když jsem pro kontrolu dal MsgBox tak proměnná TextBox obsahuje hodnotu TextBox12 ale bohužel v kódu to nefunguje.

Mohlo by vás také zajímat

Odpovědi na otázku

 |   |  Microsoft Windows 10 Firefox 74.0

Skús vyhodiť deklaráciu toho TextBoxu (Dim TextBox As String) mimo For.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 77.0.3865.90

Bohužel nepomohlo. Asi má problém s tím, že nedokáže deklarovat daný TextBox pomocí řetězce. Asi budu muset všech 12 až 42 těchto bloků vypsat pod sebe ... . prasárna ale funguje to pak.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Firefox 74.0

Pardon, to bola blbosť. Každopádne, tvoj TextBox je String. A ty sa pýtaš na Value, ale to sa musíš pýtať Objektu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 78.0.3904.97

Me.Controls("Textbox" & i) = i

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 77.0.3865.90

Nevím jak použít, můžete zařadit do kódu ?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 77.0.3865.90

Dal jsem to dohromady: For i = 12 To 42 If Me.Controls("Textbox" & i) <> "" Then Hodnota = Me.Controls("Textbox" & i).Value MsgBox Hodnota List1.Copy after:=Sheets(1) ActiveSheet.Name = Hodnota ActiveSheet.Move after:=Worksheets(Worksheets.Count) ActiveSheet.Unprotect Cells(2, 3) = Hodnota Cells(15, 2) = Hodnota ActiveSheet.Protect End IfNext iDíky

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 7 Chrome 79.0.3945.117

Možno keby si napísal, čo má ten kód vlastne spraviť.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 77.0.3865.90

Z formuláře kde je 32 TextBoxů se pokud bude v nějakém hodnota tak se vytvoří list s daným názvem a ještě se do určitých buněk zapíše daný název a posune se list na konec. .... Ale zdá se mi špatné řešení opisovat tento kód s názvy TextBoxů 32x.If TextBox12 <> "" Then'Hodnota = TextBox12.ValueList1.Copy after:=Sheets(1)ActiveSheet.Name = Hodnota'ActiveSheet.Move after:=Worksheets(Worksheets.Count)ActiveSheet.UnprotectCells(2, 3) = HodnotaCells(15, 2) = HodnotaActiveSheet.ProtectEnd If

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Mira, Move, Protect, COUNT, Pořadové číslo