これは Stackoverflow への私の最初の投稿です。私はこのサイトで非常に多くの人々から多くの助けと価値を得てきました。そのため、最初に、このフォーラムの皆さんの信じられないほどの知識と寛大な精神に感謝したいと思います. とても有難い!
私はこのサイトを広範囲に調査しましたが、私の問題に対する答えを見つけることができません: LibreOffice (v4.2.4.2) でSTRJOIN マクロを使用して非常に成功しましたが、数週間の休暇の後に仕事に戻った後、突然機能しなくなりました。私のコンピューターはシャットダウンされ、取り残されました。私が戻って以来、OSXの更新は行われていません。
マクロ ( Markus O'Reilly の作業に基づいてAdam Spiersが作成) を実行すると、次のエラーが発生します。
- マクロエディタでは、
BASIC ランタイム エラー。引数はオプションではありません
マクロで次の行を使用します。
If NOT IsMissing(range) Then
- [ツール] > [マクロ] > [マクロの実行] からマクロを実行すると、次のようになります。
Basic スクリプト Standard.Module1.STRJOIN の実行中に Scripting Framework エラーが発生しました。メッセージ: パラメーターの数が間違っています!
OpenOfficeでも同じエラーが発生しました。
何が起こったのですか / マクロが機能しないのはなぜですか? 他のマクロは正常に動作しており、これが役立つかもしれないと考えて新しいユーザー プロファイルも作成しましたが、役に立ちませんでした。
STRJOIN が広範囲に発生する巨大なスプレッドシートがあり、連結は十分な代替手段ではないため、関数が突然爆発することを特に心配しています。
Markus と Adam のマクロは次のとおりです。
Function STRJOIN(range, Optional delimiter As String, _
Optional before As String, Optional after As String)
Dim row, col As Integer
Dim result, cell As String
result = ""
If IsMissing(delimiter) Then
delimiter = ","
End If
If IsMissing(before) Then
before = ""
End If
If IsMissing(after) Then
after = ""
End If
If NOT IsMissing(range) Then
If NOT IsArray(range) Then
result = before & range & after
Else
For row = LBound(range, 1) To UBound(range, 1)
For col = LBound(range, 2) To UBound(range, 2)
cell = range(row, col)
If cell <> 0 AND Len(Trim(cell)) <> 0 Then
If result <> "" Then
result = result & delimiter
End If
result = result & before & range(row, col) & after
End If
Next
Next
End If
End If
STRJOIN = result
End Function