在vba函数中设置单元格的名称

而在一个VBA函数内,我试图改变某些单元格的名称来标记它们,并在以后使用它们。 我有一个searchfunction,searchexcel文档的关键字从.txt文件,并需要知道哪些单元格不包括任何search条件。 要做到这一点,我要命名我查询的每个单元格,并在“其他”的结果列中包含所有未命名的单元格。 但是,每当我尝试命名一个单元格的名称不会更新。 我已经尝试了以下内容:

ThisWorkbook.Names.Add“QUERIED”,RefersTo:= foundRange

foundRange.name =“QUERIED”

function在这里:

Function Single_word_occurrences(datatoFind As String, resultsCol As String) As Integer 'Initializations Dim strFirstAddress As String Dim foundRange As Range Dim currentSheet As Integer, sheetCount As Integer, LastRow As Integer, loopedOnce As Integer, FoundCount As Integer FoundCount = 0 currentSheet = ActiveSheet.Index sheetCount = ActiveWorkbook.Sheets.Count Sheets("Sheet1").Activate Set foundRange = Range("F2:F30000").Find(What:=datatoFind, After:=Cells(2, 6), LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) Sheets("List Results").Cells(1, resultsCol).Value = datatoFind 'if datatoFind is found in search range If Not foundRange Is Nothing Then 'save the address of the first occurrence of datatoFind, in the strFirstAddress variable strFirstAddress = foundRange.Address Do 'Find next occurrence of datatoFind Set foundRange = Range("F2:F30000").Find(What:=datatoFind, After:=foundRange.Cells, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) 'Place the value of this occurrence in the next cell down in the column that holds found values (resultsCol column of List Results worksheet) LastRow = Sheets("List Results").Range(resultsCol & Rows.Count).End(xlUp).Row + 1 Sheets("List Results").Range(resultsCol & LastRow).Value = foundRange.Address ThisWorkbook.Names.Add "QUERIED", RefersTo:=foundRange If loopedOnce = 1 Then FoundCount = FoundCount + 1 End If If loopedOnce = 0 Then loopedOnce = 1 End If 'The Loop ends on reaching the first occurrence of datatoFind Loop While foundRange.Address <> strFirstAddress And Not foundRange Is Nothing Msgbox(foundRange.Name) End If Single_word_occurrences = FoundCount Application.ScreenUpdating = True Sheets(currentSheet).Activate End Function 

您无法在UDF中定义名称

你必须使用一个

以下将失败:

 Public Function qwerty(r As Range) As Variant qwerty = 1 Range("B9").Name = "whatever" End Function 
Interesting Posts