Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

StrPtr(variable) | Herbers Excel-Forum


Betrifft: StrPtr(variable) von: Ilka Maria
Geschrieben am: 12.12.2009 15:42:05

Hallo,

welche Bedeutung hat denn die Funktion StrPtr().
Leider wird diese Funktion in der Hilfe von Excel 2000 nicht erklärt.

Gruß
Ilka Maria

  

Betrifft: AW: StrPtr(variable) von: hary
Geschrieben am: 12.12.2009 15:51:26

hallo
schau mal hier.
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q199824
gruss hary


  

Betrifft: AW: StrPtr(variable) von: Daniel
Geschrieben am: 12.12.2009 15:56:42

StrPtr() benutzt man nach INPUTBOX, um festzustellen ob die zugewiesene Variable leer ist, weil der Anwender nichts eingegeben und dann OK gedrückt hat, oder weil der Anwender sich für die Option ABBRECHEN entscheiden hat.

Sub test()
Dim a As String
a = InputBox("Eingabe")
If StrPtr(a) = 0 Then
    MsgBox "Abbruch"
Else
    MsgBox "OK"
End If
End Sub
Gruß, Daniel


  

Betrifft: AW: StrPtr(variable) von: Nepumuk
Geschrieben am: 12.12.2009 16:10:50

Hallo Daniel,

das ist aber eher ein Abfallprodukt der Funktion. Hauptsächlich wird sie benutzt um API's welche nur mit Pointern arbeiten, die entsprechenden Variablen zuzuweisen. Beispiel RtlMoveMemory:

Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" ( _
    pDst As Any, _
    pSrc As Any, _
    ByVal ByteLen As Long)

Parameter:

· Destination
Points To the starting address of the copied block’s destination.

· Source
Points To the starting address of the block of memory To copy.

· Length
Specifies the size, in bytes, of the block of memory To copy.

Gruß
Nepumuk


  

Betrifft: Nachtrag von: Nepumuk
Geschrieben am: 12.12.2009 16:17:46

Hallo,

diese Aussage: weil der Anwender nichts eingegeben und dann OK gedrückt hat

ist falsch. Denn in dem Fall hat die Inputbox-Funktion der Variablen einen Leerstrig zugewiesen. Damit gibt die StrPtr-Funktion die Speicheradresse der Variablen zurück.

Das funktioniert nur, wenn der User auf Abbrechen klickt.

Gruß
Nepumuk


  

Betrifft: AW: und wo kommt in deinem von: Daniel
Geschrieben am: 12.12.2009 16:29:47

Beispiel die Funktion StrPtr() vor?

btw der Kenntnistand der Fragestellerin ist "Kaum Excel/VBA-Kenntnisse", daran sollte sich auch deine Antwort orientieren. (und ich hab von dem was du da schreibst, auch niichts verstanden)

Gruß, Daniel


  

Betrifft: AW: und wo kommt in deinem von: Nepumuk
Geschrieben am: 12.12.2009 16:56:18

Hallo,

na dann mal ein Beispiel für die CopyMemory-Funktion. Es wird ein String gebildet, in dem ein Text 100mal hintereinander steht. Das ganze kannst du natürlich mit reinen VB-Mitteln auch machen, es geht aber mal um das Prinzip wie die Funktion arbeitet und wie StrPtr dabei mitspielt:

Option Explicit

Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" ( _
    ByRef pDst As Any, _
    ByRef pSrc As Any, _
    ByVal ByteLen As Long)

Public Sub Beispiel()
    
    Const TEST_TEXT = "Hallo Daniel "
    
    Dim strString As String
    Dim lngCounter As Long, lngPosition As Long
    
    strString = Space$(100 * Len(TEST_TEXT))
    
    For lngCounter = 1 To 100
        
        Call CopyMemory(ByVal StrPtr(strString) + lngPosition, _
            ByVal StrPtr(TEST_TEXT), LenB(TEST_TEXT))
        
        lngPosition = lngPosition + LenB(TEST_TEXT)
        
    Next
    
    Debug.Print strString
    
End Sub

Der Vorteil der Funktion, sie ist "sauschnell" :-)

Gruß
Nepumuk


  

Betrifft: AW: Danke für beide Hilfen von: Ilka Maria
Geschrieben am: 12.12.2009 16:03:14

Hallo hary, hallo Daniel,

vielen Dank für die Hilfen. Die Sache ist verstanden.

Gruß
Ilka Maria