Excel 为什么VBA代码会给我一个“变量未定义”错误?
几天前我发了一篇类似的帖子,得到了一些很好的建议/帮助,但我的代码似乎仍然不能正常运行。作为参考,我正在运行64位Excel,我的所有代码都包含在同一个模块中 我正在尝试创建一个函数,该函数将读取单元格的值,并播放与该值关联的特定WAV文件。例如,如果函数读取1,它将播放Amaj.wav,如果播放2,它将播放Amin.wav,依此类推。我的所有WAV文件都存储在与工作簿相同的目录中。以下是我当前的代码,摘自我上一篇文章的答案:Excel 为什么VBA代码会给我一个“变量未定义”错误?,excel,vba,function,collections,playsound,Excel,Vba,Function,Collections,Playsound,几天前我发了一篇类似的帖子,得到了一些很好的建议/帮助,但我的代码似乎仍然不能正常运行。作为参考,我正在运行64位Excel,我的所有代码都包含在同一个模块中 我正在尝试创建一个函数,该函数将读取单元格的值,并播放与该值关联的特定WAV文件。例如,如果函数读取1,它将播放Amaj.wav,如果播放2,它将播放Amin.wav,依此类推。我的所有WAV文件都存储在与工作簿相同的目录中。以下是我当前的代码,摘自我上一篇文章的答案: Option Explicit Private Declare P
Option Explicit
Private Declare PtrSafe Function PlaySound Lib "winmm.dll" _
Alias "PlaySoundA" (ByVal lpszName As String, _
ByVal hModule As Long, ByVal dwFlags As Long) As Long
Private ChordDict As New Collection
出于某种原因,每当我尝试在Excel工作簿中运行Sound函数时,都会收到一条编译错误消息:variable not defined(变量未定义)。高亮显示的行是函数SoundCell,长度为。有人对如何让代码按预期运行有什么建议吗?谢谢。固定功能
Function Sound(Cell As Long)
Dim WAVFile As String, SoundFile As String, i as long
Const SND_ASYNC = &H1
Const SND_FILENAME = &H200000
For i = 1 To ChordDict.count
If i = Cell Then
SoundFile = ChordDict(i)
WAVFile = ThisWorkbook.path & "\" & SoundFile
Call PlaySound(WAVFile, 0&, SND_ASYNC Or SND_FILENAME)
Exit Function
End If
Next
End Function
我看了另一个帖子。您需要在函数Sound中声明i。如果在运行代码之前运行Debug/Compile,右边的一行将突出显示。是否接受@Storax的答案???非常感谢@Storax!我的功能现在很好
Function Sound(Cell As Long)
Dim WAVFile As String, SoundFile As String
Const SND_ASYNC = &H1
Const SND_FILENAME = &H200000
For i = 1 To ChordDict.Count
If i = Cell Then
SoundFile = ChordDict(i)
Function Sound(Cell As Long)
Dim WAVFile As String, SoundFile As String, i as long
Const SND_ASYNC = &H1
Const SND_FILENAME = &H200000
For i = 1 To ChordDict.count
If i = Cell Then
SoundFile = ChordDict(i)
WAVFile = ThisWorkbook.path & "\" & SoundFile
Call PlaySound(WAVFile, 0&, SND_ASYNC Or SND_FILENAME)
Exit Function
End If
Next
End Function