Hva betyr "Shift: =" betyr i denne VB6 koden?

stemmer
5

Jeg har kjørt gjennom følgende linje i en VB6 program.

mobjParentWrkBk.ExcelWorkBook.Application.Selection.Insert Shift:=xlToRight

Dessverre Google og andre søkemotorer har ikke vært veldig nyttig som de synes å utelate: = del.

Hva ville være en C # tilsvarende?

Publisert på 22/10/2008 klokken 18:27
kilden bruker
På andre språk...                            


4 svar

stemmer
14

Dette er Visual Basic syntaks for valgnavngitte parametere. Den Insertfunksjonen har en parameter kalt Shift, som blir spesifisert.

C #, så vidt jeg vet, har ikke en tilsvarende for valgfrie navngitte parametere. I stedet, ville du trenger å ringe Insertmetoden, angi Type.Missingfor alle andre enn parametere Shift.

Se også følgende Stackoverflow spørsmål: VB.NET: = Operator

OPPDATERING (2008-10-29):

C # 4.0 er satt til å innføre valgfrie og navngitte parametere. Se denne bloggpost på codebetter.com .

Svarte 22/10/2008 kl. 18:32
kilden bruker

stemmer
2

VB6 og VB.net har valgfrie parametere i fremgangsmåten. C # har muligheten til å gjøre metoden overbelastning.

VB6 / VB.net måte å si Shift: = xlToRight tillater passerer verdien av en bestemt parameter ved navn.

f.eks offentlig sub myMethod (valgfritt en som heltall = -1, valgfritt b som heltall = 1) ... end sub

Jeg kan kalle denne metoden med myMethod (b: = 10)

For C #, kan det være 2 metoder for


void Shift()
{
defaultDirection = directionEnum.Left;
Shift(defaultDirection);
}

void Shift(directionEnum direction)
{
}

En ting til. Selv om du kan kalle metoden bare ved å sende parametere, og legger til parameternavnet når du ringer merker kode litt mer lesbar.
f.eks DoSomethingWithData (CustomerData: = kunde, SortDirection: = Stigende)

Håper det hjelper.

Svarte 22/10/2008 kl. 18:36
kilden bruker

stemmer
1

Det er egentlig alt om Excel og hvordan den håndterer innsatser. Hvis du velger en rekke celler og høyreklikk Sett inn vil du bli spurt om hvilken retning å skifte cellene. Dette er fra Excel hjelp:

=======

Sett Metode på Range Object

Setter en celle eller et celleområde til regnearket eller makroark og forskyver andre celler bort for å gjøre plass.

expression.Insert (Shift, CopyOrigin)

Nødvendig uttrykk. Et uttrykk som returnerer en Range objekt.

Shift Valgfritt Variant. Angir hvilken måte å skifte cellene. Kan være en av følgende XlInsertShiftDirection konstanter: xlShiftToRight eller xlShiftDown. Hvis dette argumentet er utelatt, bestemmer Microsoft Excel basert på formen av serien.

CopyOrigin Valgfritt Variant. Kopien opprinnelse.

===========

Hvis du ikke har konstantene definert kan du høyminne følgende tall

xlShiftDown: -4121 xlShiftToLeft: -4159 xlShiftToRight: -4161 xlShiftUp: -4162

Svarte 22/10/2008 kl. 18:42
kilden bruker

stemmer
8

Bare for å avklare John Rudy respons.

Den sytax er valgfritt (liten 'o'), som betyr at du ikke trenger å bruke den. I min erfaring, de fleste VB6 programmerere ikke bruke syntaks og i stedet foretrekker vanlige 'ikke navngitte' parametere.

Hvis du velger å bruke den, må alle etterfølgende parametere i under procedure call bli navngitt.

Den navngitte paramter Syntaksen kan brukes på alle parametere, hvorvidt eller ikke det tilsvarende argument ble erklært ved hjelp av VBA ordet Optional(driftsmessige 'O'). Tenk for eksempel på, dette (litt teit) VBA funksjon med to parametere, en nødvendig og ett Optional:

Private Function TimesTen( _
    ByVal Value As Long, _
    Optional ByVal Factor As Long = 10 _
) As Long
  TimesTen = Value * Factor
End Function

I VBA, kan jeg kalle det å bruke navngitte parametere for ønsket parameter (den Optionalparamter kan rett og slett bli utelatt i VBA, i motsetning til i C # .NET som Type.Missingmå brukes for alle utelatte Optionalparametre):

  MsgBox TimesTen(Value:=9)

Hvis jeg ønsket å kalle det med parametrene i 'feil' rekkefølge (hvorfor ??) jeg kan oppnå dette ved hjelp av navngitte parametere:

  MsgBox TimesTen(Factor:=11, Value:=9)

Prøver å bruke en vanlig 'navnløs' parameter samtale etter en navngitt en fører en kompileringsfeil:

  MsgBox TimesTen(Value:=9, 11)

Så hvorfor VBA programmerere bruke navngitte parametre hvis VB6 programmerere sjelden gjør, selv om de bruker i hovedsak det samme språket? Jeg tror det er fordi VBA generert av MS Office-programmer makro opptaker har en tendens til (alltid?) Generere navngitte parametre og mange VBA programmerere lære programmering på denne måten.

Svarte 23/10/2008 kl. 08:00
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more