誰かアスキードットPC付属のMicrosoft Office Professional Plus 2007 Beta2をインストールしてみた人いませんか。入れえてみてどうでしたか、今2000を使っています、2003に入れ替えようと買いに行ったら来年2007が出るとの事です。店員がアスキードットPCにおためし版があるので来年までそれを使って見てはとの事です。
Sub test()
Dim x As Range, y As Range
Dim i As Integer
i = 0
Set y = Application.InputBox("", "Paste", Type:=8)
For Each x In Selection
x.Cut y.Offset(i, 0)
i = i + 1
Next x
End Sub
上記マクロは、選択されているセルを切り取って、指定したセルを基点として下方向に貼り付けるものです。
"i"の初期値を"1"にすると成功しますが、"0"だとエラーになります。"-3"などにすると、値がゼロになった時点でエラーになります。なぜ"i"がゼロになるとエラーになってしまうのでしょうか?
指定したセルを基点にして貼り付けられるようにするには、どうすればいいでしょうか?
選択状態にあるセル(どのセルも一文字のみ入力されている)に"●"以外が入力されていたら、全て消去する。
上記を実行するマクロとして以下を試してみましたが、うまくいきません。どこがおかしいのでしょうか?
Sub test()
For Each cell In Selection
If Selection.Value <> "●" Then
Selection.ClearContents
End If
Next
End Sub
昨日質問し、回答を頂いたものです。
もう少しで作業が上手くいきそうなのですが
教えて頂いたコードの各工程の意味(処理)がわからず
止まっています。
一つずつ調べてはいますが、かなり時間がかかっていて
とても今日中に終わりそうになくて焦っています。
急いでいるもので、すいませんがどなたか下のコードの各行が
どのような意味か、訳をつけて頂けないでしょうか。
Sub Test()
Dim myCol As Integer, myVal
Dim LRow As Long, myRow As Long
With ActiveSheet
LRow = .Cells(65536, 1).End(xlUp).Offset(1, 0).Row
For myCol = .Range("IV1").End(xlToLeft).Column To 3 Step -1
myVal = 0
myRow = .Cells(65536, myCol).End(xlUp).Row
If myRow = 1 Then
.Columns(myCol).Delete
Else
Do While myRow > 1 And .Cells(myRow, myCol).Value <> "●"
myVal = myVal + .Cells(myRow, myCol).Value
myRow = myRow - 1
Loop
.Cells(LRow, myCol) = myVal
End If
Next myCol
End With
End Sub
ちなみに元の質問内容は
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2259731
です。
昨日質問し、回答を頂いたものです。
もう少しで作業が上手くいきそうなのですが
教えて頂いたコードの各工程の意味(処理)がわからず
止まっています。
一つずつ調べてはいますが、かなり時間がかかっていて
とても今日中に終わりそうになくて焦っています。
急いでいるもので、すいませんがどなたか下のコードの各行が
どのような意味か、訳をつけて頂けないでしょうか。
Sub Test()
Dim myCol As Integer, myVal
Dim LRow As Long, myRow As Long
With ActiveSheet
LRow = .Cells(65536, 1).End(xlUp).Offset(1, 0).Row
For myCol = .Range("IV1").End(xlToLeft).Column To 3 Step -1
myVal = 0
myRow = .Cells(65536, myCol).End(xlUp).Row
If myRow = 1 Then
.Columns(myCol).Delete
Else
Do While myRow > 1 And .Cells(myRow, myCol).Value <> "●"
myVal = myVal + .Cells(myRow, myCol).Value
myRow = myRow - 1
Loop
.Cells(LRow, myCol) = myVal
End If
Next myCol
End With
End Sub
ちなみに元の質問内容は
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2259731
です。
昨日質問し、回答を頂いたものです。
もう少しで作業が上手くいきそうなのですが
教えて頂いたコードの各工程の意味(処理)がわからず
止まっています。
一つずつ調べてはいますが、かなり時間がかかっていて
とても今日中に終わりそうになくて焦っています。
急いでいるもので、すいませんがどなたか下のコードの各行が
どのような意味か、訳をつけて頂けないでしょうか。
Sub Test()
Dim myCol As Integer, myVal
Dim LRow As Long, myRow As Long
With ActiveSheet
LRow = .Cells(65536, 1).End(xlUp).Offset(1, 0).Row
For myCol = .Range("IV1").End(xlToLeft).Column To 3 Step -1
myVal = 0
myRow = .Cells(65536, myCol).End(xlUp).Row
If myRow = 1 Then
.Columns(myCol).Delete
Else
Do While myRow > 1 And .Cells(myRow, myCol).Value <> "●"
myVal = myVal + .Cells(myRow, myCol).Value
myRow = myRow - 1
Loop
.Cells(LRow, myCol) = myVal
End If
Next myCol
End With
End Sub
ちなみに元の質問内容は
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2259731
です。
イミディエイト ウィンドウでsubファンクション関数
を実行できません
つまり、
Private Sub aa()
....
End Sub
とあるものを、aa,
と入力して実行できません
エクセルのコマンドボタンから実行される場合は
カレントモジュール内なので、許可されるが、
イミディエイト ウィンドウから実行すると、
そのモジュールの外からの実行とみなされるんで
しょうか?
そこで、標準関数
Function aa()
....
End Function
と標準関数につくり直して実行すると出来ます
質問点は
こうしていちいちコピーしてつくりなおさなくても
実行できる方法がないのか、お聞きしたいのですが