NOW  CONSTRUCTING

TOP PAGE  CEMENT ENGINEERING  EXCEL VBA .NET VB SCHTASKS/WSH

.

2. EXCEL-VBA  SHORT PROGRAM & EXCEL SHEET

.

.
1. カーソルの上下・左右の移動切替
.
   カーソルの上下・左右の移動は オプション(O)→編集→入力後にセルを移動する(M)で設定出来るが、操作が煩雑である。    
   Visual Basic EditorでVBAProjectを開き、VBAProject(PERSONAL..XLS)の標準モジュールに下記マクロをに書込み(コピーにても可)、保存してEXCELに戻る。 ユーザー設定(C)→コマンド→マクロからユーザー設定ボタン(ニコチャンマーク)をドラッグ&ドロップでツールバーに入れる。 その後、ニコチャンをクリックした時に出る「マクロの登録」でリストにあるCursolMoveをクリックしてマクロ名(M):に転送し、「OK」ボタンを押すと ニコチャンと下記マクロはリンクされ、ニコチャンをクリックするたびに移動が上下・左右に切替わる。 
   ユーザー設定(C)を開き、ニコチャンを右クリックするとニコチャンに名前(N)を付けることが出来る。 またニコチャンの色・形を変更したり、別のアイコンに変更することも出来る。  (画像ー01)右上に変色したニコチャンマークの表示あり。
   多量のデータを同一方向に入力する場合 カーソルの移動が簡単に切替できて便利である。
.

SOURCE CODE

Sub CursolMove()

If Application.MoveAfterReturnDirection = xlToRight Then
   Application.MoveAfterReturnDirection = xlDown
Else
   Application.MoveAfterReturnDirection = xlToRight
End If

End Sub
.
   ツール(T)→マクロ(M)→新しいマクロの記録(M)で出る「マクロの記録」にマクロ名(M)に分かりやすい名前(例:CursolMove等)を付け、マクロの保存先(I)を「個人用マクロブック(PERSONAL..XLSの標準モジュールに記録される)」にして、良く使うキー操作(文字サイズ・色変更、セル色変更、条件付き書式等)を登録して保存、上記と同様な方法でニコチャンマークにリンクさせれば、複雑なキー操作がワンクリックで可能となる。
.
2. 条件付き書式
..
   書式(O)・条件付き書式(D)では「3個」の条件しか設定できない。(次期Officeでは無制限といわれているが?)
   株価のデータ収集(画像ー01)において、H行の記述に多数(3個以上)の条件付き書式を設定出来たので参考に記述する。
   プログラムの条件として、H行の文字が「微下方・下方・大下方・無配・減配」の場合は文字を赤色とする。 一方 業績が赤字の場合 セルを黄色にした上に文字も赤色とする。   業績が赤字の場合は必ず最初に「赤」書いてデータを入れる。 
      プログラムの動作は、文字が「微下方・下方・大下方・無配・減配」の場合は文字を赤色にする。 最初の文字が「赤」の場合、「赤」を読み取って、文字を赤色にした上、セルも黄色にする。 「赤」が削除されたデータに書き換えると、文字は黒・セルは白に自動的に戻る。  プログラム中先頭の 100-400の番号 は行番号である。
   このプログラムはシート固有のプログラムであるため Visual Basic EditorでVBAProjectを開き、VBAProjectのMicrosoft Excel Objectsの該当シートに記述する(コピーした場合は条件等を変えること)必要がある。   マクロはEXCELシートの起動時に自動的に読み込まれる。

(画像−01)

.

SOURCE CODE

Private Sub Worksheet_Change(ByVal Target As Range)

Dim icolor As Integer

If Not Intersect(Target, Range("H4:H500")) Is Nothing Then                                          Select Case Target
      Case "微下方"  ' Case 100 To 200 (範囲の記述)
          icolor = 3: GoTo 150
     Case "下方"
          icolor = 3: GoTo 150
     Case "大下方"
          icolor = 3: GoTo 150
     Case "無配"
          icolor = 3: GoTo 150
     Case "減配"
          icolor = 3: GoTo 150
     Case Else
         GoTo 300
