Ala*_*an2 3 macos excel office365
对不起,但我不知道如何解释这个,所以也许我可以用图片来表明.
Id: 4
English: Here is an area to enter a lot of data
Japanese: Japanese language meaning of the above
Id English Japanese
1 abc def
2 ghi jol
3 mno per
4 Here is an area to .. Japanese Language meaning of the above
5 aaa bbb
Run Code Online (Sandbox Code Playgroud)
在屏幕的顶部,我想要一个编辑区域,在那里我可以看到全文并输入新内容.虽然下面我想要多行数据,当我点击一行的任何部分时,我希望它出现在上面.
如果有一些我能找到的例子,我可以编写解决方案,但是现在我甚至不确定要查找什么,或者这种形式是否有特定的名称.
您可以简单地创建用户表单,而不是将实际工作表空间用于此任务.
在工作表的代码模块中,您可以使用该Worksheet_SelectionChange()事件自动更新用户窗体中的文本.在VBE中,选择要为这些更改监视的特定工作表,并添加以下代码块:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ufDataViewer
.tbID.Value = Me.Cells(Target.Row, "A").Value
.tbRow.Value = Target.Row
.tbEnglish.Value = Me.Cells(Target.Row, "B").Value
.tbJapanese.Value = Me.Cells(Target.Row, "C").Value
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
上面的块将通过单击行内部手动选择的数据自动更新您的用户窗体.
我们需要添加一些代码来显示userform.我们有几种方法可以解决这个问题,你可以混合搭配任何这些方法(你不需要做所有这些!).
打开工作簿时显示userform
在VBE项目资源管理器中,双击
ThisWorkbook并添加以下代码块:Run Code Online (Sandbox Code Playgroud)Private Sub Workbook_Open() ufDataViewer.Show vbModeless End Sub
对于接下来的两种方法,首先需要在公共模块中创建一个显示userform的例程.在项目资源管理器中,右键单击您的项目并插入一个
Module.将此代码添加到此模块:Run Code Online (Sandbox Code Playgroud)Sub showUserform() ufDataViewer.Show vbModeless End Sub使用宏对话框
您可以通过同时按下Alt F8键并选择
showUserform并单击来运行上述代码Run.从工作表命令按钮显示用户窗体
通过转到工作表添加命令按钮并导航到
Developer Tab(如果这不可见,以下是激活它的步骤.)当您看到此选项卡时,单击" 插入"并在" 表单控件"下单击
Button.您现在可以将一个按钮拖到工作表上.您可以选择此控件的位置和大小.完成绘制按钮后,将显示一个对话框.选择您刚才添加的代码名称:
showUserForm
在Project Explorer中右键单击您的userform,然后选择View Code.这是我们要为您的用户表单分配各种功能的地方.首先,让我们添加一个模块范围的变量,它将引用您的工作表.在代码模块的顶部,输入以下两行:
Option Explicit
Private ws As Worksheet
Run Code Online (Sandbox Code Playgroud)
接下来,我们将添加一些代码来确定初始化表单时会发生什么.首先,我们要将ws刚刚创建的变量设置为您将使用此表单的工作表.由于您没有在问题中指定工作表名称,我们将使用工作表名称Sheet1(请随时更新ws名称).
我们还希望继续自动填充userform中的文本框.这看起来与我们在上面的Sheet的代码模块中输入的代码非常相似.
Private Sub UserForm_Initialize()
Dim Target As Range
Set ws = ThisWorkbook.Worksheets("Sheet1")
ws.Activate
Set Target = ActiveCell
Me.tbID.Value = ws.Cells(Target.Row, "A").Value
Me.tbRow.Value = Target.Row
Me.tbEnglish.Value = ws.Cells(Target.Row, "B").Value
Me.tbJapanese.Value = ws.Cells(Target.Row, "C").Value
End Sub
Run Code Online (Sandbox Code Playgroud)
检测对tbRow文本框的更改,以便在更改此值时自动填充用户表单:
Private Sub tbRow_Change()
If IsNumeric(tbRow.Value) Then
Me.tbID.Value = ws.Cells(tbRow.Value, "A").Value
Me.tbEnglish.Value = ws.Cells(tbRow.Value, "B").Value
Me.tbJapanese.Value = ws.Cells(tbRow.Value, "C").Value
ws.Cells(tbRow.Value, 1).Select 'Optional if you want to see row's raw data
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
Phew,现在我们已经允许您的userform通过选择更改或更新userform本身中的文本框来自动填充.接下来,我们需要一种方法来更改工作表中的单元格值.我们将使用"更新"按钮执行此操作.这是代码:
Private Sub btnUpdate_Click()
If IsNumeric(tbRow.Value) Then
ws.Cells(tbRow.Value, 1) = tbID.Value
ws.Cells(tbRow.Value, 2) = tbEnglish.Value
ws.Cells(tbRow.Value, 3) = tbJapanese.Value
Else
MsgBox "Please enter a numeric value in the Row # textbox or reselect the row!"
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
最后,当你完成后需要一种关闭表格的方法.我们可以使用取消按钮的点击事件来执行此操作.这是该事件的代码:
Private Sub btnCancel_Click()
Unload Me
End Sub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |