Option Explicit

Private numSpan As Integer, numEL As Integer, numND As Integer, numDOF As Integer
Private spanLo As Double, Le As Double, EIe As Double, qo As Double
Private nodeDOF() As Integer, nodeQ() As Double
Private GK() As Double, LK(1 To 4, 1 To 4) As Double, dispDOF() As Double


Private Sub Form_Load()


    With MSFlexGrid1
        .Cols = 5
        .Rows = 5
    End With
   
End Sub


Private Sub SetInitialValues()
    numSpan = txtnumSpan.Text
    numEL = txtnumEL.Text
    spanLo = txtspanLo.Text
    EIe = txtEIe.Text
    qo = txtqo.Text
   
    numND = numSpan * numEL + 1
    numDOF = 2 * numND - (numSpan + 2)
    Le = spanLo / numEL

End Sub


Private Function GetNumDOF(nNode As Integer) As Integer
   
    Dim iSpan As Integer, iEL As Integer, iND As Integer, iDOF As Integer
    ReDim nodeDOF(nNode, 2) As Integer, nodeQ(nNode, 4) As Double
   
    iND = 0
    iDOF = 0
   
    For iSpan = 1 To numSpan
        For iEL = 1 To numEL
            iND = iND + 1
                Select Case iEL
                Case 1
                    nodeDOF(iND, 1) = 0
                Case Else
                    iDOF = iDOF + 1
                    nodeDOF(iND, 1) = iDOF
                End Select
            iDOF = iDOF + 1
            nodeDOF(iND, 2) = iDOF
        Next iEL
    Next iSpan
   
    iND = iND + 1
    nodeDOF(iND, 1) = 0
    nodeDOF(iND, 2) = 0

    ReDim GK(iDOF, iDOF + 1) As Double, dispDOF(iDOF) As Double
   
    For i = 1 To iDOF
        For j = 1 To iDOF + 1
            GK(i, j) = 0
        Next j
    Next i

    GetNumDOF = iDOF

End Function


Private Sub SetStiffnessMatrix()
   
    Dim i As Integer, j As Integer, ke As Double
   
    LK(1, 1) = 6:   LK(1, 2) = 3 * Le:    LK(1, 3) = -LK(1, 1):   LK(1, 4) = LK(1, 2)
    LK(2, 1) = LK(1, 2):     LK(2, 2) = 2 * Le ^ 2:    LK(2, 3) = -LK(2, 1):   LK(2, 4) = Le ^ 2
    LK(3, 1) = LK(1, 3):     LK(3, 2) = LK(2, 3):   LK(3, 3) = LK(1, 1):    LK(3, 4) = LK(3, 2)
    LK(4, 1) = LK(1, 4):     LK(4, 2) = LK(2, 4):   LK(4, 3) = LK(3, 4):    LK(4, 4) = LK(2, 2)
   
    ke = 2 * EIe / Le ^ 3
   
    For i = 1 To 4
        For j = 1 To 4
            LK(i, j) = ke * LK(i, j)
        Next j
    Next i

End Sub

 

Private Sub cmdInput_Click()

    Dim i As Integer, j As Integer
   
    Call SetInitialValues

    lblnumND.Caption = numND
    lblnumDOF.Caption = numDOF
    lblLe.Caption = Le
   
    For i = 1 To 4
        For j = 1 To 4
            MSFlexGrid1.TextMatrix(i, j) = LK(i, j)
        Next j
    Next i
      
     
End Sub


여기서 msflex그리드의 각 칸에 LK행렬 대응하는 값을 집어넣으려는데 위치는 다 맞는데 전부 값이 0이 나와요. 이거 왜 이런지 아시는분 계시나요?