5

我有一个在工作表中查找特定单元格的 excel vba 代码。它使用Findexcel库中的方法。这是代码

objRange.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows)

我需要在 powershell 中做同样的事情。但是这个方法总共有 9 个参数。如何忽略 powershell 中的其他可选参数。像这样的东西?

$range.Find("*", "", "", "", $xlByRows, $xlPrevious, "", "", "")

Range.Find方法的文档

4

2 回答 2

9

$null不起作用,但根据这个答案你可以使用[Type]::Missing

$default = [Type]::Missing
$xl.Cells.Find("*", $default, $default, $default, $xlByRows, $xlPrevious,
               $default, $default, $default)
于 2013-07-05T08:41:48.610 回答
1

我通过创建使用我想要的值调用核心方法的重载方法来解决这个问题。例如,我希望用户能够指定已处理记录的数量或调用“Increment”方法,然后只调用“WriteProgress”而不带参数:

class UserFeedback {
[string]$Name
[int]$ThingCount
[datetime]$ProcessStartDateTime
[int]$ProcessedCount

UserFeedback ([string] $Name,[int]$ThingCount){
    $this.ProcessStartDateTime = Get-Date
    $this.Name = $Name
    $this.ThingCount = $ThingCount
    $this.ProcessedCount = 0
}

WriteProgress([int] $intProcessed){
    $this.ProcessStartDateTime        
    $SecondsElapsed = ((Get-Date) - $this.ProcessStartDateTime).TotalSeconds
    $SecondsRemaining = ($SecondsElapsed / ($intProcessed / $this.ThingCount)) - $SecondsElapsed
    Write-Progress -Activity $this.Name -PercentComplete (($intProcessed/$($this.ThingCount)) * 100) -CurrentOperation "$("{0:N2}" -f ((($intProcessed/$($this.ThingCount)) * 100),2))% Complete" -SecondsRemaining $SecondsRemaining
}

WriteProgress(){
    $this.WriteProgress($this.ProcessedCount)
}

Increment(){
    $this.ProcessedCount ++    
}

}

于 2017-08-09T16:42:00.290 回答