100    icolor = 3
          Target.Interior.ColorIndex = 6: GoTo 160
150    Target.Interior.ColorIndex = 0
160
 End Select
          Target.Font.ColorIndex = icolor
End If

200    GoTo 400

300  '"赤"の取得
          Dim AK As String
          AK = Left(Target, 1)
        If AK = "赤" Then GoTo 100 Else GoTo 150
400

End Sub

.
3. EXCELシートの印刷禁止
.
   EXCELシートはデータの保護は出来るが、印刷禁止は出来ない。  MS技術サポートとメールのやり取りして、ヒントをもらい 試行錯誤で作成したのが  CEMENT PLANT ENGINEERING EXCEL−VBA PROGRAM で使用した印刷禁止のマクロで、コードは下記である。
   このマクロはブック共通となるため、VBAProjectのMicrosoft Excel Objects内のThisWorkBookに記述(コピーも可)する。 マクロはEXCELシートの起動時に自動的に読み込まれる。

SOURCE CODE

Private Sub Workbook_BeforePrint(Cancel As Boolean)

    Flag = MsgBox(" Can't print out.  OK ? ", vbYes)

  If Flag = vbNo Or vbYes Then
    Cancel = True
  End If

End Sub
.
   上記を参考に WORDシートの印刷禁止に取り組み 同等な機能は確認できたが、ウイルスセキュリティソフトがマクロをウイルスと認識して ウマク作動せず 作成を断念。WORDシートはPDFに変換して、保護・印刷禁止としている。
   WORDシートを印刷禁止するマクロがあればアドバイス願いたい。
.
4. 貼付と罫線削除 2007/02/03
   Webからデータをコピーして貼り付けた場合、不要な罫線がコピーされることがある。貼付と同時に、罫線を削除する簡単なプログラムを紹介する。 「マクロの記録」からでも作成可能であるが、処理が遅いので使えない。  「マクロの記録」より作成されるコードは2行、4〜11行となるが、4〜11行を3行で代替。 PERSONAL.EXLに書き込み、ニコチャンマークにリンクさせれば、ワンクリックで「貼付と罫線削除」が可能となる。

SOURCE CODE

Sub Paste_DelLine()

  ActiveSheet.Paste
  Selection.Borders().LineStyle = xlNone

  'Selection.Borders(xlDiagonalDown).LineStyle = xlNone
  'Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  'Selection.Borders(xlEdgeLeft).LineStyle = xlNone
  'Selection.Borders(xlEdgeTop).LineStyle = xlNone
  'Selection.Borders(xlEdgeBottom).LineStyle = xlNone
  'Selection.Borders(xlEdgeRight).LineStyle = xlNone
  'Selection.Borders(xlInsideVertical).LineStyle = xlNone
  'Selection.Borders(xlInsideHorizontal).LineStyle = xlNone


End Sub

.
.  データの指定位置への移動 2007/10/01
.
   行方向にランダムな列に書かれたデータを同一行の指定列にマクロで移動させる。
(画像ー2)にある2〜7行のランダムな列にあるデータをAA列に揃えて移動する。 2行のAA、BBデータをAA列に移動した場合の「マクロの記録」は SOURCE CODE の5〜8行となる。 このマクロでは 移動セル数、移動先セル名が固定しているので 3行のCC-DDデータを「マクロの実行」で同一行AAセルに移動できない。   
   6行の「25」と7行の「”AA2”」を変数に変えると 3行のCC-DDデータを範囲選択後 「マクロの実行」(個人用マクロブックに保存し、ニコチャンマークにリンクさせておいてクリックする)で同データが 同一行のAA列に移動する。 4〜7行のデータも同様にAA列に移動できる。
   データ行が多く、また移動列が離れている場合は非常に便利なマクロとなる。   約1400行で、ランダム4列に書かれたデータ整理に役立った。

.

(画像ー02)

拡大は画像クリック

.

SOURCE CODE

Sub MoveData()
   'Macro1 Macro 
   'マクロ記録日 : 2007/9/30 ユーザー名 : Ryu&You
