Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema RefEdit
BildScreenshot zu RefEdit RefEdit-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

For each im Bereich | Herbers Excel-Forum


Betrifft: For each im Bereich von: WolfgangN
Geschrieben am: 02.12.2009 11:33:44

Hallo,
nachdem mir gerade Rudi geholfen hat, habe ich noch eine Frage. Im folgendem Makro wird in Zellen mit Kommentaren ein in einer Textbox eingegebener Begriff gesucht. Die gefundenen Zellen erhalten einen Rahmen. Dies klappt auch.
Ich möchte jetzt das nicht in allen Zellen mit Kommentaren gesucht wird, sondern nur in den Spalten C,D,E.
Wie kann ich den Bereich nur für diese 3 Spalten eingrenzen.
Vielen Dank und Gruß
Wolfgang

Private Sub CommandButton4_Click()
 Dim varAbfrage As Variant
 Dim comZelle As Comment
 Dim lngCounter As Long
 
    varAbfrage = TextBox2.Value
    If varAbfrage <> "" Then
       For Each comZelle In ActiveSheet.Comments
          If InStr(comZelle.Shape.DrawingObject.Text, varAbfrage) > 0 Then
             lngCounter = lngCounter + 1
             ActiveSheet.Range(comZelle.Parent.Cells.Address).Borders _
             (xlEdgeLeft).LineStyle = xlContinuous
          End If
       Next comZelle
       If lngCounter = 0 Then
         MsgBox "Kein Begriff"
       End If
    End If
 End Sub

  

Betrifft: AW: For each im Bereich von: Rudi Maintaire
Geschrieben am: 02.12.2009 12:01:33

Hallo,
For Each comZelle In ActiveSheet.Columns("C:E").Comments



Gruß
Rudi


  

Betrifft: AW: For each im Bereich von: WolfgangN
Geschrieben am: 02.12.2009 12:16:24

Hallo Rudi,
vielen Dank für Deine wiederholte Hilfe, leider bekomme ich jetzt in Deiner Zeile die Fehlermeldung: Laufzeitfehler 438, Objekt unterstützt diese Eigenschaft oder Methode nicht.
Würde mich über nochmalige Hilfe freuen.
Gruß
Wolfgang


  

Betrifft: AW: For each im Bereich von: Rudi Maintaire
Geschrieben am: 02.12.2009 13:22:51

Hallo,
mein Fehler.

Private Sub CommandButton4_Click()
 Dim varAbfrage As Variant
 Dim comZelle As Range
 Dim rCom As Range
 Dim lngCounter As Long
 On Error Resume Next
 Set rCom = Columns("C:E").SpecialCells(xlCellTypeComments)
 On Error GoTo 0
 If rCom Is Nothing Then
  MsgBox "keine Kommentare im Bereich", , "Info"
  Else
  varAbfrage = TextBox2.Value
    If varAbfrage <> "" Then
       For Each comZelle In rCom
          If InStr(comZelle.Comment.Text, varAbfrage) > 0 Then
             lngCounter = lngCounter + 1
             ActiveSheet.Range(comZelle.Parent.Cells.Address).Borders _
             (xlEdgeLeft).LineStyle = xlContinuous
          End If
       Next comZelle
       If lngCounter = 0 Then
         MsgBox "Kein Begriff"
       End If
    End If
  End If
 End Sub

Gruß
Rudi


  

Betrifft: AW: For each im Bereich von: WolfgangN
Geschrieben am: 02.12.2009 13:54:19

Hallo Rudi,
nochmals Dank, es kommt jetzt keine Fehlermeldung mehr, es wird aber auch kein Rahmenteil gesetzt, obwohl vorhandener Begriff enthalten ist..
Das Makro läuft auch ca. 1 min, vorher nur Sekundenbruchteile.
Könntest Du nochmals helfen?
Gruß
Wolfgang


  

Betrifft: AW: For each im Bereich von: fcs
Geschrieben am: 02.12.2009 16:29:40

Hallo Wolggang,

folgende Anpassung deiens ursprünglichen Makros beschränkt die markierung auf Zellen mit markierungen in den palten C bis E

Gruß
Franz

Private Sub CommandButton4_Click()
     Dim varAbfrage As Variant
     Dim comZelle As Comment
     Dim lngCounter As Long
  
     varAbfrage = TextBox2.Value
     If varAbfrage <> "" Then
        For Each comZelle In ActiveSheet.Comments
           Select Case ActiveSheet.Range(comZelle.Parent.Cells.Address).Column
           Case 3 To 5 'Spalten 3 bis 5 ( C bis E) weiter prüfen
           If InStr(comZelle.Shape.DrawingObject.Text, varAbfrage) > 0 Then
              lngCounter = lngCounter + 1
              ActiveSheet.Range(comZelle.Parent.Cells.Address).Borders _
              (xlEdgeLeft).LineStyle = xlContinuous
           End If
           Case Else
           'do nothing
           End Select
        Next comZelle
        If lngCounter = 0 Then
          MsgBox "Kein Begriff"
        End If
     End If
End Sub



  

Betrifft: Danke von: WolfgangN
Geschrieben am: 02.12.2009 16:42:36

Hallo Franz,
es funktioniert jetzt super.
Vielen Dank
Gruß
Wolfgang


Beiträge aus den Excel-Beispielen zum Thema "For each im Bereich"