2013-04-24 4 views
1

에 매개 변수로 FromArgb()을 통과 : 아무 문제없이나는 다음과 같은 기능이 함수

Color-Cells -Range "A1" -Color LightBlue 

:

Function Color-Cells { 
    Param (
     [Parameter(
      Mandatory = $true, 
      Valuefrompipeline = $true)] 
     [String]$Range, 
     [Parameter(
      Mandatory = $true)] 
     [System.Drawing.Color]$Color 
    ) 
    $Global:WorkSheet.range($Range).Interior.color = $Color 
}#End Function 

I는 다음과 같이 호출 할 수 있습니다. 나는, 나는 다음과 같은 오류가 그렇게 그러나 때,

Color-Cells -Range "A1" -Color FromArgb(217,217,217) 

셀의 색상 선택과 더 세분화를 얻을 수 :

이 같은 함수를 호출 할 수 있도록하고 싶습니다

  1. "FromArgb(217,217,217)"
  2. :

    Color-Cells : Cannot process argument transformation on parameter 'Color'. Cannot convert value 
    "FromArgb(217,190,238)" to type "System.Drawing.Color". Error: "FromArgb(217 is not a valid value for Int32." 
    At line:70 char:32 
    + Color-Cells -Range "A1" -Color "FromArgb(217,217,217)" 
    +        ~~~~~~~~~~~~~~~~~~~~~~~ 
        + CategoryInfo   : InvalidData: (:) [Color-Cells], ParameterBindingArgumentTransformationException 
        + FullyQualifiedErrorId : ParameterArgumentTransformationError,Color-Cells 
    
    는이 같은 함수를 호출 시도 `"FromArgb(217,217,217)`"

그리고 그들은 모두 오류가 발생

  • 'FromArgb(217,217,217)'
  • . 나는 .Net에 익숙하지 않아서 어떻게 수정해야할지 모르겠다. 마지막 목표는 [System.drawing.color] 알려진 이름 또는 RGB 값을 기반으로 셀 범위에 색상을 지정할 수있는 함수를 만드는 것입니다. 명확성을 위해

    편집 :

    유형 이름은 함수의 파라미터 형식으로 특정된다. Color-cells 함수를 호출 할 때 -Color 매개 변수는 [System.Drawing.Color]입니다. 정적 속성 (예 : Color-Cells -Color LightBlue)을 사용하여 함수를 호출하면 함수가 검색됩니다. 그러나 메서드 (예 : Color-Cells -Color FromArgb(217,217,217))를 호출하려고하면 오류 메시지가 나타납니다. 메서드를 함수에 전달할 수있는 방법이 있습니까? 내가 명령 주위 $()를 추가하지 않고하고 [System.Drawing.Color]:: 등을하지 않고 (방법을 사용하여) 함수를 호출하고 싶은, 그러나

    Color-Cell -Range "A1" -Color $([System.Drawing.Color]::FromArgb(217,190,238)) 
    

    :

    당 마이크의 대답 나는 성공은 완전히이 같은 기능이라고 할 수 있습니다 나는 속성 (LightBlue 예를 들면)만으로 할 수 있습니다.

  • 답변

    2

    정적 메서드를 호출하려면 [TYPENAME]::MethodName(args)을 사용하십시오.

    그래서 당신이 원하는하는지에 수행이 사용

    [System.Drawing.Color]::FromArgb(217,217,217) 
    
    +0

    나는()'멀리 오류를 유지할 수 있도록'$에 포장했다. static 메소드를 사용하여'[system.drawing.color] :: '를 필요로하지 않고'FromArgb (217,217,217)'을 매개 변수로 전달할 수있는 방법이 있습니까? 정적 속성을 사용하여이 작업을 수행 할 수 있지만 아직 정적 메서드를 전달하는 방법을 찾지 못했습니다. – Nick

    +0

    typename을 지정하지 않고 정적 멤버 (메서드 또는 속성)에 액세스하는 방법을 모르겠습니다. –

    +0

    typename은 함수의 매개 변수 유형에 따라 다릅니다. 'Color-cells' 함수를 호출 할 때'-Color' 스위치는'[System.Drawing.Color]'타입입니다. 정적 속성을 사용하여 함수를 호출하면 찾을 수 있습니다. 그러나 메서드를 호출하려고하면 오류 메시지가 나타납니다. 나는 그것을 정리하기 위해 질문을 업데이트 할 것이다. – Nick