'
  'Selection.Cut 
  'ActiveWindow.SmallScroll ToRight:=25
  'Range(”AA2”).Select 
  'ActiveSheet.Paste 
'
   Dim Row, Col, AA As Integer 
     Dim BB, ET As String 
         Row = ActiveCell.Row          '行位置
         Col = ActiveCell.Column         '列位置
         BB = "ET" & Row            '移動先指定(変数)セル名の作成
         AA = 27 - Col               '移動セル数の計算
                        'Debug.Print AA; BB; Row; Col: End 
    Selection.Cut 
   ActiveWindow.SmallScroll ToRight:=AA       'セルの移動
    Range(BB).Select                    'セル範囲の選択
    ActiveSheet.Paste 
'
End Sub
.6. 自動的に列方向へセルをコピー&貼付    ( 「2.条件付書式」と関連)
.
   選択した列範囲内のセルを上から順番に自動的に「コピー&貼付」を行う。
「2.条件付書式」においてプログラムした列のセルは書き換えると条件に応じて書式(フォント・色等)が変わる。 しかしそのセルのリンク先ではその列に同プログラムを移植してもデータは変更表示されるが書式は変わらない。 リンク先の書式を変えるためには「コピー&貼付」しなければならない。 リンク数が多いと「コピー&貼付」をセル一つずつ行うのも大変だ。
   そこで下記マクロを作成、書式を変える列を範囲選択してニコチャンマークをクリックすれば選択範囲内の書式を自動的に修正表示させることにした。 セルが一段ずつ下がり書式が修正される。
.

SOURCE CODE

Sub CopyPasteColumn()

' Macro1 Macro
' マクロ記録日 : 2007/10/4  ユーザー名 : Ryu&You
'
    Dim Row, RowN , Col , N As Integer
    Dim BB As String
'
        Row = ActiveCell.Row
          Col = ActiveCell.Column
          RowN = Selection.Rows.Count                '選択行数
         'Debug.Print Row, Col , BB, CC, RowN: End
'
     For N = Row To Row + RowN - 1
    'BB="I"& N
          ActiveWindow.SmallScroll Down:=1                              '行の一段下げ
          Cells(N, Col ).Select                                              'セルの選択
'
          Selection.Copy
          ActiveSheet.Past
          'Debug.Print N, BB
'
     Next N ': End
'
End Sub
.
7. 不連続範囲の一発選択
.
   不連続な範囲を選択(して、その後コピー状態に)する場合は Ctrl-Key を使わねばならず、両手作業となる。 マウスだけの片手だけで不連続な範囲を選択するために下記マクロを作成した。
   本マクロは 不連続な同一長さの2列を選択し、コピー状態まで行うためのマクロで、 適当な1列にマウスで必要長さ(行数)を選択しておけば ニコチャンマークをクリックするだけで 平行方向のその長さの2列(G列AA:BB、I列CC:DD)を選択し、コピー状態にする。 下記マクロを参考に Unionメソッド を使えば多数の範囲選択が出来る。
.

SOURCE CODE

Sub Multi_RangeSelect()
'

    Dim Row, RowN , Col As Integer

    Dim AA, BB, CC, DD As String
'

      Row = ActiveCell.Row

      Col = ActiveCell.Column
      RowN = Selection.Rows.Count                          '適当な一列長さ(選択行数)
    AA = "G" & Row: BB = "G" & Row + RowN - 1
    CC = "I" & Row: DD = "I" & Row + RowN - 1
       'Debug.Print Row, Col , AA, BB, CC, DD, RowN ': End
'

      'Range(AA, BB).Select

       'Range(CC, DD).Select
     Union(Range(AA, BB), Range(CC, DD)).Select     '多数の範囲選択
    Selection.Copy                        'コピー状態
