Excel VBA質問箱 IV

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

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


9888 / 13646 ツリー ←次へ | 前へ→

【24929】コードを教えてください hinerikomi 05/5/14(土) 11:24 質問[未読]
【24930】Re:コードを教えてください ponpon 05/5/14(土) 11:38 発言[未読]
【24936】>Re:コードを教えてください hinerikomi 05/5/14(土) 14:02 発言[未読]
【24939】Re:>Re:コードを教えてください つん 05/5/14(土) 17:12 発言[未読]
【24947】>Re:>Re:コードを教えてください hinerikomi 05/5/15(日) 6:08 発言[未読]
【24949】Re:>Re:>Re:コードを教えてください クウガ 05/5/15(日) 8:01 回答[未読]
【24950】>Re:>Re:>Re:コードを教えてください hinerikomi 05/5/15(日) 8:28 お礼[未読]
【24951】ごめんなさい。6以上があったんですね。 クウガ 05/5/15(日) 9:31 回答[未読]
【24954】Re:ごめんなさい。6以上があったんですね。 クウガ 05/5/15(日) 10:51 回答[未読]
【24941】Re:>Re:コードを教えてください Kein 05/5/14(土) 18:00 回答[未読]
【24948】>Re:>Re:コードを教えてください hinerikomi 05/5/15(日) 6:10 発言[未読]

【24929】コードを教えてください
質問  hinerikomi  - 05/5/14(土) 11:24 -

引用なし
パスワード
   Excel2000です。
コマンドボタンをクリックすると、下記のような結果が
各セルに入力されるような、コードを教えてください。
3行5列のRange範囲とします。
したがいまして、5列目を超えると自動的に
改行されます。
Range("A1")=1
Range("C1")=2
Range("A2")=3
Range("E2")=4
Range("E3")=5
宜しくお願いいたします。

【24930】Re:コードを教えてください
発言  ponpon  - 05/5/14(土) 11:38 -

引用なし
パスワード
   おはようございます。

>5列目を超えると自動的に改行されます。
の意味がわからないのですが、

コマンドボタンは3種類ありますが、フォームのコマンドボタンとして
そのまんまですが、以下をコマンドボタンに登録してください。
こういう意味ではないのでしょうか?

Sub test()

  Range("A1").Value = 1
  Range("C1").Value = 2
  Range("A2").Value = 3
  Range("E2").Value = 4
  Range("E3").Value = 5

End Sub

【24936】>Re:コードを教えてください
発言  hinerikomi  - 05/5/14(土) 14:02 -

引用なし
パスワード
   ponpon さん、こんにちは。
表現がまずかったようです。
1.変数 N に1〜5まで順次入力する。
 Dim N As Integer
 For N = 1 To 5
 といった、コードでの入力です。
2.ユーザーフォームのコマンドボタンをクリックすると
 Excelの各セルに
 (N=1 のときは) Range(""A1)=1
  (N=2 のときは) Range("C1")=2
  (N=3 のときは) Range("A2")=3
  (N=4 のときは) Range("E2")=4
  (N=5 のときは) Range("E3")=5
  といったように、出力させたい。
これらのコードを教えていただきたいのです。

【24939】Re:>Re:コードを教えてください
発言  つん E-MAIL  - 05/5/14(土) 17:12 -

引用なし
パスワード
   こんにちは^^

>  (N=1 のときは) Range(""A1)=1
>  (N=2 のときは) Range("C1")=2
>  (N=3 のときは) Range("A2")=3
>  (N=4 のときは) Range("E2")=4
>  (N=5 のときは) Range("E3")=5
>  といったように、出力させたい。

えーっと、1〜5の数字を順次入力させたいのはわかりますが、
その入力先のセルの規則性がイマイチわからんのですが・・・

【24941】Re:>Re:コードを教えてください
回答  Kein  - 05/5/14(土) 18:00 -

引用なし
パスワード
   規則性のない方は、配列に入れて規則性を持たせます。つまり

Private Sub CommandButton1_Click()
  Dim Ary As Variant
  Dim i As Long

  Ary = Array("A1", "C1", "A2", "E2", "E3")
  For i = 1 To 5
   Sheets("Sheet1").Range(Ary(i - 1)).Value = i
  Next i
End Sub

などとする。

【24947】>Re:>Re:コードを教えてください
発言  hinerikomi  - 05/5/15(日) 6:08 -

引用なし
パスワード
   つん さん、こんにちは。

>
>>  (N=1 のときは) Range(""A1)=1
>>  (N=2 のときは) Range("C1")=2
>>  (N=3 のときは) Range("A2")=3
>>  (N=4 のときは) Range("E2")=4
>>  (N=5 のときは) Range("E3")=5
>>  といったように、出力させたい。
>
>えーっと、1〜5の数字を順次入力させたいのはわかりますが、
>その入力先のセルの規則性がイマイチわからんのですが・・・

回答をありがとうございます。
セルの規則性ですが、次のようになります。
1.列は A〜E 迄の5列のみを使い、5列を超えた場合は
 改行します。
2.開始セルは A1
3.次のセルは一つ空けて、C1
 次のセルはC1から二つ空けて、F1としたいのですが、
 1.の条件から改行して、A2となります。
 次のセルはA2から三つ空けてE2、改行して
 E2から四つ空けてE5となります。
 順次、次のセルまでの飛び方が1,2,3,4,5,6、……と
 なります。
という規則性です。

【24948】>Re:>Re:コードを教えてください
発言  hinerikomi  - 05/5/15(日) 6:10 -

引用なし
パスワード
   Kein さん、こんにちは。
回答をありがとうございます。

>規則性のない方は、配列に入れて規則性を持たせます。つまり
>
>Private Sub CommandButton1_Click()
>  Dim Ary As Variant
>  Dim i As Long
>
>  Ary = Array("A1", "C1", "A2", "E2", "E3")
>  For i = 1 To 5
>   Sheets("Sheet1").Range(Ary(i - 1)).Value = i
>  Next i
>End Sub
>
>などとする。

【24949】Re:>Re:>Re:コードを教えてください
回答  クウガ WEB  - 05/5/15(日) 8:01 -

引用なし
パスワード
   hinerikomi さん、こんにちは。(おはようございます。)
つん さん、随分とご無沙汰です。
横から失礼致します。

>>>  (N=1 のときは) Range(""A1)=1
>>>  (N=2 のときは) Range("C1")=2
>>>  (N=3 のときは) Range("A2")=3
>>>  (N=4 のときは) Range("E2")=4
>>>  (N=5 のときは) Range("E3")=5

>セルの規則性ですが、次のようになります。
>1.列は A〜E 迄の5列のみを使い、5列を超えた場合は
> 改行します。
>2.開始セルは A1
>3.次のセルは一つ空けて、C1
> 次のセルはC1から二つ空けて、F1としたいのですが、
> 1.の条件から改行して、A2となります。
> 次のセルはA2から三つ空けてE2、改行して
> E2から四つ空けてE5となります。
> 順次、次のセルまでの飛び方が1,2,3,4,5,6、……と
> なります。
>という規則性です。


Dim N, r, c As Integer
  r = 1
  c = 0
  For N = 1 To 5
    c = c + N
    If c > 5 Then
      c = c - 5
      r = r + 1
    End If
    Cells(r, c) = N
  Next N


こんな事でしょうか?

【24950】>Re:>Re:>Re:コードを教えてくだ...
お礼  hinerikomi  - 05/5/15(日) 8:28 -

引用なし
パスワード
   クウガ さん、こんにちは。
回答に感謝いたします。

>横から失礼致します。
>Dim N, r, c As Integer
>  r = 1
>  c = 0
>  For N = 1 To 5
>    c = c + N
>    If c > 5 Then
>      c = c - 5
>      r = r + 1
>    End If
>    Cells(r, c) = N
>  Next N
>
>
>こんな事でしょうか?

ありがとうございます。すっきりしました。

【24951】ごめんなさい。6以上があったんですね。
回答  クウガ WEB  - 05/5/15(日) 9:31 -

引用なし
パスワード
   hinerikomi さん、こんにちは。

> 順次、次のセルまでの飛び方が1,2,3,4,5,6、……と
> なります。

ごめんなさい。6以上があったんですね。

Dim N, r, c As Integer
  r = 1
  c = 0
  For N = 1 To 5
    r = r + Int((N / 5))
    c = c + Int((N Mod 5))
    If c > 5 Then
      c = c - 5
      r = r + 1
    End If
    Cells(r, c) = N
  Next N

なんか、まだ良い方法がありそうですが、
こんな感じで・・・

【24954】Re:ごめんなさい。6以上があったんですね...
回答  クウガ WEB  - 05/5/15(日) 10:51 -

引用なし
パスワード
   hinerikomi さん、
結局、こういう事になりました。

Dim N, r, c, i As Integer
  i = 0
  For N = 1 To 5
    i = i + N
    r = Int((i - 1) / 5) + 1
    c = Int((i - 1) Mod 5) + 1
    Cells(r, c) = N
  Next N

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