O que você está tentando alcançar é:
myList = VBA.Array("word1", "word2")
Mas o problema que você está enfrentando é porque o valor do InputBox é retornado como uma única string. O resultado é:
msg = "word1, word2"
myList = VBA.Array("word1, word2")
Então, você só pesquisará essa string específica.
A maneira mais fácil de contornar este problema usando este código é usando a função Split
.
Split (string, delimiter, limit, compare)
O Split irá pegar uma string, dividi-la e retorná-la como uma matriz, que é exatamente o que você deseja. Alterando
myList = VBA.Array(msg)
para
myList = Split(msg, ", ")
Limite de palavras
Se você quiser limitar a quantidade de palavras-chave, adicione um cheque à quantidade de palavras-chave inseridas usando:
Application.CountA(myList)
E limite-o com um " If Application.CountA(myList) > 6 Then
" ou similar.
Segurança de seleção
Outra coisa que você pode querer adicionar, é um limite na quantidade de células selecionadas para executar o código.
Se o usuário decidir "selecionar todos" antes de usá-lo, o Excel provavelmente ficará inoperante por horas, a menos que force o fechamento do programa.
Um simples:
If Application.Selection.Count > 1000 Then
Ou semelhante, seguido por um aviso ou um ponto final, provavelmente seria sensato.