【问题标题】:Excel fetch the cell value from textboxExcel从文本框中获取单元格值
【发布时间】:2021-03-23 20:10:24
【问题描述】:

我想将我的 excel 单元格与文本框链接起来。我希望文本框内容显示在 excel 单元格中。我要将超过 1 个单元格链接到文本框。

我的情况最初如下图所示:

我在 Excel 中简单地尝试过,方法是: ="TextBox 9",但是没有用。

我了解到,不使用 VBA 代码也可以:

https://www.reddit.com/r/excel/comments/25djwo/referencing_a_text_box_in_a_cell_formula_without/

但是右键单击后,我这里没有“属性”选项。

另一方面,其他来源说,在 Excel 中没有立即执行此操作的选项。

有一些可用的 VBA 解决方案:

Pass UserForm textbox value to cell

Get the value of a textbox to a cell

但它们在我的情况下不起作用

我在这里找到了最接近的解决方案:

https://www.extendoffice.com/documents/excel/4047-excel-convert-textbox-to-cell.html

但不幸的是,它适用于工作簿中所有可用的文本框,这是我不想要的。

我试图只指定一个我需要的文本框:

 Sub TextboxesToCell()
 'UpdatebyExtendoffice20160918
  Dim xRg As Range, Trg As Range
  Dim xRow As Long
  Dim xCol As Long
  Dim xTxtBox As TextBox
 
  Set xRg = Application.InputBox("Select a cell):", "Copying textbox data", _
                                ActiveWindow.RangeSelection.AddressLocal, , , , , 8)
  xRow = xRg.Row
  xCol = xRg.Column

  Set xTxtBox = ThisWorkbook.Worksheets("Internal Checklist").Shapes("TextBox 9")
 
  For Each xTxtBox In ActiveSheet.TextBoxes
    Cells(xRow, xCol).Value = xTxtBox.Text
    xTxtBox.Delete
    xRow = xRow + 1
 Next
 
 End Sub

但不幸的是,我收到一个错误:类型不匹配

对于该行,我在其中定义了正确的文本框

    Set xTxtBox = ThisWorkbook.Worksheets("Internal Checklist").Shapes("TextBox 9")

如何从文本框获取数据到我的相关单元格?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    我认为文本框的类型之间出现了一些混淆。 excel中主要有3种类型:

    • 表单文本框
    • ActiveX 文本框
    • 文本框形状

    你可以在这里找到更多关于底部两个的信息:https://support.microsoft.com/en-ie/office/add-a-label-or-text-box-to-a-worksheet-6905d5da-fad4-432e-87ea-001f3ecd6cd6

    我怀疑您使用的是后者,但一直在查找可以与第一个一起使用的代码。它可能也解释了为什么你没有得到它的属性。

    在 VBA 中,TextBox 对象仅适用于 ActiveX 文本框。在您将 xTxtBox 声明为 TextBox 的情况下,然后您尝试将该变量设置为文本框形状,这就是您收到类型不匹配错误的原因。

    解决方法是将其设置为 shape

    Dim xTxtBox As Shape
    

    然后您可以只用一行替换 for each 循环中的所有内容(除非您确实想在完成后删除该形状?我对您的意图有点困惑):

    Cells(xRow, xCol).Value = xTxtBox.TextFrame2.TextRange.Text
    

    注意额外的属性 TextFrame2.TextRange。因为它是一个形状,所以您必须深入了解包含对象才能找到这些属性。

    或者为简单起见,如果您只想将单元格值设置为文本框中的内容,您可以跳过变量的声明,并将其分配给一个形状并在一行中完成:

    Cells(xRow, xCol).Value = ThisWorkbook.Worksheets("Internal Checklist").Shapes("TextBox 9").TextFrame2.TextRange.Text
    

    【讨论】:

    • 不幸的是,没有任何效果。但是我认为您的解决方案可能在正确的轨道上。是的你是对的。我使用文本框形状。我在代码上方链接的选项怎么样?
    • 也许可以试试下面的建议,但请输入ThisWorkbook.Worksheets("Internal Checklist").Cells(xRow, xCol).Value = ThisWorkbook.Worksheets("Internal Checklist").Shapes("TextBox 9").TextFrame2.TextRange.Text 以确保它在正确的工作表上。你能检查一下是哪一行导致了错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多