简体   繁体   中英

Convert inch to mm using macro select Case in Word VBA

Trying to get this macro to work in Word VBA. Any help to fix this would be greatly appreciated.

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

Try using the next function, please:

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

It can be called/tested with such a code:

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

First, do replace the smart quotes from Word with real double-quotes:

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

If that "doesn't work", consider a generic method for your task as found here:

Converting between meters and inches

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM