You need to enable JavaScript to run this app. 求助开发可实现英文与莫尔斯码互转的VB Excel宏
优惠活动
大模型
产品
解决方案
定价
更多

求助开发可实现英文与莫尔斯码互转的VB Excel宏

可直接部署的Excel VBA双向莫尔斯转换宏

核心实现逻辑

  • 内置完整的标准莫尔斯码映射字典,覆盖26个英文字母、10个阿拉伯数字、常见标点符号,支持双向查找
  • 内置方向选择交互,无需单独编写两个独立转换宏
  • 自动处理输入内容的大小写兼容、无效字符识别、间隔规则匹配
  • 转换完成后通过MsgBox直接返回结果,匹配失败的字符会单独标注提示

完整可运行代码

Sub MorseConverter()
    ' 初始化莫尔斯码映射字典
    Dim morseDict As Object
    Set morseDict = CreateObject("Scripting.Dictionary")
    morseDict.CompareMode = vbTextCompare ' 不区分大小写匹配
    
    ' 填充英文字母映射
    morseDict("A") = ".-"
    morseDict("B") = "-..."
    morseDict("C") = "-.-."
    morseDict("D") = "-.."
    morseDict("E") = "."
    morseDict("F") = "..-."
    morseDict("G") = "--."
    morseDict("H") = "...."
    morseDict("I") = ".."
    morseDict("J") = ".---"
    morseDict("K") = "-.-"
    morseDict("L") = ".-.."
    morseDict("M") = "--"
    morseDict("N") = "-."
    morseDict("O") = "---"
    morseDict("P") = ".--."
    morseDict("Q") = "--.-"
    morseDict("R") = ".-."
    morseDict("S") = "..."
    morseDict("T") = "-"
    morseDict("U") = "..-"
    morseDict("V") = "...-"
    morseDict("W") = ".--"
    morseDict("X") = "-..-"
    morseDict("Y") = "-.--"
    morseDict("Z") = "--.."
    
    ' 填充数字映射
    morseDict("0") = "-----"
    morseDict("1") = ".----"
    morseDict("2") = "..---"
    morseDict("3") = "...--"
    morseDict("4") = "....-"
    morseDict("5") = "....."
    morseDict("6") = "-...."
    morseDict("7") = "--..."
    morseDict("8") = "---.."
    morseDict("9") = "----."
    
    ' 选择转换方向
    Dim convertDir As VbMsgBoxResult
    convertDir = MsgBox("点击【是】:英文/数字 转 莫尔斯码" & vbCrLf & "点击【否】:莫尔斯码 转 英文/数字", vbYesNoCancel + vbQuestion, "选择转换方向")
    If convertDir = vbCancel Then Exit Sub
    
    ' 获取输入内容
    Dim userInput As String
    If convertDir = vbYes Then
        userInput = InputBox("请输入需要转换为莫尔斯码的英文/数字内容:", "英文转莫尔斯输入")
    Else
        userInput = InputBox("请输入需要转换为英文的莫尔斯码,规则:" & vbCrLf & "1. 单个字符间用单个空格分隔" & vbCrLf & "2. 单词间用 / 分隔", "莫尔斯转英文输入")
    End If
    If Trim(userInput) = "" Then Exit Sub
    
    Dim resultStr As String
    resultStr = ""
    
    ' 执行英文转莫尔斯逻辑
    If convertDir = vbYes Then
        Dim i As Long, curChar As String
        For i = 1 To Len(userInput)
            curChar = Mid(userInput, i, 1)
            If curChar = " " Then
                resultStr = resultStr & " / " ' 单词间隔转成斜杠标识
            ElseIf morseDict.Exists(curChar) Then
                resultStr = resultStr & morseDict(curChar) & " "
            Else
                resultStr = resultStr & "[无效字符:" & curChar & "] "
            End If
        Next i
        resultStr = Trim(resultStr)
    Else
        ' 执行莫尔斯转英文逻辑
        Dim wordArr As Variant, charArr As Variant, j As Long
        Dim matchFlag As Boolean
        wordArr = Split(userInput, "/") ' 先拆分单词
        For i = 0 To UBound(wordArr)
            charArr = Split(Trim(wordArr(i)), " ") ' 拆分单词内的单个莫尔斯字符
            For j = 0 To UBound(charArr)
                If charArr(j) <> "" Then
                    matchFlag = False
                    ' 反向查找字典匹配
                    Dim dictKey As Variant
                    For Each dictKey In morseDict.Keys
                        If morseDict(dictKey) = charArr(j) Then
                            resultStr = resultStr & dictKey
                            matchFlag = True
                            Exit For
                        End If
                    Next dictKey
                    ' 没匹配到就标无效
                    If Not matchFlag Then
                        resultStr = resultStr & "[无效码:" & charArr(j) & "]"
                    End If
                End If
            Next j
            resultStr = resultStr & " "
        Next i
        resultStr = Trim(resultStr)
    End If
    
    ' 弹出结果
    MsgBox "转换结果:" & vbCrLf & vbCrLf & resultStr, vbInformation, "转换完成"
End Sub

快速使用步骤

  • 打开目标Excel文件,按下Alt+F11调出VBA编辑器
  • 在左侧工程栏右键点击当前工作簿,依次选择「插入」→「模块」
  • 将上述代码完整粘贴到右侧模块编辑区
  • 按下F5即可运行宏,按照弹窗指引完成转换操作

内容的提问来源于stack exchange,提问作者Saša Bugarin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.11 20:24:01