quote:
Op dinsdag 24 juli 2007 15:37 schreef DaFan het volgende:Waarom die Chr(i+64)? Is dat omdat ie anders geen 64 kolommen 'extra' herkent?
i is het kolom
nummer en niet de letter die je nodig hebt voor de range functie. omdat CHR(65) "A" is en kolomnummer van kolom "A" 1 is doe je dus CHR(kolomnummer+64) om de kolomletter te krijgen.
Ik heb de code voor scrabble voor wat betreft de letters invullen klaar. het is wel een beetje g4root gewoorden ivm 26 letters
. Ik heb een gekleurd vlak van A3 tm O17 (15x15 veld) en twee knop om het veld te wissen (sub Clearfield) en een knop om op de geselecteerde cel een letter in te voeren (sub Letter)
[code]
Sub Clearfield()
Range("A3:O17").Select
Selection.ClearContents
Range("A3").Select
End Sub
Sub Letter()
Dim invoer As String
'slaat lokatie geselecteerde cel op
rij = ActiveCell.Row
kolom = ActiveCell.Column
'controleert of de geselecteerde cel binnen het bereik zit
If rij < 3 Or rij > 17 Then
MsgBox "In het gekleurde vlak blijven, lambek"
Exit Sub
End If
If kolom > 15 Then
MsgBox "In het gekleurde vlak blijven, lambek"
Exit Sub
End If
'controleert of geselecteerde cel leeg is
If ActiveCell.Value <> "" Then
MsgBox "Lege cel selecteren, kweilgat"
Exit Sub
End If
'invoervenster
invoer = InputBox("Geef in te voeren letter", "Scrabble input")
'controleert of er maar 1 letter wordt ingevoerd
If Len(invoer) > 1 Then
MsgBox "Maar 1 letter tegelijk, dufmuts"
Exit Sub
End If
'maakt van kleine letters grote letters
If Asc(invoer) <= 122 And Asc(invoer) >= 97 Then invoer = Chr(Asc(invoer) - 32)
'per letter wordt nu gekeken of die nog ingevoerd mag worden
Select Case invoer
Case "A"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "A" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "A"
End If
'copy paste van de code in case "A" waarbij je de 2x de "A" moet
'vervangen door de gewenste letter en de max_aantal moet aanpassen
Case "B"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "B" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "B"
End If
Case "C"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "C" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "C"
End If
Case "D"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "D" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "D"
End If
Case "E"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "E" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "E"
End If
Case "F"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "F" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "F"
End If
Case "G"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "G" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "G"
End If
Case "H"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "H" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "H"
End If
Case "I"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "I" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "I"
End If
Case "J"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "J" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "J"
End If
Case "K"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "K" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "K"
End If
Case "L"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "L" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "L"
End If
Case "M"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "M" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "M"
End If
Case "N"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "N" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "N"
End If
Case "O"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "O" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "O"
End If
Case "P"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "P" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "P"
End If
Case "Q"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "Q" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "Q"
End If
Case "R"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "R" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "R"
End If
Case "S"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "S" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "S"
End If
Case "T"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "T" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "T"
End If
Case "U"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "U" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "U"
End If
Case "V"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "V" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "V"
End If
Case "W"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "W" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "W"
End If
Case "X"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "X" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "X"
End If
Case "Y"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "Y" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "Y"
End If
Case "Z"
aantal = 0
max_aantal = 5
For i = 1 To 15
For j = 3 To 18
waarde = Range(Chr(64 + i) & j).Value
If waarde = "Z" Then aantal = aantal + 1
Next
Next
If aantal > max_aantal - 1 Then
MsgBox ("Maximaal aantal letters """ & invoer & """ bereikt (" & max_aantal & ")")
Exit Sub
Else
Range(Chr(64 + kolom) & rij).Value = "Z"
End If
Case Else
MsgBox "Wel een letter invoeren stoephoer"
End Select
End Sub
[code]