返回列表 上一主題 發帖

[發問] 請教語法是哪裡出問題?

回復 10# GBKEE
感謝版主,我又學了一課。

TOP

回復 11# skyutm
問題又來了,又有一個解不開的問題,在秀出中文字時,是不是在中文加上""就可以了,然後加上&就可以連結變數,連結一個變數沒問題,可是我要再加第二個變數時,就顯示語法錯誤?不懂,煩請解惑,不勝感激!(我想秀出?年?班)

    '期中成績標題'
    Dim a1, a2
    a1 = Sheets("基本設定").Range("j1").Value
    a2 = Sheets("基本設定").Range("j2").Value
    With Sheets("期中成績")
    .Range("b2").Value = "新路國民小學" & a1&"年"

TOP

本帖最後由 GBKEE 於 2012-8-29 06:35 編輯

回復 12# skyutm
& 運算子與前後的字串或變數須空一格
&與前面連接的字串或變數空一格 , 系統會自動在&後空一格
A= B &C                 系統會自動在&後空一格    A= B & C
A=B &C &D &E   系統會只會 在&後空一格    A= B & C & D & E

TOP

回復 13# GBKEE
感謝版主大大,我又學到了一課。原來只是一個空格之差。從學習vba以來,我的心得就是:別人寫的不算,自己要試過才知道,當頭腦打結時,就要趕快問人,不然會原地打轉!

TOP

回復 13# GBKEE
抱歉!我又來打擾了。上次有討論過。但是這一次有做修正,卻出現問題
語法如下:
    Dim a11 As Integer, b11 As Integer, c11 As Integer, d11 As Integer, e11 As Integer, f11 As Integer, x11 As Integer
    a11 = b11 = c11 = d11 = e11 = f11 = 0
    myrowcount = Sheets("基本設定").Range("j3").Value + 5
    For x11 = 6 To myrowcount
    Set myrange = Sheets("期中成績").Range("c" & x11)
    Select Case myrange
        Case 100
            a11 = a11 + 1
        Case 90 To 99
            b11 = b11 + 1
        Case 80 To 89
            c11 = c11 + 1
        Case 70 To 79
            d11 = d11 + 1
        Case 60 To 69
            e11 = e11 + 1
        Case 0 To 59
            f11 = f11 + 1
    End Select
    Next x11
    Sheets("期中成績").Range("c108").Value = a11
    Sheets("期中成績").Range("c109").Value = b11
    Sheets("期中成績").Range("c110").Value = c11
    Sheets("期中成績").Range("c111").Value = d11
    Sheets("期中成績").Range("c112").Value = e11
    Sheets("期中成績").Range("c113").Value = f11
修正的地方,是把0~9 10~19 20~29 30~39 40~49 50~59 全部改成0~59 ,問題在於顯示100有幾人的地方會出現-1

TOP

抱歉!我又來打擾了。上次有討論過。但是這一次有做修正,卻出現問題
語法如下:
    Dim  ...
skyutm 發表於 2012-8-29 23:48


經測試的結果,
若執行過 a11 = b11 = c11 = d11 = e11 = f11 = 0 以後,
a11 固定會被改成 -1
我猜有可能是該指令被解晰成 :
a11= (a11 = 0) (中間的指令都被直接忽略掉了)
會這樣判斷是因為上式若改為 = 1 或 = 5 時,
a11 都會 = 0
而若變更中間參數名稱則那些參數值都不會變. (然而若有非事先定義的參數名稱出現,則會新增該參數出來)

偷懶的方法是在該行後再加上一個 :
a11 = 0

或是將該行改成 :
a11 = 0 : b11 = 0 : c11 = 0 : d11 = 0 : e11 = 0 : f11 = 0

其實不跑該行也是可以的,
因為整數於 Dim 後初值本來就是 0

C 的語法有些是不能在 Basic 上用的,
因為可能會造成非我們所預期的結果.

TOP

本帖最後由 GBKEE 於 2012-8-30 07:01 編輯

