반응형

초등수학학습지_저학년용.xls
0.06MB

 

이번 포스트를 통해 꼬마아이들의 공공의적 이 될런지도 모릅니다.

바로 초등 저학년 연산문제를 끝도 없이 만들수 있는 파일을 준비했기 때문입니다. 지난번 포스트에서 연산문제를 만드는 VBA 를 소개해 드렸었는데요.

https://diy-dev-design.tistory.com/38

 

[VBA] 초등학교 저학년 수학 연산 문제 자동으로 만들기

안녕하세요. 이번 강좌에서는 VBA 를 이용하여 초등학교 저학년 아이를 위한 연산문제를 자동으로 내주는 스크립트를 작성해 보겠습니다. VBA 를 좀 해봤다 하면서 막상 일상 생활에 사용하려면 사용할데가 마땅히..

diy-dev-design.tistory.com

 

해당 포스트로 정말 문제를 내려면 VBA를 작성하셔야만 자동으로 문제를 내는것이 가능하죠.

그런데 사실 제 블로그를 보시는 분들이 다 실제 개발을 하지는 않지 않겠습니까? 그래서 만들어진 엑셀 파일을 그냥 공유하려고 합니다. 물론 업로드하는 엑셀 파일에 사용된 코드에 대한 설명도 곁들여 보겠습니다.

 

지난번에 올린 것에 조금 업데이트 된 내용은 아래와 같습니다.

  • 버튼을 이용하여 문제를 바로 업데이트 할 수 있도록 할 것
  • 더한 결과의 합이 10 이상인 문제도 낼 수 있을 것 (원하는 경우에만)
  • 10의 자리와 1의 자리 덧셈을 낼 수 있을 것
  • 문제의 난이도를 사용자가 설정할 수 있을 것

요정도의 기능을 수행할 수 있는 버전으로 만들어 보았습니다.

 

복잡한 코드에 관심이 없으신 분은 바로 첨부파일 다운로드 및 공감 부탁드립니다. ㅋ 

맘카페에 퍼날라 주셔도 감사하겠습니다. 비싼 학습지 신청하지 마시고 사랑하는 마음으로 직접 내주시길 바랍니다.

 

먼저 파일을 여시게 되면 아래와 같은 경고창이 나올 수 있습니다.

제가 만든 매크로가 동작해야 하므로 콘텐츠 사용을 클릭해 주세요. 위험하지 않으니 걱정하지 않으셔도 됩니다.

우측의 버튼을 이용하여 연산 문제를 자동으로 새로 내는 것이 가능하다.

 

우측의 버튼은 엑셀이 업데이트 되면서 기본 기능에서는 빠진 기능을 이용해야 만들 수 있습니다. 기본적으로는 숨겨져 있기 때문에 설정 항목에서 단추를 만드는 기능을 꺼내야 합니다.

나중에 버튼(단추)을 만드는 예제는 따로 준비해서 올리겠습니다. 

VBA 에디터에 각 버튼에 해당되는 함수를 만든 뒤에 각 버튼에 만들어놓은 함수를 연결하는 방식으로 작업이 되었습니다. 코드를 보면 아래와 같습니다. 버튼별로 함수를 만들었기 때문에 조금 길이가 있습니다.

더보기

코드가 조금 길기 때문에 접은 글로 넣어 봤습니다.

Sub makeMath_under10()
    
    Dim aSht As Worksheet
    Dim rngA As Range
    Dim numA As Integer
    Dim numB As Integer
    
    Set aSht = ActiveSheet
    Set rngA = [B3]
    
    Randomize
    
    
    For i = 0 To 8
        
        numA = Int(Rnd * 9) + 1

        Do
            numB = Int(Rnd * 9) + 1
        
        Loop While (numA + numB > 10)
        
        rngA.Offset(i * 2, 0).Value = numA
        rngA.Offset(i * 2, 1).Value = "+"
        rngA.Offset(i * 2, 2).Value = numB
        rngA.Offset(i * 2, 3).Value = "="
        
    Next i
    
    For i = 0 To 8
        
        numA = Int(Rnd * 9) + 1

        Do
            numB = Int(Rnd * 9) + 1
        
        Loop While (numA + numB > 10)
        
        rngA.Offset(i * 2, 6).Value = numA
        rngA.Offset(i * 2, 7).Value = "+"
        rngA.Offset(i * 2, 8).Value = numB
        rngA.Offset(i * 2, 9).Value = "="
        
    Next i
    
End Sub
Sub makeMath_over10()
    
    Dim aSht As Worksheet
    Dim rngA As Range
    Dim numA As Integer
    Dim numB As Integer
    
    Set aSht = ActiveSheet
    Set rngA = [B3]
    
    Randomize
    
    aSht.Cells(1, 12).Value = Date
    
    For i = 0 To 8
        
        numA = Int(Rnd * 9) + 1

        Do
            numB = Int(Rnd * 9) + 1
        
        Loop While (numA + numB < 10)
        
        rngA.Offset(i * 2, 0).Value = numA
        rngA.Offset(i * 2, 1).Value = "+"
        rngA.Offset(i * 2, 2).Value = numB
        rngA.Offset(i * 2, 3).Value = "="
        
    Next i
    
    For i = 0 To 8
        
        numA = Int(Rnd * 9) + 1

        Do
            numB = Int(Rnd * 9) + 1
        
        Loop While (numA + numB < 10)
        
        rngA.Offset(i * 2, 6).Value = numA
        rngA.Offset(i * 2, 7).Value = "+"
        rngA.Offset(i * 2, 8).Value = numB
        rngA.Offset(i * 2, 9).Value = "="
        
    Next i
    
