Basta dichiarare la i prima della sub
Public Class Form1
Dim ind As Integer = 0, I As Integer = 0 '<<<<<<<<
Dim pulsanti(50) As Button, Etichette1(50) As Label, Etichette2(50) As Label
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim altezza As Integer = 20, larghezza As Integer = 60, posx As Integer, posy As Integer
I += 1
pulsanti(I) = New Button
posx = 20
posy = 20 + I * (altezza + 5)
pulsanti(I).Location = New Point(posx, posy)
pulsanti(I).Size = New Size(larghezza, altezza)
pulsanti(I).Text = I.ToString
pulsanti(I).TabIndex = I
Me.Controls.Add(pulsanti(I))
AddHandler pulsanti(I).Click, AddressOf BUTTON1Click
Etichette1(I) = New Label
Etichette2(I) = New Label
Etichette1(I).BorderStyle = BorderStyle.FixedSingle
Etichette2(I).BorderStyle = BorderStyle.FixedSingle
Etichette1(I).Location = New Point(posx + larghezza + 20, posy)
Etichette2(I).Location = New Point(posx + larghezza + 100, posy)
Etichette1(I).Size = New Size(larghezza, altezza)
Etichette1(I).Text = I.ToString
Etichette2(I).Size = New Size(larghezza, altezza)
Etichette2(I).Text = I.ToString
Me.Controls.Add(Etichette1(I))
Me.Controls.Add(Etichette2(I))
End Sub
Private Sub BUTTON1Click(ByVal sender As Object, ByVal e As System.EventArgs)
ind = CType(sender, Button).TabIndex
Etichette1(ind).Text = "Cancellata"
Etichette2(ind).Text = "Cancellata"
End Sub
Rnd Class