首页 > 解决方案 > 基于多个单元格交集的文本框值

问题描述

我试过的是我得到一个找到的项目的行然后我得到一个非空的单元格。
我的问题是我无法弄清楚如何将第二个找到的项目放入文本框中。假设我有列标题 A、B、C、D ......

A - - - B - - - C - - - D
1 - - |da| - - - - - - |d0|
2- - -|d1|---|d2| - - - -

所以我的结果现在看起来像这样:

D
d0
我想返回所有相关数据,但它只显示最后在文本框中找到的非空
我需要什么:

B
da

D
d0

我认为这对我来说是一个很小但很棘手的问题。
代码:

Dim i As Integer
For i = 1 To 10

Set f = Sheets("db").Range("A:A").Find(What:=UserForm1.TextBox1.Value, LookIn:=xlValues, 
Lookat:=xlWhole, MatchCase:=False)
j = f.Row
If Sheets("db").Cells(j, i) <> "" Then
TextBox8.Value = Sheets("db").Cells(1, i).Value & ":" & vbCrLf & Sheets("db").Cells(j, i) & vbCrLf
End If
Next

标签: excelvba

解决方案


如评论中所述,您可以将 Find 移到 For 循环之外。并使其如下所示,TextBox8 填充了循环内的字符串。

Dim i As Integer

Set f = Sheets("db").Range("A:A").Find(What:=UserForm1.TextBox1.Value, LookIn:=xlValues, 
Lookat:=xlWhole, MatchCase:=False)
j = f.Row

sValue = ""
For i = 1 To 10
    If Sheets("db").Cells(j, i) <> "" Then
        sValue = sValue & Sheets("db").Cells(1, i).Value & ":" & vbCrLf & Sheets("db").Cells(j, i) & vbCrLf
    End If
Next

TextBox8.value = sValue

推荐阅读