Stránka 1 z 1

Jak ve VBA zadat konstantu (INPUT nefunguje) ?

Napsal: 28 črc 2020 11:16
od atari
Níže uvedený kód se zastaví na chybě, že je chyba v definici objektu. Jakmile číslo zadám příkazem "Sloupec = 5", tak kód funguje bez chyb.

Má pro to někdo vysvětlení?

Kód: Vybrat vše

Sub test()

Sloupec = InputBox("Číslo sloupce, kam se má zapsat hodnota")
'Sloupec = 5
Cells(1, Sloupec) = 99

End Sub

Re: Jak ve VBA zadat konstantu (INPUT nefunguje) ?

Napsal: 28 črc 2020 12:34
od Zivan
VBA vubec neumim, ale nebude problem v datovem typu?

Tedy ze se to snazis nacpat do Cells(1, "5")

Edit:
S pomoci Googlu bych to prepsal na:

Kód: Vybrat vše

Sub test()

Sloupec = Application.InputBox("Číslo sloupce, kam se má zapsat hodnota", Type:=5)
'Sloupec = 5
Cells(1, Sloupec) = 99

End Sub


Mozna bys jeste pred vlozenim te hodnoty mohl zjistovat, jestli je ve Sloupec cislo, kdyz misto zadani zmacknes ESC, tak tam nic nebude a kod spadne.

Re: Jak ve VBA zadat konstantu (INPUT nefunguje) ?

Napsal: 28 črc 2020 14:48
od atari
Ve Sloupci je číslo. Pokud například udělám matematickou operaci například "Sloupec/2" tak se provede korektně, Takže evidentně je zadáno číslo.

Ale asi je problém v datovém typu. Když dám deklaraci "Dim Sloupec As Integer", tak už to začne fungovat.

Ale to "Application.InputBox" funguje i bez té deklarace. Takže dík za tip.

Re: Jak ve VBA zadat konstantu (INPUT nefunguje) ?

Napsal: 28 črc 2020 14:52
od Zivan
Kdyz udelas matematickou operaci (pouziva se *1), tak to VBA asi automaticky konvertuje, ale u Cells to udelat nemusi.

Hlavne ze to funguje.

Re: Jak ve VBA zadat konstantu (INPUT nefunguje) ?

Napsal: 29 črc 2020 13:13
od elninoslov

Kód: Vybrat vše

Sub test()
Dim Sloupec As Integer
    On Error Resume Next
    Sloupec = Application.InputBox("Číslo sloupce, kam se má zapsat hodnota", Type:=5)
    On Error GoTo 0
    If Sloupec = 0 Then MsgBox "Chyba !", vbCritical: Exit Sub
    Cells(1, Sloupec) = 99
End Sub

Re: Jak ve VBA zadat konstantu (INPUT nefunguje) ?

Napsal: 29 črc 2020 20:05
od atari
Tohle už napohled vypadá inteligentněji... :thumbup:
Díky