返回列表 上一主題 發帖

[發問] 各位先進大家好,有個小問題想問

本帖最後由 GBKEE 於 2013-9-13 10:50 編輯

回復 1# wxad0285
這 a1 , b1 , c1 , d1 , e1 , f1 , g1 , h1 , i1  的數值在哪裡,
檢查程式碼卻總是出現"資料型態不正確"? 哪一行程式碼, 附檔上來才清楚錯誤在哪裡.
  1. Worksheets("salary").Range("Y3").Value = a1 + b1 + c1 + d1 + e1 + f1 + g1 + h1 + i1
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 GBKEE 於 2013-9-13 16:25 編輯

回復 3# wxad0285
試試看
  1. Option Explicit
  2. Sub firstrecord()
  3.     Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer
  4.     Dim a1 As Integer, b1 As Integer, c1 As Integer, d1 As Integer, e1 As Integer, f1 As Integer, g1 As Integer, h1 As Integer, i1 As Integer
  5.     Dim Sh As Worksheet, xRow As Integer, i As Integer
  6.     Set Sh = Sheets("salary")    '這裡設立工作表變數    '*** 如工作表要改名稱: 這�塈鴾@次就可以  *****
  7.    xRow = Application.CountA(Sh.Range("a:a"))            '有資料儲存格的計數
  8.    With Sh
  9.          .Cells(xRow + 1, "A") = xRow - 1                '編號: 為有資料儲存格的計數-1
  10.         For i = 1 To 12
  11.             '將應支金額填入,並相對應excel的儲存格' 1-10
  12.             If i <= 10 Then .Cells(xRow + 1, "A").Offset(, i) = UserForm1.Controls("Textbox" & i)
  13.             '將應扣金額填入,並相對應excel的儲存格' 11-22
  14.             .Cells(xRow + 1, "M").Offset(, i - 1) = UserForm1.Controls("Textbox" & i + 10)
  15.         Next
  16.     End With
  17.     '將應支金額相加'
  18.     With UserForm1
  19.        '檢查程式碼卻總是出現"資料型態不正確"? ->'當控制項 為空白時 不可作四則運算
  20.         a = Val(.TextBox3)                    ' a 也可以 = 工作表的儲存格 ,不必加 Val函數
  21.         b = Val(.TextBox4) * Val(.TextBox5)   '儲存格為空白時自動轉為 0 可作四則運算
  22.         c = Val(.TextBox6) * Val(.TextBox7)
  23.         d = Val(.TextBox8) * Val(.TextBox9)
  24.         e = Val(.TextBox10)
  25.     '顯示出應支金額小計'
  26.         Sh.Range("L3").Value = a + b + c + d + e
  27.         .Label19 = Sh.Range("L3")
  28.     '顯示各項目小計'
  29.         .Label35 = b
  30.         .Label34 = c
  31.         .Label13 = d
  32.     '將應扣金額相加'
  33.         a1 = Val(.TextBox11)
  34.         b1 = Val(.TextBox12)
  35.         c1 = Val(.TextBox13)
  36.         d1 = Val(.TextBox14)
  37.         e1 = Val(.TextBox15)
  38.         f1 = Val(.TextBox22)
  39.         g1 = Val(.TextBox16) * Val(.TextBox17)
  40.         h1 = Val(.TextBox18) * Val(.TextBox19)
  41.         i1 = Val(.TextBox20) * Val(.TextBox21)
  42.     '顯示應扣金額小計'
  43.         Sh.Range("Y3").Value = a1 + b1 + c1 + d1 + e1 + f1 + g1 + h1 + i1
  44.         .Label42 = Sh.Range("Y3")
  45.     '顯示實支金額'
  46.         .Label16 = .Label19 - .Label42
  47.         'Sh.Range("Y3")-Sh.Range("L3")   儲存格為空白時自動轉為 0
  48.        End With
  49. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 GBKEE 於 2013-9-16 16:33 編輯

回復 5# wxad0285
  多看看,會看出竅門的
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 7# wxad0285
不錯,vba要進步就是要如此研究
  1. Range 集合
  2. 代表某一儲存格、某一欄、某一列、某一指定範圍 (該指定範圍可包含一個或若干連續儲存格範圍) 或者某一立體範圍。
複製代碼
Cells(列索引,欄索引)  ->Cell(xRow+1, "A")   , 列索引必須是數字,欄索引可以是數字或文字
  1. Option Explicit
  2. Sub Ex()
  3.   With Range("D10:F15")
  4.     .Select
  5.     MsgBox .Range("A" & .Rows.Count).Address
  6.     MsgBox .Cells(.Rows.Count, 1).Address
  7.     MsgBox .Range("C6").Address
  8.     MsgBox .Cells(.Rows.Count, .Columns.Count).Address
  9. End With
  10. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 站在半路,比走到目標更辛苦。
返回列表 上一主題