下記は有効なコードです。 検索条件の開始点をwsSheet.Cells [65000、columnNumber]に変更することで問題が解決することを検索条件で考え出しました。これは本当の解決策ではありません。
Excelシートの最初の行からFind操作を強制的に開始する方法はありますか。
public static string FindFirstStringInColumn(Excel.Workbook wbBook, string strSheet, string strSearchMe, string strColumnLetter)
{
Excel.Worksheet wsSheet = null;
wsSheet = (Excel.Worksheet)wbBook.Worksheets[strSheet];
Excel.Range currentFind = null;
Excel.Range range = (Excel.Range)wsSheet.Columns[strColumnLetter, Type.Missing];
int columnNumber = ExcelCOM.GetColumnNumber(strColumnLetter);
//~~> Search for strSearchMe
currentFind = range.Find(strSearchMe,
wsSheet.Cells[65000, columnNumber],
Excel.XlFindLookIn.xlValues,
Excel.XlLookAt.xlPart,
Excel.XlSearchOrder.xlByRows,
Excel.XlSearchDirection.xlNext,
false,
false,
false);
if (currentFind != null)
{
string sAddress = currentFind.get_Address(false, false, Excel.XlReferenceStyle.xlA1, false, false);
//~~> Display the found Address
return (sAddress).ToString();
}
else
{
return ("Nothing found");
}
}
回答:
回答№1は0このパラメータはオプションです。名前付きパラメータを使用し、指定しないでください。これは、範囲内の「一番上」のセルから始まります。
回答№2の場合は0
集められたものから、指定してみてください
range.Cells[range.Count]
"After"パラメータの値として、少なくともハードコードされた65000を取り除き、列全体以外の範囲では正しく機能するはずです。