Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
604to608
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
604to608
604to608
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kommentar auslesen+Hilfe zu Code aus Forum

Kommentar auslesen+Hilfe zu Code aus Forum
05.05.2005 12:02:43
SteffenS
Hallo und schönen Feiertag,
ich hatte vorige Woche eine Beitrag ins Forum gestellt bin aber erst heute dazu gekommen reinzuschauen:
Mein Beitrag war:
ich brauche bei einem schwierigen Fall Eure Hilfe.
Und zwar schreibe ich per Code(Userform) in eine Tabelle einen Kommentar.
Dies sieht so aus:
Cells(ActiveCell.Row, ActiveCell.Column).Comment.Text Text:="best case: " & best_case.Value & vbLf & "Memo: " & memo_best.Value & vbLf & "worst case: " & worst_case.Value & vbLf & "Memo: " & memo_worst.Value
Ich möchte nun in eine Msgbox die Zeichen des Kommentares auslesen die hinter dem
Wort Memo:
stehen und bis zum nächsten Zeilenumbruch dauern
In diesem Fall müssten es zwei Werte sein, weil zweimal "Memo:" vorkommt.
Ich habe darauf folgenden Code bekommen:
Dim strText As String
Dim strAusgabe As String
Dim intPosMarker As Integer
Dim intPosLf As Integer
Dim strMarker As String
strText = _
"best case: " & "1" & vbLf & _
"Memo: " & "#memo_best.Value#" & vbLf & _
"worst case: " & "2" & vbLf & _
"Memo: " & "#memo_worst.Value#"
strMarker = "Memo: "
intPosMarker = InStr(strText, strMarker)
intPosLf = InStr(strText, vbLf)
While intPosLf &gt 0 And intPosMarker &gt 0
strText = Right(strText, Len(strText) - intPosMarker + 1)
intPosLf = InStr(strText, vbLf)
If intPosLf = 0 Then
strAusgabe = strAusgabe & Right(strText, Len(strText) - Len(strMarker)) & vbCrLf
Else
strAusgabe = strAusgabe & Mid(strText, Len(strMarker) + 1, intPosLf - Len(strMarker) - 1) & vbCrLf
End If
strText = Right(strText, Len(strText) - intPosLf + 1)
intPosMarker = InStr(strText, strMarker)
intPosLf = InStr(strText, vbLf)
Wend
If strAusgabe &gt "" Then MsgBox strAusgabe
Leider weiß ich damit nichts anzufangen.
Der Kommentar der Zelle sieht folgendermaßen aus:
best case: 12
Memo: text1
worst case: 14
Memo: text2
Ich möchte nun in eine Textbox oder zum Test in eine Message Box die Werte auslesen die hinter dem Wort Memo: stehen.
Dies muss aber zweimal geschehen, einmal für den Text1 und einmal für den Text2.
So dass die Message Box beispielsweise folgenermaßen aussieht:
Memo: text1
Memo: text2
Bitte helft mir nochmal, weil ich komm damit überhaupt nicht klar, wäre auch super wenn Ihr an Code ein paar Kommentare ranschreibt,
DANKE
Steffe Schmerler

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kommentar auslesen+Hilfe zu Code aus Forum
07.05.2005 20:34:08
MichaV
Nabend,
aber natürlich. War schon sauer, daß Du Dich nicht gemeldet hast ;o)
Vielleicht hat mich Dein Level verwirrt, darum nachmal schön ausführlich mit Kommentaren:


      
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strText As String       'enthält den zu durchsuchenden Text
Dim strAusgabe As String    'den in der MsgBox auszugebenden Text
Dim intPosMarker As Integer 'die Position des nächsten "Memo:" im Text
Dim intPosLf As Integer     '..des nächsten Zeilenumbruchs im Text
Dim strMarker As String     '"Memo:" oder was auch immer Du festlegst

'***************************************
strText = _
"best case: " & "best_case.Value" & vbLf & _
"Memo: " & "#memo_best.Value#" & vbLf & _
"worst case: " & "worst_case.Value" & vbLf & _
"Memo: " & "#memo_worst.Value#"
'Das müsstest Du natürlich ändern in
'
'strText=Range("A1").Comment.Text , oder welchen Kommentar
'
'auch immer Du verarbeiten willst
'***************************************

'Kommentare auslesen, die hinter dem Wort...
strMarker = "Memo: "
'stehen und bis zum nächsten Zeilenumbruch dauern

'angenommen, strText="BlaBlaMemo:Bla_Memo:Blu"

intPosMarker = InStr(strText, strMarker) 
'erstes Vorkommen von "Memo:"
intPosLf = InStr(strText, vbLf)          'erstes Vorkommen von einem Zeilenumbruch
While intPosLf > 0 And intPosMarker > 0  'Schleife so lange durchlaufen, bis
                                         'im Text kein Memo: oder kein
                                         'Zeilenumbruch mehr.
  strText = Right(strText, Len(strText) - intPosMarker + 1) 'Text hinter erstem Memo:
                                                            'abschneiden
                                                            'strText="Bla_Memo:Blu"
  intPosLf = InStr(strText, vbLf) 'Position Zeilenumbruch neu ermitteln,
                                  'weil Text ja nun kürzer
  'in den folgenden Zeilen wird der Text zwischen "Memo:" und dem Zeilen-
  'umbruch (Else...) oder zwischen Memo: und dem Textende (If...)
  'extrahiert und zum Anzeigetext der MsgBox angefügt
  If intPosLf = 0 Then
    strAusgabe = strAusgabe & Right(strText, Len(strText) - Len(strMarker)) & vbCrLf
    
'Blu im 2. Durchlauf der While- Schleife
  Else
    strAusgabe = strAusgabe & Mid(strText, Len(strMarker) + 1, intPosLf - Len(strMarker) - 1) & vbCrLf
    
'Bla im 1. Durchlauf der While- Schleife
  End If
  strText = Right(strText, Len(strText) - intPosLf + 1) 
'Text hinter nächstem
                                                        ' Auftauchen von Zeilenumbruch
  intPosMarker = InStr(strText, strMarker) 'nächstes Vorkommen vom "Memo:"
  intPosLf = InStr(strText, vbLf)          'nächstes Vorkommen von Zeilenumbruch
Wend
If strAusgabe > "" Then MsgBox strAusgabe 'Wenn Textteile gefunden wurden
End Sub 
Gruß- Micha
PS: Rückmeldung wäre nett.
PPS: Den Namen der Sub soltest Du natürlich auch ändern.
Anzeige
Danke Dir
09.05.2005 09:03:06
SteffenS
Steffen
gern geschehen! ;o)
09.05.2005 09:53:18
MichaV

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige