Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7769 / 13645 ツリー ←次へ | 前へ→

【36924】ナンバーリングについて がんちゃん 06/4/18(火) 12:56 質問[未読]
【36932】Re:ナンバーリングについて Kein 06/4/18(火) 14:36 回答[未読]
【36937】Re:ナンバーリングについて がんちゃん 06/4/18(火) 16:37 質問[未読]
【36940】Re:ナンバーリングについて Kein 06/4/18(火) 17:19 回答[未読]
【36951】Re:ナンバーリングについて がんちゃん 06/4/18(火) 22:12 お礼[未読]
【36952】Re:ナンバーリングについて Kein 06/4/18(火) 22:56 回答[未読]
【36960】Re:ナンバーリングについて がんちゃん 06/4/19(水) 9:22 お礼[未読]
【36976】Re:ナンバーリングについて Kein 06/4/19(水) 11:52 発言[未読]
【36999】Re:ナンバーリングについて がんちゃん 06/4/19(水) 16:26 お礼[未読]
【36982】Re:ナンバーリングについて ハチ 06/4/19(水) 12:58 回答[未読]
【36996】Re:ナンバーリングについて がんちゃん 06/4/19(水) 16:20 お礼[未読]

【36924】ナンバーリングについて
質問  がんちゃん  - 06/4/18(火) 12:56 -

引用なし
パスワード
   手動で=「CTRL」+「↑」+「1」と作業して上方の数字に1を加算するようにしていますが、これをマクロでする方法はないでしょうか?
マクロの記録でやってもうまくできません。
よろしくお願いします。

【36932】Re:ナンバーリングについて
回答  Kein  - 06/4/18(火) 14:36 -

引用なし
パスワード
   >手動で=「CTRL」+「↑」+「1」と作業して上方の数字に1を加算
何かイマイチ理解しにくいのですが、例えば A2 から下へ、B列 の最終入力行まで
ナンバリングするなら・・

Sub Set_Number()
  Dim LR As Long

  LR = Range("B65536").End(xlUp).Row - 1
  With Range("A2")
   .Value = 1
   .AutoFill .Resize(LR), xlLinearTrend
  End With
End Sub

というコードで出来ますが。

【36937】Re:ナンバーリングについて
質問  がんちゃん  - 06/4/18(火) 16:37 -

引用なし
パスワード
   Kein さん ありがとうございます。
少し言葉が足らなかったようで申し訳ありませんでした。

例えば、A1に1を入力し、A5を選択し=を入力し「CTRL」キーを押して「↑」キーを押しさらに+1と入力すると2が入力されます。さらにA7を選択して同様のことをすると3が入力されます。

A列の任意のセルを選択してマクロを実行し、直上の数値に1を加算させたい訳です。

よろしくお願いいたします。

【36940】Re:ナンバーリングについて
回答  Kein  - 06/4/18(火) 17:19 -

引用なし
パスワード
   こーいうことかな ?

Dim Num As Long

With ActiveCell
  If .Row = 1 Then Exit Sub
  If Not IsNumeric(.Value) Then Exit Sub
  With .End(xlUp)
   If Not IsNumeric(.Value) Then Exit Sub
   Num = .Value
  End With
  .Value = .Value + Num
End With

いちおう、数値を入力した瞬間に自動的に計算した値を表示するとして・・

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Num As Long
 
  With Target
   If .Row = 1 Then Exit Sub
   If .Count > 1 Then Exit Sub
   If IsEmpty(.Value) Then Exit Sub
   If Not IsNumeric(.Value) Then Exit Sub
   With .End(xlUp)
     If Not IsNumeric(.Value) Then Exit Sub
     Num = .Value
   End With
   Application.EnableEvents = False
   .Value = .Value + Num
  End With
  Application.EnableEvents = True
End Sub

【36951】Re:ナンバーリングについて
お礼  がんちゃん  - 06/4/18(火) 22:12 -

引用なし
パスワード
   Kein さん ありがとうございます。
しかし思うような結果が得られませんでした。

結果が数値でなく=直上セル番地+1という算式をそのまま表示したいのですが・・・

【36952】Re:ナンバーリングについて
回答  Kein  - 06/4/18(火) 22:56 -

引用なし
パスワード
   んー・・数式をそのまま表示したいのなら・・

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim AdSt As String
  Dim x As Long, Num As Long, Num2 As Long
 
  With Target
   If .Column > 1 Then Exit Sub
   If .Row = 1 Then Exit Sub
   If .Count > 1 Then Exit Sub
   If IsEmpty(.Value) Then Exit Sub
   If Not IsNumeric(.Value) Then Exit Sub
   If .End(xlDown).Row > 65536 Then Exit Sub
   Num = .Value
   With .End(xlUp)
     x = InStr(1, .Value, "+")
     If Left(.Value, 1) = "=" And x > 0 Then
      Num2 = Val(Mid(.Value, x + 1))
      AdSt = "'=" & .Address(0, 0) & "+" & (Num + Num2)
     Else
      AdSt = "'=" & .Address(0, 0) & "+" & Num
     End If
   End With
   Application.EnableEvents = False
   .Value = AdSt
  End With
  Application.EnableEvents = True
End Sub

で、どうかな ? A列で任意の整数を入力してみて下さい。

【36960】Re:ナンバーリングについて
お礼  がんちゃん  - 06/4/19(水) 9:22 -

引用なし
パスワード
   Kein さん 何回もすみません(__)

このコードはコマンドボタンとかに貼り付けるのでしょうか?
ユーザーフォームに貼り付けてみたのですが、実行してくれません。

基本的なことがわかってなくてすみません。教えてください。

【36976】Re:ナンバーリングについて
発言  Kein  - 06/4/19(水) 11:52 -

引用なし
パスワード
   目的のシートのシートモジュールに入れて下さい。
分からなかったら↓の「マクロの使い方(2)」を参考に。
http://park11.wakwak.com/~miko/Excel_Note/14-01_macro.htm#14-01-01

【36982】Re:ナンバーリングについて
回答  ハチ  - 06/4/19(水) 12:58 -

引用なし
パスワード
   ▼がんちゃん さん:
>Kein さん ありがとうございます。
>しかし思うような結果が得られませんでした。
>
>結果が数値でなく=直上セル番地+1という算式をそのまま表示したいのですが・・・

直上のセル番地に+1だとこんな感じでしょうか?

Sub test()

Dim Target As Variant

Set Target = ActiveSheet.Range("A:A").Find(What:="*", SearchDirection:=xlPrevious, After:=ActiveCell)

If Target Is Nothing Then
  ActiveCell.Value = "1"
Else
  ActiveCell.Value = "=" & Target.Address(0, 0) & "+1"
End If

End Sub

A列のセルを選択した状態で動作させると、
そのセルから上でデータがある箇所を検索して、番地+1を入力。
データのあるセルとセルの間で動かすと↑のセルの値に+1になるので
最大値にはなりませんが・・良いのかな?

【36996】Re:ナンバーリングについて
お礼  がんちゃん  - 06/4/19(水) 16:20 -

引用なし
パスワード
   ハチ さん ありがとうございました。

思っていたとおりの結果を得ることができました。
大変参考になりました。

【36999】Re:ナンバーリングについて
お礼  がんちゃん  - 06/4/19(水) 16:26 -

引用なし
パスワード
   Kein さん いろいろとお世話になりました。

はちさんの方法で思っていたとおりの結果を得ることができました。
リンクのサイトも参考にさせていただき、もう少し勉強します。
ありがとうございました。

7769 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free