タブ位置をお手軽に設定するアドイン(Word用)

タブ位置を気軽に設定するアドイン

akashi-keirin.hatenablog.com

これをもとに、アドイン化してみた。

コード

ごちゃごちゃなしでコードを全部載せる。

リスト1 標準モジュール
Public Sub タブ位置設定()
  Dim objDoc As Document
  Set objDoc = ActiveDocument
  Dim tmpStr As String
  tmpStr = InputBox( _
             Prompt:="指定したいタブ位置(整数値)を「,」(半角カンマ)区切りで入力せよ。" _
                     & vbCrLf & _
                     "※小数値は、小数部分を丸めて整数値として扱います。", _
             Title:="タブ位置の指定")
'///ガード節その1'
'///何も入力されなかったら処理を抜ける(キャンセルの場合も同じ)。'
  If tmpStr = "" Then Exit Sub
'///ガード節その2'
'///半角カンマが全くないのに、入力された値が数値として評価できない値だったら処理を抜ける。'
  If InStr(tmpStr, ",") = 0 And _
     Not IsNumeric(tmpStr) Then
     Call makeUserSick("数字と半角カンマで入力せんかいぼけー!")
     Exit Sub
  End If
'///ガード節その3'
'///カンマ区切りで入力された値に、数値以外が入っていたら処理を抜ける。'
  Dim positionsArray As Variant
  positionsArray = Split(tmpStr, ",")
  Dim maxPositions As Integer
  maxPositions = UBound(positionsArray) + 1
  Dim i As Integer
  For i = 1 To maxPositions
    If Not IsNumeric(positionsArray(i - 1)) Then
      Call makeUserSick("数字以外入れんなぼけー!")
      Exit Sub
    End If
  Next
'///ここから処理の本体'
'///一旦選択位置のタブをクリア。'
  Selection.ParagraphFormat.TabStops.ClearAll
'///選択位置のフォントサイズを取得'
  Dim p As Single
  p = Selection.Font.Size
'///タブを設定'
  For i = 1 To maxPositions
    With Selection.ParagraphFormat.TabStops
      .Add CInt(positionsArray(i - 1)) * p
    End With
  Next
End Sub

説明はコード中にコメントとして入れたので、今回は説明は省略。

実行

f:id:akashi_keirin:20171126203049j:plain

こんなふうにタブを設定して実行する。

f:id:akashi_keirin:20171126203223j:plain

見づらいけど、インプットボックスに「5,10,15,20,25,30」と入力した。

f:id:akashi_keirin:20171126203303j:plain

このように、5文字区切りでタブ位置が設定された。

「段落」メニューから「タブ設定」を見ると、

f:id:akashi_keirin:20171126203344j:plain

バッチリ設定されている。

f:id:akashi_keirin:20171126203453j:plain

今度は、「5.5,10.5,15.5,20.5,25.5,30.5」と入力してみた。

f:id:akashi_keirin:20171126203512j:plain

f:id:akashi_keirin:20171126203529j:plain

(゚Д゚)ハァ? 四捨五入と五捨六入が交互に……。

f:id:akashi_keirin:20171126203559j:plain

「あ」とだけ入力すると、

f:id:akashi_keirin:20171126203622j:plain

煽られるw

f:id:akashi_keirin:20171126203645j:plain

今度は、「5,10,15,20,ち~んw,30」と入力してみる。

f:id:akashi_keirin:20171126203705j:plain

煽られるw

ちなみに、煽り用プログラムは、

akashi-keirin.hatenablog.com

このときのものです。

コード見たら分かると思いますが、何も入力せずに[OK]をクリックしたり、[キャンセル]をクリックしたりすると、何事もなかったかのように処理を終了します。

@akashi_keirin on Twitter