【问题标题】:Convert inch to mm using macro select Case in Word VBA使用 Word VBA 中的宏选择大小写将英寸转换为毫米
【发布时间】:2021-05-19 11:21:39
【问题描述】:

试图让这个宏在 Word VBA 中工作。任何解决此问题的帮助将不胜感激。

Sub ConvertToMM()

Dim wrdFind As Find
Dim wrdRng As Range
Dim wrdDoc As Document
Dim inch_in As Integer
Dim mm_out As Variant

Set wrdDoc = Application.ActiveDocument

Set wrdRng = wrdDoc.Content

Set wrdFind = wrdRng.Find

inch_in = CVar(mm_out)

mm_out = “”

With wrdFind

    Select Case inch_in
        Case Is = 0.039
            mm_out = “1MM”
        Case Is = 0.059
            mm_out = “1.5MM”
        Case Is = 0.079
            mm_out = “2MM”
        Case Is = 0.118
            mm_out = “3MM”
        Case Is = 0.157
            mm_out = “4MM”
        Case Is = 0.236
            mm_out = “6MM”
        Case Is = 0.315
            mm_out = “8MM”
        Case Is = 0.394
            mm_out = “10MM”
        Case Is = 0.472
            mm_out = “12MM”
    End Select

End With

    wrdRng.Text = mm_out

End Sub

【问题讨论】:

  • 因此您需要告诉我们您的代码有什么问题?你得到什么错误,在哪里? • 请注意,VBA 不接受这些智能引号“ ”,您需要将它们全部替换为普通引号" "
  • 能否也给我们介绍一下宏的用途?
  • 它将我所有的值替换为 8MM,我正在尝试专门搜索 Select Case 中要更改的数字,因为我想在文档中留下英制数字。

标签: vba ms-word select-case


【解决方案1】:

请尝试使用下一个功能:

Function InchToMM(i As Double) As String
     InchToMM = Round(i * 25.4, 0) & "MM"
End Function

可以用这样的代码调用/测试:

Sub testConvertInchToMM()
   Dim inc As String
   inc = "0.039" 'use Find or whatever you want to determine it...
    MsgBox InchToMM(CDbl(inc))
End Sub