'
End Sub
.
8. カーソルの指定シートの指定セルへの移動
.
   ブック内のあるシートから指定シートの指定セルへカーソルをマクロにより移動させる。 移動先カーソルはウインドウ枠を固定した指定シートの左上に位置させる。
   Book01の「GG〜AA」の各シートから対応するSheet1の「C309〜C3」へカーソルを移動させる。 現在のカーソルがどの「GG〜AA」シートにあるかシート名を読み取って対応するSheet1の「C309〜C3」に移動する。 あらかじめSheet1の指定セルにはブックマークを付けてリンクを張り#F6(A310)からC258へ飛ぶようにしておく。 理由はSheet1に張付けられた表を左上に揃えたいからこの様な方法をとったが、他の方法もある。 #G7、E5〜#A1も同様にする。  実際組んだマクロがシートの 終わり→初め に作業するように作ったので本サンプルもそのままにしているが、必要なら 初め→終わり に作業を進めるよう修正願いたい。
   If 文は2分岐では If Then Else End If でも書けるが、実プログラムは3分岐もあるのでこの様な書き方とした。
       Book01の内容については左記 Book01.htm をクリックしてください。
.

SOURCE CODE

Sub SheetCellMove()

'
    Dim WS As String
    WS = ActiveCell.Worksheet.Name               'シート名読み取り
         'Debug.Print WS: End
'
 Select Case WS                    'シート名により分岐
   Case "GG"    
     If ActiveCell.Row >= 54 Then GoTo 100    '最初カーソルはGGの54行以降に
     If 52 >= ActiveCell.Row Then GoTo 101  '置き、次は52行以内置く
100    Worksheets("Sheet1").Select
     Worksheets("Sheet1").Range("A361").Select
     Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True: GoTo 102
101     Worksheets("Sheet1").Select
     Worksheets("Sheet1").Range("A310").Select
     Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True: GoTo 102
102      
'

Case "FF"                       'カーソル位置はFF内のどこでも 

     Worksheets("Sheet1").Select         '良い  EE〜BBも同様
     Worksheets("Sheet1").Range("A259").Select
     Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
'
'
'   Case "EE"    Case "DD"  Case "CC"  は省略
'      A206            A157             A106 
'

Case "BB"

     Worksheets("Sheet1").Select
     Worksheets("Sheet1").Range("A55").Select
     Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
'
 End Select  
'
End Sub
.
   次回は No−8,4,7 を組み合わせて  ホームページ上の表データをコピー状態にしておき、GG〜AAシート上からSheet1の指定位置に貼り付け、貼り付けた表データの必要部分を選択し、選択部分をコピー状態にする までの一連のマクロを3個のプロシジャーで構成して実行させる統合マクロを作成する。 選択部分はコピー状態にあるため GG〜AA のシートに戻って そのシートの必要位置に簡単に貼り付けられる。 ホームページ上の必要データをパソコンに取り込み、時系列的に並べる作業が軽減される。
.
9. 表データの貼付とデータの選択 
.
   上段をメイン、中段をサブ1、下段をサブ2呼ぶと プログラムの動きはメインの Paste_DelLine01 でサブ1へ、サブ1から RangeSelectCopy01 でサブ2へ飛ぶ。 
   ホームページ上の表データをコピー状態にしておき、最初のカーソルを GGシートの54行以降に置いておいて、ニコチャンマークをクリックすると 表データがSheet1のGG枠内に張付けられて A−5、A−7 列が選択され、コピー状態となる。
   コピー状態になったSheet1のデータを GGシート に戻って、時系列的にデータを入れたい場所 G3 にカーソルを置いて、EXCELの貼付のアイコンをクリックすれば G,H にデータが挿入できる。

SOURCE CODE

Sub DataPaste_Select()         ' 各シートからSheet1の指定場所へカーソル移動

    Dim WS As String

    WS = ActiveCell.Worksheet.Name
    'Debug.Print WS: End

 Select Case WS

   Case "GG"
     If ActiveCell.Row >= 54 Then GoTo 100
     If 52 >= ActiveCell.Row Then GoTo 101
100    Worksheets("Sheet1").Select
     Worksheets("Sheet1").Range("A361").Select
     Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True: GoTo 102
101    Worksheets("Sheet1").Select
     Worksheets("Sheet1").Range("A310").Select
     Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True: GoTo 102
