一、
期望實現的目標是:填寫單元格值時,自動在輸入的值前增加某字符
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 22 And Target.Count = 1 Then
   Cells(Target.Row, Target.Column).Value = Workbooks("loginin.xls").Sheets("Users").Cells(1, 1) & ":" & Target.Text
End If
...
問題是:賦值後重新觸發了Change事件,使得進入了死循環,請教應該怎麼處理?二、
如何取得其它excel(不是同一個xls文件)的表單信息
我是這樣寫的
If Workbooks("loginin.xls").Windows("UserForm1").ComboBox1.Text <> " Then
End If其中UserForm1表單是隱藏的,
提示錯誤,請教該如何處理?
謝謝

解决方案 »

  1.   

    Private Sub Worksheet_Change(ByVal Target As Range) 
    static isMyChange as boolean
    if isMyChange then exit sub
    isMyChange = true
    If Target.Column = 22 And Target.Count = 1 Then 
      Cells(Target.Row, Target.Column).Value = Workbooks("loginin.xls").Sheets("Users").Cells(1, 1) & ":" & Target.Text 
    End If
    isMychange = false
    end sub 
      

  2.   

    第一个问题
    Private Sub Worksheet_Change(ByVal T As Range)
    On Error Resume Next
    If T.Column = 22 And T.Count = 1 Then
       Application.EnableEvents = False
       Cells(T.Row, T.Column).Value = Workbooks("loginin.xls").Sheets("Users").Cells(1, 1) & ":" & T
       Application.EnableEvents = True
    End If
    End Sub
    第二个问题需要附件才能了解具体情况
      

  3.   

    謝謝!第一個問題已解決。
    第二個問題如何處理。說簡單點就是a.xls如何訪問b.xls的UserForm1上的TextBox1。
      

  4.   

    UserForm 属于工作簿内(VBAProject 内)私有对象,不能被外部直接访问。
    1)首先在 “Visual Basic 编辑器”的“工程资源管理器”中,找到 loginin.xls,它默认的工程名是 VBAProject,更改一下(比如叫 VBAProjectLogin)
    2)在 VBAProjectLogin 下的 ThisWorkbook 下添加代码
    Option ExplicitPublic Property Get UserForm1() As UserForm
        Set UserForm1 = VBAProjectLogin.UserForm1
    End Property
    3)到要访问它的其它 xls 工程中,在菜单“工具\引用...”中添加对 VBAProjectLogin 的引用
    4)就可以在代码中这样调用了
    If VBAProjectLogin.ThisWorkbook.UserForm1.ComboBox1.Text <> " Then 
    End If
      

  5.   


    一个参考:
    b.xls中插入模块,在其中加入一个过程:
    Sub tt()
    MsgBox UserForm1.ComboBox1.Text
    End Sub在a.xls中随便写一个过程如:
    Sub yy()
     Run "b!tt"
    End Subb.xls需要打开,没有打开的话使用一句命令打开。或者切换一下当前目录到b的所在文件夹,如:
    ChDir "D:\Backup\我的文档\新建文件夹"
    Run "b!tt"