2013-07-05 4 views
4

У меня есть код excel vba, который находит конкретную ячейку в листе. Он использует метод Find из библиотек excel. Вот кодpowershell Метод вызова с необязательными аргументами

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

Мне нужно сделать то же самое в powershell. Но этот метод имеет в общей сложности 9 аргументов. Как игнорировать другие необязательные аргументы в powershell. Что-то вроде этого?

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

Here является документация Range.Find метода

ответ

7

$null не работает, но по this answer вы можете использовать [Type]::Missing:

$default = [Type]::Missing 
$xl.Cells.Find("*", $default, $default, $default, $xlByRows, $xlPrevious, 
       $default, $default, $default) 
+0

Там должен быть какой-то способ, чтобы дать значения по умолчанию для аргументов, которые не требуются – Ammar

+0

Спасибо, это сработало нормально. Cheers – Ammar

+0

любезно рассмотрите мой вопрос, если вы считаете это достойным :) – Ammar

0

Я обратился к этому, создавая методы перегрузки, что вызывает ядрового метода со значением, которое я хочу. например Я хочу, чтобы пользователь мог указать количество обработанных записей или вызова метода «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 ++  
} 

}

Смежные вопросы