返回列表 上一主題 發帖

[發問] VBA某整段程式碼不執行(GoTo)的語法

[發問] VBA某整段程式碼不執行(GoTo)的語法

請問各位大大:
紅色整段程式碼不執行的語法編寫?
謝謝!
Private Sub CommandButton1_Click()
OOOOOOOOOO
OOOOOOOOOOO
OOOOOOOO
OOOOOOOOOO
OOOOOOOOOOOOO

XXXXXXXXX
XXXXXXXXXX
XXXXXX
XXXXXXX
XXXXXXXXX
XXXXXXXXXXXXX


OOOOOOOOOOO
OOOOOOOOOOOOO
OOOOOO
OOOOOOOO
OOOOO
End Sub

也就是說:如何跳過紅色整段的程式碼,繼續執行後面黑色的程式碼?
謝謝!

TOP

本帖最後由 ziv976688 於 2017-10-20 13:17 編輯

回復 3# jcchiang
J大:您好!
感謝回應!但這樣並沒有跳過紅色整段的程式碼,直接繼續執行後面黑色的程式碼,還是會執行紅色段落的程式碼^^"

發帖前:我有爬文,也是看到只要goto "標記"即可!但是嘗試了半天就是不行(如下所示),所以才上來發問。
OOOOOOOOOO
OOOOOOOOOOO
OOOOOOOO
OOOOOOOOOO
OOOOOOOOOOOOO
goto 101
XXXXXXXXX
XXXXXXXXXX
XXXXXX
XXXXXXX
XXXXXXXXX
XXXXXXXXXXXXX

101:
OOOOOOOOOOO
OOOOOOOOOOOOO
OOOOOO
OOOOOOOO
OOOOO

TOP

本帖最後由 ziv976688 於 2017-10-20 15:22 編輯

回復 5# jcchiang
J大:您好!
最主要是列328~列390(機率表)的部分:因為尚有疑問待決,所以想先暫不執行

有特意將列2 ',Msrr(1 To 49), Urr(1 To 49) 點綠不執行
但按執行鍵後,還是會停在列358顯示編輯錯誤的警示框^^"

範例檔下載網址:
http://www.FunP.Net/876373

TOP

回復 7# naruto018
n大:您好!
謝謝回應^^

GoTo指令放在Else下一列
結果一樣:還是會停在列358顯示編輯錯誤的警示框QQ

TOP

本帖最後由 ziv976688 於 2017-10-20 20:10 編輯

回復 1# ziv976688
2017-1020-Q-1 -.rar (96.21 KB)

原附檔程式碼太長~重新上傳附檔和說明:
         
             If a = INnum(N2 - 1) Then '比對期數的列  '列178
                Sheets.Add
                ActiveSheet.Name = "Sheet1"
                ActiveWindow.Zoom = 75 '縮放
                ' 複製"Sheet1"內容
                [A4].Resize(3, 79).Copy Sheets("Sheet1").Cells(4, 1) '複製DATA=A4:CA6貼上A4
                Cells(In1rr(N1 - 1) + 6, 1).Resize(In2rr(numh) - In1rr(N1 - 1) + 1, 1).Copy Sheets("Sheet1").Cells(7, 1) '複製DATA=A&StrRng到A&mthcount期數貼上A7
                Cells(In1rr(N1 - 1) + 6, 2).Resize(In2rr(numh) - In1rr(N1 - 1), 7).Copy Sheets("Sheet1").Cells(7, 2) '複製DATA=B&StrRng到H&mthcount-1期數貼上B7
                Cells(a.Row + 1, 1).Resize(In2rr(numh) - a.Row + 6, 1).Copy Sheets("Sheet1").Cells(7, 9)  '複製DATA=A欄比對期數+1到mthcount期數貼上I7
                Cells(a.Row + 1, 2).Resize(In2rr(numh) - a.Row + 5, 7).Copy Sheets("Sheet1").Cells(7, 10)  '複製DATA=B:H欄比對期數+1到mthcount期數貼上J7
                Cells(In1rr(N1 - 1) + 6, 1).Resize(a.Row - In1rr(N1 - 1) - 5, 8).Copy Sheets("Sheet1").Cells(In2rr(numh) - a.Row + 13, 9) '複製DATA=A:H欄起始期數到比對期數貼上I & mthcount-比對期數+13
                a.Copy Sheets("Sheet1").Cells(In2rr(numh) - In1rr(N1 - 1) + 7, a.Column) '複製搜尋值貼上mthcount期數B:H同欄
                a.Copy Sheets("Sheet1").Cells(In2rr(numh) - a.Row + 12, a.Column + 8) '複製搜尋值貼mthcount-比對期數+12列的J:P同欄
               
                Sheets("Sheet1").Range("AN5") = Cells(a.Row, 1) '指定的各比對期數
                ' 複製&字體標示
                Sheets("Sheet1").Cells(7, 1).Resize(In2rr(numh) - In1rr(N1 - 1) + 1, 8).Copy Sheets("Sheet1").Cells(7, 25) '複製A:H貼上Y
                Sheets("Sheet1").Cells(7, 9).Resize(In2rr(numh) - In1rr(N1 - 1) + 1, 8).Copy Sheets("Sheet1").Cells(7, 17) '複製I:P貼上Q
                Sheets("Sheet1").Cells(7, 9).Resize(In2rr(numh) - In1rr(N1 - 1) + 1, 1).Font.ColorIndex = 9 'I欄字體標示
                Sheets("Sheet1").Cells(7, 17).Resize(In2rr(numh) - In1rr(N1 - 1) + 1, 1).Font.ColorIndex = 10 'Q欄字體標示
                Sheets("Sheet1").Cells(7, 1).Resize(In2rr(numh) - In1rr(N1 - 1) + 1, 32).Copy Sheets("Sheet1").Cells(7, 47) '複製A:P貼上AU
                Sheets("Sheet1").Range("B8").Select
                ActiveWindow.FreezePanes = True  '凍結視窗
                Sheets("Sheet1").Move
                Application.DisplayAlerts = False
                ActiveWorkbook.SaveAs MyPath & "\49AC_" & INnum(N2 - 1) & "_" & Inlog(LOGN - 1) & "_" & In2rr(numh) & "-" & In1rr(N1 - 1) & "-" & Sheets("Sheet1").Range("AN5") & ".xls"
                ActiveWindow.Close

