Yahoo Answers is shutting down on May 4th, 2021 (Eastern Time) and the Yahoo Answers website is now in read-only mode. There will be no changes to other Yahoo properties or services, or your Yahoo account. You can find more information about the Yahoo Answers shutdown and how to download your data on this help page.

Anonymous
Anonymous asked in 教育與參考考試 · 2 decades ago

麻煩各位大大= EXCEL的VBA的問題

1A B C D E F G H

2姓名月份伙食費置裝費房租費燃料費娛樂費水電費

3王一 一月4,200 800 3,000 300 600 300

4王一二月4,000 500 3,000 350 750 350

5王一 三月3,800 300 3,000 250 500 400

6王一四月3,750 200 3,000 300 450 320

7王一五月4,200 350 3,000 280 700 300

8王一 六月4,300 400 3,000 300 500 600

9王一七月3,900 250 3,000 190 640 650

10王一 八月4,100 300 3,000 320 450 700

11王一九月4,030 500 3,000 200 600 750

12王 一十月3,900 1,000 3,000 290 500 650

13王 一 十一月4,200 300 3,000 320 300 300

14王一十二月3,700 200 3,000 260 500 300

15林二 一月2,800 1,200 0 250 450 102

16林二 二月3,200 699 3,000 300 380 151

17林二 三月2,450 799 3,000 250 360 184

18林二 四月2,650 399 3,000 280 500 172

19林二 五月3,150 599 3,000 270 460 163

20林二 六月3,250 0 3,000 320 250 132

21林二 七月3,100 1,588 3,000 260 340 122

22林二 八月2,850 299 0 240 410 169

23林二 九月2,950 599 0 255 370 188

24林二 十月2,850 499 3,000 320 3,500 145

25林二 十一月3,400 499 3,000 310 490 147

26林二 十二月3,500 1,350 3,000 330 390 158

我想要用TEXTBOX輸入一月份時可以印出=>

2姓名月份伙食費置裝費房租費燃料費娛樂費水電費

3王一 一月4,200 800 3,000 300 600 300

15林二 一月2,800 1,200 0 250 450 102

輸入二月時可以印出=>

2姓名月份伙食費置裝費房租費燃料費娛樂費水電費

4王一二月4,000 500 3,000 350 750 350

16林二 二月3,200 699 3,000 300 380 151

以此類推

最好可以用到=>(1)FOR NEXT (2)IF判斷

如果可以的話在程式碼加個注解(我是初學者)

因為老師只教一節課的VBA,要我們交出作業,實在是寫不出來,麻煩各位大大幫個忙吧~~感激不盡

2 Answers

Rating
  • 2 decades ago
    Favorite Answer

    Private Sub CommandButton1_Click()

    Dim r1, r2, r As Range

    Dim v1, v3 As String

    Dim kk, c1, c2, cnt As Integer

    cnt = Range("寢室號碼").Count '計算範圍"寢室號碼"有幾筆記錄

    On Error Resume Next

    v1 = TextBox1.Text

    c1 = Range("寢室號碼").Find(v1).Row - 4 '在"寢室號碼"範圍中尋找v1編號,找到後取得v1編號所的列,再減去4(第一個編號從第5列開始)。v2亦同

    If v1 < 810 Or v1 > 814 Then '判斷TextBox1輸入的值是否超出範圍

    c = MsgBox("TextBox1輸入錯誤")

    End If

    TextBox1.Text = v1

    c1 = Range("寢室號碼").Find(v1).Row - 4

    On Error Resume Next

    v2 = TextBox2.Text

    c2 = Range("寢室號碼").Find(v2).Row - 4

    If v2 < 810 Or v2 > 814 Then '判斷TextBox2輸入的值是否超出範圍

    d = MsgBox("TextBox2輸入錯誤")

    End If

    TextBox2.Text = v2

    c2 = Range("寢室號碼").Find(v2).Row - 4

    For kk = 1 To c2 - c1 + 1 '計算要cnt循環的次數

    Sheets("sheet").Select '選取工作表"sheet"

    Set r1 = Range("a4:k4") 'R1代表儲存格範圍a4:k4(欄位名稱)

    Set r2 = Range(Cells((c1 - 1) + kk + 4, 1), Cells((c1 - 1) + kk + 4, 11)) 'Cells((第幾筆資料 - 1) +第幾次循環 + 4, 1), Cells(列, 欄)

    Set r = Union(r1, r2) '將r1及r2設為聯合儲存格範圍選取聯合範圍(執行第一次迴圈時選取對a4:k4及a5:k5,第二次為a4:k4及a6:k6,第三次為a4:k4及a7:k7....

    r.Select

    Selection.Copy

    Sheets("巨集").Select '選取工作表"巨集"

    Cells((kk - 1) * 3 + 1, 1).Select '課本p17-6(由第幾列開始印出)

    ActiveSheet.Paste '執行貼上

    Next kk

    Range("a1").Select '選取A1以取消狀態

    End Sub

    Source(s): ME
Still have questions? Get your answers by asking now.