102      Paste_DelLine01

   Case "FF"
     Worksheets("Sheet1").Select
     Worksheets("Sheet1").Range("A55").Select
     Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
        Paste_DelLine0

      Case "EE"   Case "DD" Case "CC"  は省略                                                       A206              A157             A106    

   Case "BB"
     Worksheets("Sheet1").Select
     Worksheets("Sheet1").Range("A55").Select
     Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
        Paste_DelLine01

 End Select
End Sub

Sub Paste_DelLine01()    'Sheet1の移動カーソル位置表データを貼付、掛線削除

    ActiveSheet.Paste
    Selection.Borders().LineStyle = xlNone

    Sheets("Sheet1").Select
                RangeSelectCopy01

End Sub
Sub RangeSelectCopy01()   '表データの G,I 列Row行を選択し、コピー状態にする

    Dim Row, RowN, Col, N As Integer
    Dim AA, BB, CC, DD As String

    Row = ActiveCell.Row
    Col = ActiveCell.Column
    RowN = Selection.Rows.Count
      AA = "G" & Row: BB = "G" & Row + RowN - 1
      CC = "I" & Row: DD = "I" & Row + RowN - 1
         ' Debug.Print Row, Col, AA, BB, CC, DD, RowN ': End

         'Range(AA, BB).Select
         'Range(CC, DD).Select
    Union(Range(AA, BB), Range(CC, DD)).Select
    Selection.Copy

End Sub                                                
.
10.  追加データの別表への取得
.
   Sheet1のデータをGGシートへ張付ける時に、Sheet1のデータの追加L列データをGGシートの別表に挿入するマクロを次に記述する。 GGシートのG3にカーソルを置きニコチャンマークをクリックして下記のマクロを実行すれば G,H と Sheet1の L のデータがGGシートの 別表G列 に取得できる。 Book2に表とデータの関連を示す、
   1.リンク方式数式データの貼付 と 2.直接方式データの貼付 の両方をコードに書き込んである。 1.リンク方式はリンクを貼る手間はかかるが、プログラムが簡単だ。 2.直接方式は EachRangeSelect02 のサブルーティンが必要となる。
      Book02の内容については左記 Book02.htm をクリックしてください。
.
 
Sub Paste_DataGet()
'
' Macro1 Macro
' マクロ記録日 : 2007/10/10 ユーザー名 : Ryu&You
'
    ActiveSheet.Paste         'Sheet1選択セルの貼付

    Dim AA, BB, WSS As String    '追加データの範囲選択とコピー/貼付
    Dim M, N As Integer
       M = ActiveCell.Column
       N = ActiveCell.Row
          ' Debug.Print M: End

                        '(1.リンク方式数式データの貼付)
    Range("L309:L358").Select   'リンク先数式データ範囲設定とコピー状態に
    Selection.Copy
    ActiveWindow.SmallScroll Down:=-50   '指定先G71にカーソルを移動
    ActiveWindow.SmallScroll ToRight:=M - 5
    Cells(71, M).Select
    ActiveSheet.Paste      '指定先に数式貼付により数式データ挿入
    Range(Cells(71, M), Cells(120, M)).Select    '挿入数式データの数値化
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

      'WSS = ActiveCell.Worksheet.Name  '(2.直接方式データの貼付 :6行)

      'EachRangeSelect02

      'Selection.Copy
      'Sheets(WSS).Select
      'Cells(801, M).Select
      'ActiveSheet.Paste

    Selection.Font.ColorIndex = 5      '数値化フォントの青へ色替え
    Application.CutCopyMode = False    'コピー状態解除


    Application.Wait (Now() + TimeValue("00:00:03")) '3秒間停止タイマー:データ
                                          '確認のため挿入

    Cells(3, M).Select  'カーソルを戻す

