Excel 公式和 vba 的超級新手。感謝您提供的任何見解。
我正在嘗試在我的電子表格中實作語言切換器。我目前有以下作業表:資料(在列中輸入值的位置)、摘要(資料作業表中輸入的所有內容的摘要)、F(存盤函式和下拉串列項的位置)、T(英語/法語翻譯)
在選擇英語或法語時,所有作業表中都有細胞。在 T 作業表中有 3 列,其中 A 是參考列,B 是英語單詞,C 是翻譯的法語單詞。
切換語言的下拉選單位于資料作業表中。我在 Visual Basic 編輯器中輸入了以下代碼(雙擊串列中的資料作業表后)。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set Target = Range("C5")
Dim langCol
If Target.Value = "English" Then
langCol = 2 'now it's in english
Else
langCol = 3 'now it's in french
End If
Sheets("Data").Cells(1, 1).Value = Sheets("T").Cells(5, langCol).Value
Sheets("Data").Cells(2, 1).Value = Sheets("T").Cells(6, langCol).Value
'....many more cell swaps here 100 total
End Sub
當我將它作為“作業表選擇更改”運行時,此代碼有效,并在我從位于“C5”的下拉選單中選擇英語或法語時按預期翻譯所有內容。我的問題是此代碼僅在我單擊“C5”單元格后才執行。期望的結果是在選擇語言時進行翻譯,而“C5”單元格仍處于活動狀態。
當我用以下代碼交換開頭的代碼行時:
Private Sub Worksheet_Change(ByVal Target As Range)
該代碼僅在“結束子”之前存在單個單元格交換時才有效。一旦添加了額外的單元格交換,Excel (2007) 就會崩潰并重新啟動。
上面的代碼中是否有我遺漏的東西顯然會導致錯誤?我沒有從程式本身得到任何反饋。
我認為進行 100 次單元交換可能是問題所在。有沒有更聰明的方法來處理通配符或更優雅的方法?
uj5u.com熱心網友回復:
下拉作業表更改
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ClearError ' mainly to prevent exiting without enabling events
' Target could be multiple cells. Restrict to one cell.
Dim tCell As Range: Set tCell = Intersect(Range("C5"), Target)
If tCell Is Nothing Then Exit Sub
Dim langCol As Long
Select Case tCell.Value
Case "English": langCol = 2
Case "French": langCol = 3
' easily add more
Case Else: Exit Sub
End Select
Application.EnableEvents = False ' prevent retriggering the event
' Sheets("Data") could be replaced with 'Me' and use a variable for others.
' To improve readability you could do:
Dim tws As Worksheet: Set tws = Me.Parent.Worksheets("T")
Cells(1, 1).Value = tws.Cells(5, langCol).Value
Cells(2, 1).Value = tws.Cells(6, langCol).Value
'....many more cell swaps here 100 total
SafeExit:
If Not Application.EnableEvents Then Application.EnableEvents = True
Exit Sub
ClearError:
Debug.Print "Run-time error '" & Err.Number & "': " & Err.Description
Resume SafeExit
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/398075.html
標籤:擅长 vba excel-公式 excel-2007
上一篇:更改城市、州、郵編格式