回復 15# skyutm
這些變數 a11 , b11, c11, d11, e11, f11    Dim   As Integer  程序尚未給值時 都為 0     
這式是多此一舉  a11 = b11 = c11 = d11 = e11 = f11 = 0   傳回   True 或 False   (++=+ ,  +-=- , --=+)
  1. Option Explicit
  2. Sub Ex()
  3. Dim xlBoolean As Boolean
  4. Dim a11 As Integer, b11 As Integer, c11 As Integer, d11 As Integer, e11 As Integer, f11 As Integer
  5. a11 = b11
  6. xlBoolean = a11
  7. Debug.Print xlBoolean & " " & a11 '即時運算視窗終可察看
  8. a11 = b11 = c11
  9. xlBoolean = a11
  10. Debug.Print xlBoolean & " " & a11
  11. a11 = b11 = c11 = d11
  12. xlBoolean = a11
  13. Debug.Print xlBoolean & " " & a11
  14. a11 = b11 = c11 = d11 = e11
  15. xlBoolean = a11
  16. Debug.Print xlBoolean & " " & a11
  17. a11 = b11 = c11 = d11 = e11 = f11
  18. xlBoolean = a11
  19. Debug.Print xlBoolean & " " & a11
  20. a11 = b11 = c11 = d11 = e11 = f11 = 0
  21. xlBoolean = a11
  22. Debug.Print xlBoolean & " " & a11
  23. End Sub
複製代碼

Boolean 資料型態Boolean 變數係以 16 位元( 2 個位元組)數字的形式儲存,但只能是 True 或是 False。Boolean 變數的值不是 True 就是 False ( 在使用 Print 的時候 ),或是 #TRUE# 和 #FALSE# ( 在使用 Write # 的時候 )。使用關鍵字 True 與 False 可將 Boolean 變數指定為這兩個狀態中的一個。
當轉換其他的數值型態為 Boolean 時,0 會轉成 False,而所有其他的值則變成 True。當轉換 Boolean 值為其他的資料型態,時,False 成為 0 ,而 True 成為 -1。

TOP

回復 17# GBKEE
抱歉又打擾了!因為最近遇到一些結解不開。所以就把語法重新整理一下,因為當初多是靠別人幫忙的,所以有些一知半解,知道版主功力深厚,特來請教一下,如有叼擾,還請見諒。就是這一句
    '期中評量自動輸入座號↓'  (這我知道)
    If Intersect(Target, [J1:J3]) Is Nothing Or [j3] = 0 Then Exit Sub  (我只知道後面:如果沒填資料或j3是0 語法就不執行,但前面不懂)
    ReDim ar(1 To [j3])    (不懂)
    YC = [j1] & Format([j2], "00")   (不懂)
    For i = 1 To [j3]   (瞭解)
    ar(i) = YC & Format(i, "00")  (不懂)
    Next   (瞭解)
    With Sheets("期中評量")    (瞭解)
    .Cells.Rows.Hidden = False  (所有儲存格不隱藏)
    .Cells.Columns.Hidden = False  (所有儲存格不隱藏)
    .[A:A] = ""  (不懂)
    .[a3].Resize([j3], 1) = Application.Transpose(ar)  (不懂)
    .Range("W1", .Cells(1, .Columns.Count)).EntireColumn.Hidden = True(w1到總計幾列都隱藏)
    .Range(.[a3].Offset([j3], 0), .Cells(Rows.Count, 1)).EntireRow.Hidden = True  (不懂)
    .Range("a1").Value = "座號"   (瞭解)
    End With   (瞭解)
    '期中評量自動輸入座號↑'  (瞭解)

TOP

回復 18# skyutm
Application.Transpose(ar) 是使用工作表 轉置函數  本帖 10# 已有介紹如何使用工作表
對於不懂的VBA  方法, 屬性, 函數 可多看 VBA中的說明練習它的範例 會進步的
這有整理   新手 VBA 入門常見問題

TOP

回復 19# GBKEE
報告版主大人,小弟我又遇到瓶頸了,因為在個人成績單輸出方面遇到問題,總成績單已經完成,也就是說資料如下:
座號  姓    名  國語  英語  數學  自然  社會
001  某某某   90      100    85      75     90
但在次頁的個人成績單,我想輸出成為a4頁大小,每頁有8筆資料,我知道最簡單卻麻煩的方法,就是把每筆成績,利用相對應的位置,輸入到個人成績欄位,但是無法控制資料的數量,因為有幾筆成績,是由「基本設定」工作表的班級人數欄控制的,該怎麼辦呢?有沒有其他的構想呢?附上檔案以便參考!

TOP

        靜思自在 : 謊言像一朵盛開的鮮花,外表美麗,生命短暫。
返回列表 上一主題