【讨论】:

    【解决方案2】:

    首先,将 Word 中的 智能引号 替换为真正的双引号:

    Set wrdFind = wrdRng.Find
    
    inch_in = CVar(mm_out)
    mm_out = ""
    
    With wrdFind
        Select Case inch_in
            Case Is = 0.039
                mm_out = "1MM"
            Case Is = 0.059
                mm_out = "1.5MM"
            Case Is = 0.079
                mm_out = "2MM"
            Case Is = 0.118
                mm_out = "3MM"
            Case Is = 0.157
                mm_out = "4MM"
            Case Is = 0.236
                mm_out = "6MM"
            Case Is = 0.315
                mm_out = "8MM"
            Case Is = 0.394
                mm_out = "10MM"
            Case Is = 0.472
                mm_out = "12MM"
        End Select
    End With
    
    wrdRng.Text = mm_out
    

    如果“不起作用”,请考虑为您的任务提供通用方法,如下所示:

    Converting between meters and inches

    【讨论】:

      【解决方案3】:
      Sub AutoOpen()
      
      ConvertTO1MM
      ConvertTO1_5MM
      ConvertTO2MM
      ConvertTO3MM
      ConvertTO4MM
      ConvertTO5MM
      ConvertTO6MM
      ConvertTO8MM
      ConvertTO10MM
      ConvertTO12MM
      
      End Sub
      
      Sub ConvertTO1MM()
      
      Dim wrdFind As Find
      Dim wrdRng As Range
      Dim wrdDoc As Document
      Dim mm As Variant
      
      Set wrdDoc = Application.ActiveDocument
      
      Set wrdRng = wrdDoc.Content
      
      Set wrdFind = wrdRng.Find
      
      With wrdFind
      
          .Text = "0.039"
                                                 
          SearchResult = .Execute
                                                                  
          Select Case .Text
              Case Is = 0.039
                  mm = Round(.Text * 25.4, 0) & "MM"
          End Select
                                                                  
      End With
                                                                                                                     
          If SearchResult = True Then
                                                                                                                     
              wrdRng.Text = mm
                                                                                                                                  
          End If
                                                                                                                                  
      End Sub
      
      Sub ConvertTO1_5MM()
      
      Dim wrdFind As Find
      Dim wrdRng As Range
      Dim wrdDoc As Document
      Dim mm As Variant
      
      Set wrdDoc = Application.ActiveDocument
      
      Set wrdRng = wrdDoc.Content
      
      Set wrdFind = wrdRng.Find
      
      With wrdFind
      
          .Text = "0.059"
                                                 
          SearchResult = .Execute
                                                                  
          Select Case .Text
              Case Is = 0.059
                  mm = Round(.Text * 25.4, 1) & "MM"
          End Select
                                                                  
      End With
                                                                                                                     
          If SearchResult = True Then
                                                                                                                     
              wrdRng.Text = mm
                                                                                                                                  
          End If
                                                                                                                                  
      End Sub
      
      Sub ConvertTO2MM()
      
      Dim wrdFind As Find
      Dim wrdRng As Range
      Dim wrdDoc As Document
      Dim mm As Variant
      
      Set wrdDoc = Application.ActiveDocument
      
      Set wrdRng = wrdDoc.Content
      
      Set wrdFind = wrdRng.Find
      
      With wrdFind
      
          .Text = "0.079"
                                                 
          SearchResult = .Execute
                                                                  
          Select Case .Text
              Case Is = 0.079
                  mm = Round(.Text * 25.4, 0) & "MM"
          End Select
                                                                  
      End With
                                                                                                                     
          If SearchResult = True Then
                                                                                                                     
              wrdRng.Text = mm
                                                                                                                                  
          End If
                                                                                                                                  
      End Sub
      
      Sub ConvertTO3MM()
      
      Dim wrdFind As Find
      Dim wrdRng As Range
      Dim wrdDoc As Document
      Dim mm As Variant
      
      Set wrdDoc = Application.ActiveDocument
      
      Set wrdRng = wrdDoc.Content
      
      Set wrdFind = wrdRng.Find
      
      With wrdFind
      
          .Text = "0.118"
                                                 
          SearchResult = .Execute
                                                                  
          Select Case .Text
              Case Is = 0.118
                  mm = Round(.Text * 25.4, 0) & "MM"
          End Select
                                                                  
      End With
                                                                                                                     
          If SearchResult = True Then
                                                                                                                     
              wrdRng.Text = mm
                                                                                                                                  
          End If
                                                                                                                                  
      End Sub
      
      Sub ConvertTO4MM()
      
      Dim wrdFind As Find
      Dim wrdRng As Range
      Dim wrdDoc As Document
      Dim mm As Variant
      
      Set wrdDoc = Application.ActiveDocument
      
      Set wrdRng = wrdDoc.Content
      
      Set wrdFind = wrdRng.Find
      
      With wrdFind
      
          .Text = "0.157"
                                                 
          SearchResult = .Execute
                                                                  
          Select Case .Text
              Case Is = 0.157
                  mm = Round(.Text * 25.4, 0) & "MM"
          End Select
                                                                  
      End With
                                                                                                                     
          If SearchResult = True Then
                                                                                                                     
              wrdRng.Text = mm
                                                                                                                                  
          End If
                                                                                                                                  
      End Sub
      
      Sub ConvertTO5MM()
      
      Dim wrdFind As Find
      Dim wrdRng As Range
      Dim wrdDoc As Document
      Dim mm As Variant
      
      Set wrdDoc = Application.ActiveDocument
      
      Set wrdRng = wrdDoc.Content
      
      Set wrdFind = wrdRng.Find
      
      With wrdFind
      
          .Text = "0.196"
                                                 
          SearchResult = .Execute
                                                                  
          Select Case .Text
              Case Is = 0.196
                  mm = Round(.Text * 25.4, 0) & "MM"
          End Select
                                                                  
      End With
                                                                                                                     
          If SearchResult = True Then
                                                                                                                     
              wrdRng.Text = mm
                                                                                                                                  
          End If
                                                                                                                                  
      End Sub
      
      Sub ConvertTO6MM()
      
      Dim wrdFind As Find
      Dim wrdRng As Range
      Dim wrdDoc As Document
      Dim mm As Variant
      
      Set wrdDoc = Application.ActiveDocument
      
      Set wrdRng = wrdDoc.Content
      
      Set wrdFind = wrdRng.Find
      
      With wrdFind
      
          .Text = "0.236"
                                                 
          SearchResult = .Execute
                                                                  
          Select Case .Text
              Case Is = 0.236
                  mm = Round(.Text * 25.4, 0) & "MM"
          End Select
                                                                  
      End With
                                                                                                                     
          If SearchResult = True Then
                                                                                                                     
              wrdRng.Text = mm
                                                                                                                                  
          End If
                                                                                                                                  
      End Sub
      
      Sub ConvertTO8MM()
      
      Dim wrdFind As Find
      Dim wrdRng As Range
      Dim wrdDoc As Document
      Dim mm As Variant
      
      Set wrdDoc = Application.ActiveDocument
      
      Set wrdRng = wrdDoc.Content
      
      Set wrdFind = wrdRng.Find
      
      With wrdFind
      
          .Text = "0.315"
                                                 
          SearchResult = .Execute
                                                                  
          Select Case .Text
              Case Is = 0.315
                  mm = Round(.Text * 25.4, 0) & "MM"
          End Select
                                                                  
      End With
                                                                                                                     
          If SearchResult = True Then
                                                                                                                     
              wrdRng.Text = mm
                                                                                                                                  
          End If
                                                                                                                                  
      End Sub
      
      Sub ConvertTO10MM()
      
      Dim wrdFind As Find
      Dim wrdRng As Range
      Dim wrdDoc As Document
      Dim mm As Variant
      
      Set wrdDoc = Application.ActiveDocument
      
      Set wrdRng = wrdDoc.Content
      
      Set wrdFind = wrdRng.Find
      
      With wrdFind
      
          .Text = "0.394"
                                                 
          SearchResult = .Execute
                                                                  
          Select Case .Text
              Case Is = 0.394
                  mm = Round(.Text * 25.4, 0) & "MM"
          End Select
                                                                  
      End With
                                                                                                                     
          If SearchResult = True Then
                                                                                                                     
              wrdRng.Text = mm
                                                                                                                                  
          End If
                                                                                                                                  
      End Sub
      
      Sub ConvertTO12MM()
      
      Dim wrdFind As Find
      Dim wrdRng As Range
      Dim wrdDoc As Document
      Dim mm As Variant
      
      Set wrdDoc = Application.ActiveDocument
      
      Set wrdRng = wrdDoc.Content
      
      Set wrdFind = wrdRng.Find
      
      With wrdFind
      
          .Text = "0.472"
                                                 
          SearchResult = .Execute
                                                                  
          Select Case .Text
              Case Is = 0.472
                  mm = Round(.Text * 25.4, 0) & "MM"
          End Select
                                                                  
      End With
                                                                                                                     
          If SearchResult = True Then
                                                                                                                     
              wrdRng.Text = mm
                                                                                                                                  
          End If
                                                                                                                                  
      End Sub
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-03
        • 1970-01-01
        • 2019-03-09
        • 2016-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多