'GoTo l01
  '機率表......................................................................................... '列207
                Else
                    Sheets.Add
                    ActiveSheet.Name = "機率表"
                    Sheets(1).Cells.RowHeight = 20 '列高
                    ActiveWindow.Zoom = 75 '縮放
                    Sheets(1).Range("B2").Select
                    ActiveWindow.FreezePanes = True
                    With Sheets(1).[A1:F50]
                        .HorizontalAlignment = xlCenter
                        .Font.FontStyle = "粗體"
                        .Font.Size = 14
                    End With
                    Sheets(1).[A1:F50].Font.Name = "Arial"
                    Sheets(1).[a1] = "推測數字"
                    Sheets(1).[A1:A50].Font.ColorIndex = 7
                    Sheets(1).[A1:A50].NumberFormatLocal = "00"
                    Sheets(1).[B1] = "次數"
                    Sheets(1).[B1:B50].Font.ColorIndex = 11
                    Sheets(1).[C1] = "中獎數字"
                    Sheets(1).[C1:C8].Font.ColorIndex = 3
                    Sheets(1).[C1:C8].NumberFormatLocal = "00"
                    Sheets(1).[D1] = "中獎機率"
                    Sheets(1).[D2] = "=Count(C2:C8)/Count(A2:A50)"
                    Sheets(1).[D1:D2].Font.ColorIndex = 3
                    Sheets(1).[D2].NumberFormatLocal = "0.0%"
                    Sheets(1).Range("D2").Borders.LineStyle = xlContinuous
                    
                    Sheets(1).Columns("A:E").EntireColumn.AutoFit  '自動欄寬
                    Erase Msrr, Urr '清除機率表記錄
                    Sheets("機率表").Move
                    ActiveWorkbook.SaveAs mypath1 & "\49AC機_" & Numberx & "_" & Inlog(LOGN - 1) & "_" & In2rr(numh) & "-" & In1rr(N1 - 1) & ".xls"
                    ActiveWindow.Close
'....................................................................... '列240
            
'101:
            
            End If   '列244
...................
...................
...................
End Sub    '列255

最主要是列207~列240(機率表)的部分:因為尚有疑問待決,所以想先暫不執行

請問:
不執行TEST(1020)-B列207:240的程式碼,其程式碼應如何再編寫~
才可令程式碼由列204直接跳到列244(End If)繼續執行(即其執行效果=TEST(1020)-A)?
謝謝!

TOP

GoTo.png
2017-10-20 23:35


不知為什麼依照爬文所得的資訊操作~卻不能解決問題?
勞駕各位大大不吝指導!謝謝!

TOP

回復 11# jackyq
j大:您好!謝謝您的指導。可是改為line1,結果也是一樣^^"

TOP

本帖最後由 ziv976688 於 2017-10-21 19:10 編輯

