警告: 私は初心者です。
赤いテキストのセルを見つけて変更する Sub を作成しました。
@ThinkerIV は、セルに入れて数式を隣接するセルにドラッグする優れた機能を提供してくれましたが、作業するシートの数が原因で機能しません。そこで、Sub を書き、彼の関数を呼び出しました (以下のコードを参照)。1セルのRangeを渡したので、うまくいくはずですか?
しかし、関数が DateValue() を呼び出す行で型の不一致 (実行時エラー コード 13) がスローされ続けます。渡された範囲は、エディターでカーソルを合わせると 1 の値 (それが参照するセル内の数値) を示しますが、それがセルの内容なのか、それとも他の値 1 が表示されているのかわかりません。
ですから、なぜこれが起こっているのかを正確に知る方法は本当にわかりません。私が渡した範囲がどういうわけか正しい種類ではないということですか?このコードが機能しない理由を教えてください!
その行をその下のコメント行に変更しようとしました (および他のいくつかの盲目的な変更) が、同じエラーが発生します。
前もって感謝します!
Sub redTextToRealDates()
Dim dateTemp As Date
Dim redCell As Range
Dim foundCell As Range
Dim thisSheetsRange As Range
Dim busyCell As Range
Dim redTextCells As Range
Set thisSheetsRange = ActiveSheet.usedRange
'Build a range containing all the cells in a sheet containing red text.
' well... all cells formatted to HAVE red text, anyway.
' Anyone want to tell me how to write this to skip empty cells?
' Because I don't need to grab empty cells into this range...
For Each busyCell In thisSheetsRange
If (busyCell.Font.ColorIndex()) = 3 Then
If redTextCells Is Nothing Then
Set redTextCells = busyCell
Else: Set redTextCells = Union(redTextCells, busyCell)
End If
End If
Next busyCell
'Change unknown format cells to date cells populated with concantenated
'string of original contents and the active sheet's name.
For Each foundCell In redTextCells
foundCell.NumberFormat = "@"
foundCell = GetConcantDate(foundCell)
Next foundCell
redTextCells.NumberFormat = "dd/mm/yy"
On Error Resume Next
End Sub
Function GetConcantDate(rng As Range) As Date
'Original code supplied by ThinkerIV on StackOverflow.com
Dim dtTemp As Date
dtTemp = DateValue(rng.Range("A1").Value & " " & rng.Parent.Name)
'dateTemp = DateValue(foundCell.Value & " " & ActiveSheet.Name)
GetConcantDate = dtTemp
End Function
編集私はまだ自分の答えを投稿できないので、この解決策を追加しています:
Format() にデータを入力すると、赤でフォーマットされた最初のセルの内容がテキスト形式ではありませんでした。適切なデータ型を渡すことを保証する方法は何も用意していませんでした。したがって、関数に渡す前にセルをテキストとしてフォーマットする行 (foundCell.NumberFormat = "@") が修正されました。
コードをコピーして質問に貼り付けたときに、ソリューションは実際に既に作成されていました-別のサブで別のエラーが発生したために修正されたことに気づきませんでした。(私は初心者で、複数のサブウーファーで複数のエラーを処理するのに混乱していました)その新しい行でもう一度試したと思いましたが、持っていなかったので、まだ機能していないと思いました.
助けてくれたすべての人に感謝します。そのように見つけた今、私は少しばかげていると感じています。私の新人フラバーを許してください-エディタの巨大なリストにあまりにも多くのサブと関数があり、私は「めまい」を感じました...少なくとも、他の初心者がそれを必要とする場合に備えて、解決策を投稿できます!