|
▼situmon さん:
まず、Call パス取得(fpath) ですけど、もちろんSubプロシジャで引数に値を返すことはできます。
ただし、その場合は Public Sub パス取得(ByRefl fpath As String) にする必要があります。
(通常のCallを書けばデフォルトByRefですけどね)
ByVal は値渡しで、サブプロシジャ側でテンポラリーに生成されるfpathという名前の(プロシジャレベルの)変数に
呼び出し側の引数の値がいれられるだけで、サブプロシジャ側でfpathに値をセットしても
呼び出し側の元々のfpathは更新されません。
普通は、Functionプロシジャ仕立てにしますね。
また、標準モジュールのプロシジャには、とくにPublicと記述する必要はありません。
それと cの値を扱うわけですが、c.Value とプロパティを明示したほうがわかりやすいですね。
ということで、以下のようにして試してみてください。
選択領域の値が空白であるとか、フォルダ名には使用できない文字だとか、あるいはすでに同名のフォルダがあるとか、
本来は、そのようなチェックもいれるほうぎいと思いますが、割愛しています。
Sub フォルダ保存()
Dim fpath As String
Dim fso As String
Dim c As Variant
For Each c In Selection
fpath = パス取得
fso = fpath & "\" & c.Value
MkDir fso
Next c
End Sub
Function パス取得() As String
パス取得 = ThisWorkbook.Path
End Function
|
|