End Sub

Sub makeMath_under100_easy()
    
    Dim aSht As Worksheet
    Dim rngA As Range
    Dim numA As Integer
    Dim numB As Integer
    
    Set aSht = ActiveSheet
    Set rngA = [B3]
    
    Randomize
    
    aSht.Cells(1, 12).Value = Date
    
    For i = 0 To 8
        
        numA = Int(Rnd * 20) + 1

        Do
            numB = Int(Rnd * 10) + 1
        
        Loop While (numA + numB > 100)
        
        rngA.Offset(i * 2, 0).Value = numA
        rngA.Offset(i * 2, 1).Value = "+"
        rngA.Offset(i * 2, 2).Value = numB
        rngA.Offset(i * 2, 3).Value = "="
        
    Next i
    
    For i = 0 To 8
        
        numA = Int(Rnd * 20) + 1

        Do
            numB = Int(Rnd * 10) + 1
        
        Loop While (numA + numB > 100)
        
        rngA.Offset(i * 2, 6).Value = numA
        rngA.Offset(i * 2, 7).Value = "+"
        rngA.Offset(i * 2, 8).Value = numB
        rngA.Offset(i * 2, 9).Value = "="
        
    Next i
    
End Sub
Sub makeMath_under100_normal()
    
    Dim aSht As Worksheet
    Dim rngA As Range
    Dim numA As Integer
    Dim numB As Integer
    
    Set aSht = ActiveSheet
    Set rngA = [B3]
    
    Randomize
    
    aSht.Cells(1, 12).Value = Date
    
    For i = 0 To 8
        
        numA = Int(Rnd * 90) + 1

        Do
            numB = Int(Rnd * 10) + 1
        
        Loop While (numA + numB > 100)
        
        rngA.Offset(i * 2, 0).Value = numA
        rngA.Offset(i * 2, 1).Value = "+"
        rngA.Offset(i * 2, 2).Value = numB
        rngA.Offset(i * 2, 3).Value = "="
        
    Next i
    
    For i = 0 To 8
        
        numA = Int(Rnd * 90) + 1

        Do
            numB = Int(Rnd * 10) + 1
        
        Loop While (numA + numB > 100)
        
        rngA.Offset(i * 2, 6).Value = numA
        rngA.Offset(i * 2, 7).Value = "+"
        rngA.Offset(i * 2, 8).Value = numB
        rngA.Offset(i * 2, 9).Value = "="
        
    Next i
    
End Sub
Sub makeMath_under100_hard()
    
    Dim aSht As Worksheet
    Dim rngA As Range
    Dim numA As Integer
    Dim numB As Integer
    
    Set aSht = ActiveSheet
    Set rngA = [B3]
    
    Randomize
    
    aSht.Cells(1, 12).Value = Date
    
    For i = 0 To 8
        
        numA = Int(Rnd * 90) + 1

        Do
            numB = Int(Rnd * 90) + 1
        
        Loop While (numA + numB > 100)
        
        rngA.Offset(i * 2, 0).Value = numA
        rngA.Offset(i * 2, 1).Value = "+"
        rngA.Offset(i * 2, 2).Value = numB
        rngA.Offset(i * 2, 3).Value = "="
        
    Next i
    
    For i = 0 To 8
        
        numA = Int(Rnd * 90) + 1

        Do
            numB = Int(Rnd * 90) + 1
        
        Loop While (numA + numB > 100)
        
        rngA.Offset(i * 2, 6).Value = numA
        rngA.Offset(i * 2, 7).Value = "+"
        rngA.Offset(i * 2, 8).Value = numB
        rngA.Offset(i * 2, 9).Value = "="
        
    Next i
    
End Sub

 

요렇게 코드가 모두 작성이 되셨다면

단추마다 매크로를 연결해 줍니다.

단추에서 마우스 우클릭 후 매크로 지정
자신이 만든 매크로함수 중 연결할 대상을 선택해 준다.

 

이런식으로 함수를 연결해 주면 됩니다.

어렵지 않죠?

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면 클릭!!  부탁드려요~

 

엑셀에서 버튼을 이용하여 매크로를 실행시키는 예제는 아래 포스트를 참고해 주세요.

https://diy-dev-design.tistory.com/59

 

[vba] 버튼(단추)를 이용하여 스크립트 실행하기

어떤 엑셀 페이지에 늘 사용하는 스크립트를 작성하였으나 매번 실행하기 위하여 vba 창을 눌러 F5를 누르는 것은 사실 본인이 직접 스크립트 코드를 개발하는 입장이라면 조금도 번거로울 것이 없는 것이지만 누..

diy-dev-design.tistory.com

2020/06/22 - [DEV/VBA] - [vba] 초등학교 연산 자동 문제집 - 곱셈 추가

 

[vba] 초등학교 연산 자동 문제집 - 곱셈 추가

안녕하세요 주인장입니다. 코로나로 인한 개학연기로 아이들이 집안에서만 딩굴딩굴 거려 답답하신가요? 아이들에게 신나는 연산 문제를 내 주는건 어떨까요? ?? 는 아니고 VBA 로 제가 그동안 ��

diy-dev-design.tistory.com

 

반응형

+ Recent posts