プロシージャ間で配列変数を引数として(参照)値渡ししたいのですが、例えば以下のような場合、2箇所のXXX部分はどのように記述したらよいのでしょうか。
よろしくお願いします(Excel2000使用)
Public Sub give()
Dim a(2) As Byte
a(0) = 3
a(1) = 15
take XXX
End Sub
Public Sub take(XXX)
(処理省略。受け取り側でも配列変数で処理したい)
End Sub
※上記の例では配列の要素数が2ですが、実際はもっと多いので、例えば「take a(0),a(1),・・・」というふうな記述は(仮に適切なものであったとしても)記述しきれません。
タイトルの通り、配列に格納したファイル名を昇順に並べ替えたいのですが、期待通りに動作しません。
内部コード(ユニコード?)順には並んでいるようですが、エクスプローラの名前順と同等にはなりません。
どのようにしたら、配列のファイル名をエクスプローラと同じように並べ替えできますか?
(テストに使用したコード)
Public Sub Test1()
Dim FileNames() As String
Dim WSH As Object
Dim MyPathName As String
Dim MyFileName As String
Dim i As Integer
Dim j As Integer
'処理対象フォルダを指定
Set WSH = CreateObject("WScript.Shell")
MyPathName = WSH.SpecialFolders("MyDocuments")
Set WSH = Nothing
i = 0
MyFileName = Dir(MyPathName & "\" & "*.*")
If MyFileName = "" Then
MsgBox "対象ファイルが1つも見つかりません。", , "処理終了"
Exit Sub
End If
'ファイル一覧を配列に格納
Do Until MyFileName = ""
i = i + 1
ReDim Preserve FileNames(1 To i)
FileNames(i) = MyFileName
MyFileName = Dir
Loop
'配列を並べ替える
For i = 1 To UBound(FileNames) - 1
For j = i To UBound(FileNames)
If FileNames(i) > FileNames(j) Then
MyFileName = FileNames(i)
FileNames(i) = FileNames(j)
FileNames(j) = MyFileName
End If
Next j
Next i
End Sub
※以降の処理は、Excel で処理するか Access で処理するかまだ決めていません。
(投稿文字数の関係で詳細は省略)
Sub test1()
Selection.Cut Destination:=Selection.Offset(0, -1)
Selection.CurrentRegion.Select
End Sub
Sub test2()
Selection.Cut Destination:=Selection.Offset(0, 1)
Selection.CurrentRegion.Select
End Sub
K1:N1が選択状態になっている時にtest1を実行すると、4つのセルが一セル分だけ左に移動します。
test1を連続してもう一回実行すると二セル分だけ左に移動します。連続して3回だと三セル分です。
が、test2だと、test1と同様に実行回数分だけ全体を右に移動させることができません。どうしてでしょうか?
実行回数分だけ全体を右に移動させるには、どういった記述が必要でしょうか?
One Note2003です。WEBをそのまま保存するために、ミニノートの領域選択を使いたいのですが、「選択ツール」(点線の四角)を選んで画面万に持っていっても選択されません。何が原因でしょうか。
以前のパソコンで使用していたときは(2000だったかもしれません)簡単に選択でき、非常に便利だったのですが。