Ho risolto da me..
invece del ciclo for ho utilizzato un ciclo do while loop
codice:
Public Sub Controlla_Data(ByVal selectedDate As Date)
Dim controlla As Odbc.OdbcCommand
Dim List As Odbc.OdbcDataReader
Dim SQL As String = "select message from promemoria where data = '" + DataOnly(selectedDate).ToString + "'"
controlla = New Odbc.OdbcCommand(SQL, Conn)
Conn.Open()
List = controlla.ExecuteReader()
If List.HasRows Then
Label3.Text = "Numero promemoria per il giorno selezionato : " + List.RecordsAffected.ToString
ListBox1.Items.Clear()
Do While List.Read
ListBox1.Items.Add(List.GetValue(0).ToString())
MessageBox.Show(List.GetValue(0).ToString())
Loop
Else
ListBox1.Items.Clear()
Label3.Text = "Nessun promemoria presente per il giorno selezionato"
End If
List.Close()
Conn.Close()
End Sub
Continuo a non capire perchè prima facesse il duplicato, ed anche se adesso non lo fa più sarei curioso di sapere il perchè, per evitare di ripetere l'errore in futuro