End Sub
Sub EachRangeSelect02()

    Dim WS As String

    WS = ActiveCell.Worksheet.Name
    Debug.Print WS: End

  Select Case WS

    Case "GG"
      If ActiveCell.Row = 3 Then
       Worksheets("Sheet1").Select
       Range("L309:L358").Select
      Else
      End If

    Case "FF"
      If ActiveCell.Row = 3 Then
       Worksheets("Sheet1").Select
       Range("L258:L307").Select
      Else
      End If

    Case "EE"  Case "DD"  Case "CC"  Case "BB"  '省略

    Case "AA"
      If ActiveCell.Row = 3 Then
       Worksheets("Sheet1").Select
       Range("L3:L52").Select
      Else
      End If

  End Select
End Sub
.
    シート名取得、アクティブ範囲行列数取得、カーソルの位置取得と移動方法、範囲選定に変数の使用方法等をマスターすれば Book内へデータの取り込みまたはデータの移動が自由に出来る。  
  データが時系列的に並べば 後はEXCELのグラフ機能を使って簡単に好きな形式のグラフを作ることが出来てデータの変動が一目で分かる。
.   
  ここに記載の全マクロは実際に使用しているが、No−8,9,10 はモデル化に当たってバグ(シート名、セル番号等、コードは実マクロからのコピーのためバグはないと思う)があるかもしれないので その時は修正願いたい。
.
11. インボリュート逆関数 と 転位歯車の基本計算
.
  御年67才、転位歯車の諸元を基本計算することになり インボリュート関数 なんてチンプンカンプン、NET (http://www.nc-net.or.jp/morilog/m120353.html)のお世話になって ヤット 理解できるようになる。 投稿者には感謝。 プログラム、エクセルマクロ登録、使用方法が 解かりにくかったので ここで 簡単に利用できるように 説明した。

.

プログラム

Function INV(α)        ’インボリュート関数定義
   INV = Tan(α) - α
End Function


Function AINV(invα)     ’インボリュート逆関数の計算  ニュートン法による解
    B = 1.5706
  Do
    S = B
    B = S - (Tan(S) - S - invα) / (Tan(S) ^ 2)
  Loop Until Abs(B - S) < 0.000000001
    AINV = B
End Function

 

.
EXSAMPLE 転位平歯車の基本計算 (出典:KHK歯車大学より)
pinion 1 gear 2
m:モジュール 3
α:圧力角 20
z:歯数 12 24
x:転位係数 0.6 0.36
invα’ 2・tanα・(x1+x2)/(z1+z2)+invα

0.034316195

inv20.0= 0.0149044
inv14.5= 0.0055448
α’:圧力角 0.455332 rad 26.08851807
y:距離係数 (z1+z2)/2・(cosα/cosα’-1) 0.833286828
a:中心距離 ((z1+z2)/2+y)・m

56.49986048

d:基準円 z・m 36 72
db:基準円 d・cosα 33.82892 67.6578486
d':噛合部PCD db/cosα’ 37.66657 75.33314731
ha1:歯末の丈 (1+y-x2)・m 4.41986
ha2:歯末の丈 (1+y-x1)・m 3.699860485
h:歯丈 (2.25+y-(x1+x2))・m

6.369860485

da:歯先円直径 d+2・ha 44.83972 79.39972097
df:歯底円直径 da-2・h 32.1 66.66
      invα’=0.0034316195 の場合 α’=0.455332rad=26.08851807° となる。
         (註)プログラムの α は 基本計算の α’ と同じ。
.
エクセルマクロへの登録( Function は エクセル自作関数 の定義コード)
1.歯車の諸元を計算しているエクセルブックの 「ツール」→「マクロ」→「Visual Basic Editor」 クリックしてエディター画面を開く。 
2.画面左の「VBAProject」を左クリックして 「挿入」から「標準モジュール」をクリックすると プロジェクト内に「標準モジュール」(Module1)が追加され 右にModule1ウインドウが開く。 ここに上記プログラムをコピーする。
3.上書きしてエクセルブックに戻る。 ブック内でインボリュート逆関数が利用可能となる。
エクセルブックでの使用方法
1.セル(A,5)に 角度α(radian)値が あるとしよう。 セル(A,7)にインボリュート逆関数を表示させようとすれば セル(A,7)に ”=AINV(A,5)” と記述すれば 逆関数がradianで求められる。
2.他のブックで使用したい場合は 計算しようとするブックに 上記と同様にコピーして使用することになります。 どのブックでも使える PERSONAL.EXL と Function関数 との違いとなります。    
.
12. インボリュート歯車の歯形作図 ( 前 11.と関連 )
.
  大口径歯車(m=22、θ=20°、N=13x109)メンテに携わっているが、摩耗が進行してきたので、歯の計測を始めた。 オリジナル歯形寸法を知るために歯形作図に挑戦した。 簡単にするため エクセルの表計算とグラフ機能 を使用する。 インボリュート関数、座標変換等インターネットで探し グラフ化出来た。 転位歯車であるためか 計算と理論 どうりでは どうも 実際の歯形(歯厚)と異なるようなので 手入力で修正系数を入れて 実際の歯形 に近くなるようにした。 お分かりの方に 正しい方法をアドバイス願えれば幸いです。
エクセルブック は 下記ファイル名 クリック して DL 願いたい。
.

ファイル名 : Shape Drawing for Shifted Gear Tooth

.
転位平歯車 の 歯厚計算    (出典:KHK歯車大学より)
pinion 1
m 22   ha =m + mx 22
α 20        
13   歯厚 s= 34.5576
0    =(π/2+2・tanα)・m
ha =m + mx   歯厚半径 ψ= 6.9230769
       =90/z+(360・tanα)/(π・z)
PCD= 286   弦歯厚 ss 34.473571
b= 85    =z・m・sinψ  
      弦高さ hha 23.042636
       =z・m(1-cosψ)/2+ha
gear 2
m 22   ha =m + mx 44
α 20        
109   歯厚 s= 50.572331
1    =(π/2+2・tanα)m  
ha =m + mx   歯厚半径 ψ= 1.2083296
       =90/z+(360・tanα)/(π・z)
PCD= 2398   弦歯厚 ss 50.568582
b= 90    =z・m・sinψ  
      弦高さ hha 44.266625
       =z・m(1-cosψ)/2+ha
転位平歯車 の 基礎計算    (出典:KHK歯車大学より)
pinion 1 gear 2
m:モジュール       22
α:圧力角       20
z:歯数       13 109
x:転位係数       0 1
インボリュートα’ 2・tanα・(x1+x2)/(z1+z2)+inv α

0.020871232

inv α’

       

inv α=

Tan α - α 0.014904492    

AINV(inv α’)

( 前 11.プログラム使用)
α’:圧力角   0.38891 rad 22.28282225
y:距離係数 (z1+z2)/2・(cosα/cosα’-1) 0.947262616
a:中心距離 ((z1+z2)/2+y)・m   1362.839778
d:基準円 z・m     286 2398
db:基準円 d・cosα     268.752 2253.3822
d':噛合部PCD db/cosα’   290.4413 2435.2383
ha1:歯末の丈 (1+y-x2)・m   20.83978  
ha2:歯末の丈 (1+y-x1)・m     42.839778
h:歯丈 (2.25+y-(x1+x2))・m  

48.33977756

da:歯先円直径 d+2・ha     327.6796 2483.6796
df:歯底円直径 da-2・h     231 2387

.

13. 平歯車の強度計算 ( 前 12.と関連 )
.
  前 12.転位平歯車の強度計算を KHK歯車大学 の計算式に基づき エクセルの表計算を利用して 少ない入力(数値表を新たに作成し、極力自動入力とした)で 入力(Kw)に対して、歯車曲げ強度(Kw)及び面圧強度(Kw)が十分であるかどうかを 「OK or NO」 で判定するプログラム作成した。  参考として KHK歯車大学の計算式のオリジナル を添付してあります。 歯車設計等については 実経験ないため 計算式の解釈等に間違いあれば アドバイスいただき、修正を加えて行くことにしたい。 
.

ファイル名 : Check of Gear Tooth_Strength

.
  プログラム詳細内容については 上記ファイルを 開くか又は保存して確認、試用してください。 参考になれば幸いである。
.
.

TOP PAGE  CEMENT ENGINEERING  EXCEL VBA .NET VB SCHTASKS/WSH

NOW  CONSTRUCTING