Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


37971 / 76732 ←次へ | 前へ→

【43907】Re:変数の値を循環させて使用するには
回答  Hirofumi  - 06/10/29(日) 6:39 -

引用なし
パスワード
   あ!、ゴメン、間違えてる!
こうなるみたいですね?

Function Handan()

  With Selection.ShapeRange
    myLineName = .Name
    '左端を(p,q),右端を(r,s)。右下がりの場合は(p,s),(r,q)となる。
    p = .Left
    q = .Top + .Height
    r = .Left + .Width
    s = .Top
  End With
  aLine = LineNumber & "a"
  bLine = LineNumber & "b"
  cLine = LineNumber & "c"
'______________________________________________________

  If LineNumber = 0 Then    '基準線の場合
    Select Case Range("B3").Value
      Case Is = "上か左"
        Handan = "Sitei-Upper"
      Case Is = "下か右"
        Handan = "Sitei-Down"
    End Select
  End If
'______________________________________________________
  If LineNumber >= 1 Then   '三角形が1つ以上作成されている時
    With ActiveSheet.Shapes(cLine)
      cLeft = .Left
      cTop = .Top
      cHeight = .Height
      cRight = .Left + .Width
      cUnder = .Top + .Height
    End With
    With ActiveSheet.Shapes(aLine)
      aLeft = .Left
      aTop = .Top
      aHeight = .Height
      aRight = .Left + .Width
      aUnder = .Top + .Height
    End With
    With ActiveSheet.Shapes(bLine)
      bLeft = .Left
      bTop = .Top
      bHeight = .Height
      bRight = .Left + .Width
      bUnder = .Top + .Height
    End With
    'a線が選択された場合
    If Right(myLineName, 1) = "a" Then
      Handan = LineSelected(p, q, s, r, cRight, cLeft, _
            cTop, cUnder, bRight, bLeft, bTop, bUnder)
'-----------------------------------------------------------
    'b線が選択された場合
    ElseIf Right(myLineName, 1) = "b" Then
      Handan = LineSelected(p, q, s, r, aRight, aLeft, _
            aTop, aUnder, cRight, cLeft, cTop, cUnder)
'-----------------------------------------------------------
    'c線が選択された場合
    ElseIf Right(myLineName, 1) = "c" Then
      Handan = LineSelected(p, q, s, r, bRight, bLeft, _
            bTop, bUnder, aRight, aLeft, aTop, aUnder)
    End If

End Function

Private Function LineSelected(lngP As Long, _
                lngQ As Long, _
                lngS As Long, _
                lngR As Long, _
                Right1 As Long, _
                Left1 As Long, _
                Top1 As Long, _
                Under1 As Long, _
                Right2 As Long, _
                Left2 As Long, _
                Top2 As Long, _
                Under2 As Long) As String

  If (lngP = Left1) Or (lngP = Right1) Then '上に作る
    Select Case lngQ
      Case Top1, Under1
        Select Case lngS
          Case Top2, Under2
            Select Case lngR
              Case Left2, Right2
                LineSelected = "MigiAgariUe"
              Case Is = Right1
                LineSelected = "MigiSagariSita"
              Case Else
                LineSelected = "MigiAgariUe"
            End Select
          Case Is = Top1
            Select Case lngR
              Case Right2
                LineSelected = "MigiSagariUe"
              Case Else
                LineSelected = "MigiAgariUe"
            End Select
        End Select
      Case Top2, Under2
        Select Case lngS
          Case Top1, Under1
            Select Case lngR
              Case Left2, Right2
                LineSelected = "MigiSagariUe"
              Case Else
                LineSelected = "MigiAgariSita"
            End Select
          Case Is = Top2
            LineSelected = "MigiSagariUe"
        End Select
    End Select
  ElseIf (lngP = Left2) Or (lngP = Right2) Then '下に作る
    Select Case lngQ
      Case Top2, Under2
        Select Case lngS
          Case Top1, Under1
            Select Case lngR
              Case Left1, Right1
                LineSelected = "MigiAgariSita"
              Case Else
                LineSelected = "MigiSagariUe"
            End Select
          Case Is = Top2
            LineSelected = "MigiAgariSita"
        End Select
      Case Top1, Under1
        Select Case lngS
          Case Top2, Under2
            Select Case lngR
              Case Left1, Right1
                LineSelected = "MigiSagariSita"
              Case Else
                LineSelected = "MigiAgariUe"
            End Select
          Case Is = Top1
            LineSelected = "MigiSagariSita"
        End Select
    End Select
  End If
  
End Function

2 hits

【43896】変数の値を循環させて使用するには yata 06/10/28(土) 20:30 質問
【43897】Re:変数の値を循環させて使用するには かみちゃん 06/10/28(土) 20:54 発言
【43898】Re:変数の値を循環させて使用するには yata 06/10/28(土) 21:03 発言
【43899】Re:変数の値を循環させて使用するには かみちゃん 06/10/28(土) 21:16 発言
【43901】Re:変数の値を循環させて使用するには yata 06/10/28(土) 22:08 質問
【43902】Re:変数の値を循環させて使用するには Hirofumi 06/10/28(土) 22:14 回答
【43903】Re:変数の値を循環させて使用するには yata 06/10/28(土) 23:27 質問
【43904】Re:変数の値を循環させて使用するには Hirofumi 06/10/29(日) 1:09 回答
【43907】Re:変数の値を循環させて使用するには Hirofumi 06/10/29(日) 6:39 回答
【43908】Re:変数の値を循環させて使用するには yata 06/10/29(日) 8:26 お礼
【43913】Re:結果報告 yata 06/10/29(日) 16:55 お礼

37971 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free