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:
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.