在Excel中,有一种方法可以让页面顶部成为编辑,查看区域,以查看下面列表中显示的详细信息吗?

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)

在屏幕的顶部,我想要一个编辑区域,在那里我可以看到全文并输入新内容.虽然下面我想要多行数据,当我点击一行的任何部分时,我希望它出现在上面.

如果有一些我能找到的例子,我可以编写解决方案,但是现在我甚至不确定要查找什么,或者这种形式是否有特定的名称.

K.D*_*ᴠɪs 6

您可以简单地创建用户表单,而不是将实际工作表空间用于此任务.

创建用户表单

  • 在VBE中,右键单击项目>插入>用户表单
  • 添加3个文本框以表示数据列,并添加标签
    • 在我的示例中,我添加了第4个文本框以指示行号.如果需要,您可以使用此文本框更改行#而不单击工作表
  • 添加两个命令按钮,一个将使用您已调整的任何文本更新工作表,另一个将退出表单.
  • 将对象命名为有意义的东西
    • 我命名了userform ufDataViewer
      • 这可以在属性查看器下完成 (Name)
        在此输入图像描述
    • 将"更新"按钮命名为 btnUpdate
    • 将"取消"按钮命名为 btnCancel
    • 将ID文本框命名为 tbID
    • 将行#框命名为 tbRow
    • 将英文文本框命名为 tbEnglish
    • 最后,将最终文本框命名为 tbJapanese

创建的用户表单的示例: 在此输入图像描述

检测选择更改

在工作表的代码模块中,您可以使用该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并添加以下代码块:

Private Sub Workbook_Open()
    ufDataViewer.Show vbModeless
End Sub
Run Code Online (Sandbox Code Playgroud)

对于接下来的两种方法,首先需要在公共模块中创建一个显示userform的例程.在项目资源管理器中,右键单击您的项目并插入一个Module.将此代码添加到此模块:

Sub showUserform()
    ufDataViewer.Show vbModeless
End Sub
Run Code Online (Sandbox Code Playgroud)

使用宏对话框

您可以通过同时按下Alt F8键并选择showUserform并单击来运行上述代码Run.

从工作表命令按钮显示用户窗体

  1. 通过转到工作表添加命令按钮并导航到Developer Tab (如果这不可见,以下是激活它的步骤.)

  2. 当您看到此选项卡时,单击" 插入"并在" 表单控件"下单击Button.

  3. 您现在可以将一个按钮拖到工作表上.您可以选择此控件的位置和大小.完成绘制按钮后,将显示一个对话框.选择您刚才添加的代码名称:showUserForm

编写UserForm

在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)

预习

在此输入图像描述