- 締切済み
vba
excel VBAで 今ある列の連続した範囲(仮に$D$2:$D$8とか、$B$3:$B$7)とかがセレクトされているとする。 そのセレクトされている状態でTestマクロで処理し、それが例えば$D$2:$D$8の場合は、順に1,2,3,4,5,6,7というように1番から順にセルの個数まで数字を表示したい。($B$3:$B$7 なら順に1,2,3,4,5) Testマクロの記述は? なおTest2マクロでは、順に1,2,3,4,5,6,7のかわりに(1)、(2)、-- としたい。 Test2マクロの記述は? よろしく
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- okormazd
- ベストアンサー率50% (1224/2412)
何回も質問しているが、いくらかは自分で考えて見たらいかがかと。 いろいろなやりかたがあるが、 for ~nextでまわすより、下記が速いね。速さに意味がある質問かはわからないが。 Sub test3() Dim n As Long With Selection n = .Row - 1 .Formula = "=""("" & ROW()-" & n & " & "")""" .Copy .PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Application.ErrorCheckingOptions.NumberAsText = False End With End Sub
- imogasi
- ベストアンサー率27% (4737/17069)
>個数まで数字を表示したい。($B$3:$B$7 なら順に1,2,3,4,5).. msgboxで表示で良いのか、セルにセット(番号?セルの内容?)するのかあいまい。前者らしいが、実務で使う例あるかな) ーー Sub test02() i = 1 Range("D2:D8").Select For Each cl In Selection MsgBox cl.Value Cells(i, "F") = i 'Cells(i, "F") =cl.Value i = i + 1 Next End Sub ーー 上記で Range("D2:D8").Selectのセル範囲をどう採るかが、初心者 には問題だと思う。 操作者にのセル選択に任せるなら、この行を省いても良い。 ただしこのプログラムを走らすキッカケを作るボタンなどが必要で合おう。 2列以上選択された場合は良いのかな。 Application。InputBoxのType:=8というのもある(WEBで照会のこと)。 考えることはいっぱいあるよ。
- pkh4989
- ベストアンサー率62% (162/260)
こんな感じですかね。 Sub test1() Dim wI As Integer wI = 0 For Each c In Selection wI = wI + 1 c.Value = wI Next End Sub Sub test2() Dim wI As Integer wI = 0 For Each c In Selection wI = wI + 1 c.NumberFormatLocal = "@" c.Value = "(" & wI & ")" Next End Sub