/ / Excel VBA. Für jede Zeile im Bereich, für jede Zelle in Zeile für jedes Zeichen in der Zelle - Excel, vba, excel-vba

Excel VBA. Für jede Zeile im Bereich, für jede Zelle in Zeile für jedes Zeichen in der Zelle - Excel, vba, excel-vba

Ich habe ein VBA-Makro erstellt, das einfach und absurd ist.

Für jede Zeile im Bereich, dann für jede Zelle in Zeile und dann für jedes Zeichen in der Zelle.

Es gibt jedoch eine Eigenschaft oder Methode zurück, die nicht unterstützt wird.

Um auf jedes Zeichen in einer Zelle in Excel VBA zu verweisen, muss es als Bereich definiert werden. Wie ist also eine Zelle in einer Reihe in einem Bereich kein Bereichsobjekt?

In allen Excel-Beispielen wurde auf die Zellen mit Zeichen-Eigenschaft in absoluten Werten Bezug genommen. Mögen Worksheets("Sheet1").Range("A1")

Muss ich einen Code schreiben von Worksheets("MySheet").Range("B1") ... Worksheets("MySheet").Range("B2") ... ... Worksheets("MySheet").Range("B250") Zugriff auf Zeichen oder gibt es eine Möglichkeit, auf jedes Zeichen in einer Zelle ohne Mid-Funktion zuzugreifen?

Die Mid-Funktion verliert übrigens die Formatierung, aber ich suche nach unterstrichenen Zeichen.

Mein Programm ist so

Sub Celltest()
For Each rw In Sheets("Joblist").Range("B1:D250").Rows
For Each cel In rw.Cells
For Each char In cel.Characters
If char.Font.Underline = True Then MsgBox char
Next
Next
Next
End Sub

Als Ergebnis erhalte ich die Meldung, dass eine Eigenschaft oder Methode nicht unterstützt wird.

Vielen Dank!

David

Antworten:

2 für die Antwort № 1

"Warum ist plötzlich ein Teil eines Entfernungsobjekts plötzlich keine Entfernung?" Das ist nicht das Problem. Der Fehler ist Object doesn"t support this property or method. Das bedeutet, dass (grundsätzlich) alles nach dem . ist ein Objekt, also sagt Ihnen der Fehler das etwas ist damit beschäftigt, wie Sie verwenden .Character.

Ich habe ein bisschen herumgesucht und das funktioniert

Sub Celltest2()
Dim rw As Range, cel As Range
Dim i As Integer
Dim char
For Each rw In Sheets("Joblist").Range("B1:D250").Rows
For Each cel In rw.Cells
For i = 1 To Len(cel)
"Debug.Print cel.Characters(i, 1).Text
If cel.Characters(i, 1).Font.Underline = 2 Then
MsgBox (cel.Characters(i, 1).Text)
End If
Next i
Next
Next
End Sub

Ich habe gerade nachgesehen Zeichen Objekt Dokumentation, und es gibt die Antwort auf die Verwendung .Characters. Das Problem ist wie .Characters wird mit dem Sortiment verwendet - keine hochentwickelten Fähigkeiten oder Kenntnisse erforderlich. Verwenden Sie einfach die VB-Fehlermeldungen.


1 für die Antwort № 2

Zwei Dinge, die mir aufgefallen sind. 1. Characters ist keine Sammlung, daher funktioniert For Each nicht. 2. Font.Underline ist nicht boolean. Versuchen Sie Folgendes:

Sub Celltest()
Dim rw As Excel.Range
Dim cel As Excel.Range
Dim char As Excel.Characters
Dim I As Long
For Each rw In Sheets("Joblist").Range("B1:D250").Rows
For Each cel In rw.Cells
For I = 1 To cel.Characters.Count
Set char = cel.Characters(I, 1)
If char.Font.Underline <> xlUnderlineStyleNone Then MsgBox char.Text
Next I
Next
Next
Set rw = Nothing
Set cel = Nothing
Set char = Nothing
End Sub

Ich hoffe, das hilft