Nebo i takhle:
Kód:
Option Explicit
Dim sloupec1 As String, sloupec2 As String, radek1 As Integer, radek2 As Integer
Sub makro()
If radek1 = 0 Then
radek1 = 10
radek2 = 200
sloupec1 = "A"
sloupec2 = "C"
End If
Worksheets("List1").Activate
znovu:
Dim Dotaz, Dotaz2
On Error GoTo chyba
radek1 = InputBox("Počáteční řádek?", "Počáteční řádek", radek1)
radek2 = InputBox("Konečný řádek?", "Konečný řádek", radek2)
sloupec1 = UCase(InputBox("Počáteční sloupec?", "Počáteční sloupec", sloupec1))
sloupec2 = UCase(InputBox("Konečný sloupec?", "Konečný sloupec", sloupec2))
Dotaz2 = MsgBox("Zvolený rozsah je " & sloupec1 & "-" & radek1 & ":" & sloupec2 & "-" & radek2, vbYesNo)
If Dotaz2 = 7 Then GoTo znovu
Range(sloupec1 & radek1 & ":" & sloupec2 & radek2).Select
Exit Sub
chyba:
Dotaz = MsgBox("Zadali jste chybně údaj. Zadáte znovu?", vbYesNo)
If Dotaz = 6 Then Resume Else Exit Sub
End Sub
Chtělo by to ještě ošetřit situaci, kdy někdo do sloupce zadá číslici místo písmena, což celé makro zbytečně komplikuje. Z tohoto důvodu je také vhodnější používat styl odkazu R1C1. Pak by to mohlo být takto:
Kód:
Option Explicit
Dim radek1 As Integer, radek2 As Integer, sloupec1 As Integer, sloupec2 As Integer
Sub makro()
If radek1 = 0 Then
radek1 = 10
radek2 = 200
sloupec1 = 1
sloupec2 = 3
End If
Worksheets("List1").Activate
znovu:
Dim Dotaz, Dotaz2
On Error GoTo chyba
radek1 = InputBox("Počáteční řádek?", "Počáteční řádek", radek1)
radek2 = InputBox("Konečný řádek?", "Konečný řádek", radek2)
sloupec1 = InputBox("Počáteční sloupec?", "Počáteční sloupec", sloupec1)
sloupec2 = InputBox("Konečný sloupec?", "Konečný sloupec", sloupec2)
Dotaz2 = MsgBox("Zvolený rozsah je R" & sloupec1 & "C" & radek1 & ":R" & sloupec2 & "C" & radek2, vbYesNo)
If Dotaz2 = 7 Then GoTo znovu
Range(Cells(radek1, sloupec1), Cells(radek2, sloupec2)).Select
Exit Sub
chyba:
Dotaz = MsgBox("Zadali jste chybně údaj. Zadáte znovu?", vbYesNo)
If Dotaz = 6 Then Resume Else Exit Sub
End Sub