回復 12# naruto018
  1.   '機率表...........
  2.                 Else
  3. GoTo 101
  4.                     Sheets.Add
  5.                     ActiveSheet.Name = "機率表"
  6.                     Sheets(1).Cells.RowHeight = 20 '列高
  7.                     ActiveWindow.Zoom = 75 '縮放
  8.                     Sheets(1).Range("B2").Select
  9.                     ActiveWindow.FreezePanes = True
  10.                     With Sheets(1).[A1:F50]
  11.                         .HorizontalAlignment = xlCenter
  12.                         .Font.FontStyle = "粗體"
  13.                         .Font.Size = 14
  14.                     End With
  15.                     Sheets(1).[A1:F50].Font.Name = "Arial"
  16.                     Sheets(1).[a1] = "推測數字"
  17.                     Sheets(1).[A1:A50].Font.ColorIndex = 7
  18.                     Sheets(1).[A1:A50].NumberFormatLocal = "00"
  19.                     Sheets(1).[B1] = "次數"
  20.                     Sheets(1).[B1:B50].Font.ColorIndex = 11
  21.                     Sheets(1).[C1] = "中獎數字"
  22.                     Sheets(1).[C1:C8].Font.ColorIndex = 3
  23.                     Sheets(1).[C1:C8].NumberFormatLocal = "00"
  24.                     Sheets(1).[D1] = "中獎機率"
  25.                     Sheets(1).[D2] = "=Count(C2:C8)/Count(A2:A50)"
  26.                     Sheets(1).[D1:D2].Font.ColorIndex = 3
  27.                     Sheets(1).[D2].NumberFormatLocal = "0.0%"
  28.                     Sheets(1).Range("D2").Borders.LineStyle = xlContinuous
  29.                     n = 1: m = 1: o = 1
  30.                     For i = 1 To 49
  31.                         If Msrr(i) > 0 Then
  32.                             n = n + 1
  33.                             Sheets(1).Cells(n, "A") = i
  34.                             Sheets(1).Cells(n, "B") = Msrr(i)
  35.                             If Urr(i) > 0 Then Sheets(1).Cells(n, "A").Interior.ColorIndex = 4
  36.                         End If
  37.                         If Urr(i) > 0 Then
  38.                             m = m + 1
  39.                             Sheets(1).Cells(m, "C") = i
  40.                         End If
  41.                     Next
  42.                         If Sheets(2).Range("H" & In2rr(numh) + 6) <> "" Then
  43.                         'For Each a In Sheets(1).Range("C2:C8")
  44.                         If a = "" Then Exit For
  45.                         If Application.CountIf(Sheets(2).Range("H" & In2rr(numh) + 6), a) Then: a.Interior.ColorIndex = 8
  46.                         'Next
  47.                         End If
  48.                     With Sheets(1).Range("C1:C" & m)
  49.                         .Borders.LineStyle = xlContinuous
  50.                     End With
  51.                     With Sheets(1).Range("A1:B" & n)
  52.                         .Borders.LineStyle = xlContinuous
  53.                     End With
  54.                     With Sheets(1)  '雙排序
  55.                          .Columns("A:B").Sort Key1:=.[B2], Order1:=xlDescending, Key2:=.[a2], Order2:=xlAscending, Header:=xlGuess
  56.                     End With
  57.                     
  58.                     Sheets(1).Columns("A:E").EntireColumn.AutoFit  '自動欄寬
  59.                     Erase Msrr, Urr '清除機率表記錄
  60.                     Sheets("機率表").Move
  61.                     ActiveWorkbook.SaveAs mypath1 & "\49AC機_" & Numberx & "_" & Inlog(LOGN - 1) & "_" & In2rr(numh) & "-" & In1rr(N1 - 1) & ".xls"
  62.                     ActiveWindow.Close
  63. '.......................................................................
  64.             
  65. 101:
複製代碼
n大:您好!謝謝您的再次指導。目前小弟以TEST(1021)的測試狀況是:
在Else(列208)下方插入GoTo 101(列209),在列271插入101:測試=>會停在列249  For Each a In Sheets(1).Range("C2:C8")
表示列210~列268的程式碼還是有被執行
列249和列252 Next 點綠不執行=>就OK的

事實上列210~列268的程式碼還是有被執行

PS:代碼列2=範例檔列208;代碼列65=範例檔列279

範例檔:
TEST(1021).rar (50.36 KB)

TOP

本帖最後由 ziv976688 於 2017-10-22 00:18 編輯

回復 15# naruto018
n大:您好!
小弟知道~但還是謝謝您的提醒^^

可能大家都誤解小弟這個提問的主軸了!?
我的問題重點是在GoTo的用法:
不是在程式碼的任意處插入GoTo 101[/b]............101:
.............的程式碼就會跳過不執行!?
如果的話,那...........的內容就不應該會影響執行的過程才對;
如果不是的話,那就表示GoTo的用法有限制或規範,EX:GoTo不是在程式碼的任意處插入即可。

所以~小弟本題的需求是想藉由各位高手的正確不對之實例(不一定是要以小弟貼上的範例)指導,學習GoTo的正確用法^^

TOP

        靜思自在 : 做該做的事是智慧,做不該做的事是愚癡。
返回列表 上一主題