Excel VBA質問箱 IV

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

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


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

【46811】検索 bon 07/2/15(木) 23:48 質問[未読]
【46812】Re:検索 かみちゃん 07/2/16(金) 0:16 発言[未読]
【46815】Re:検索 Kein 07/2/16(金) 0:35 回答[未読]
【46818】Re:検索 bon 07/2/16(金) 0:48 お礼[未読]

【46811】検索
質問  bon  - 07/2/15(木) 23:48 -

引用なし
パスワード
   初心者です どなたか教えてください


        1    2    3    4    5
コード    科目                    
1    現金            ○        
2    手形    ○                ○
3    売掛    ○        ○        
4    買掛                    ○
5    雑収            ○        
                        
シート1に上の表がりましてシート2のA1セルに数字を入力するとその列の空白の科目をシート2のA20から左詰で表示させたいのですが
A1に3と入力すると
手形 買掛 と表示させたいのです よろしくお願いいたします
 数字は1から31 科目は80あります

【46812】Re:検索
発言  かみちゃん  - 07/2/16(金) 0:16 -

引用なし
パスワード
   こんにちは。かみちゃん です。

表がなんとなくずれているように思いますが、以下のような表でいいのでしょうか?

  A    B   C  D  E  F  G  H  I
1         1  2  3  4  5
2 コード 科目
3   1 現金       ○
4   2 手形  ○
5   3 売掛  ○   ○
6   4 買掛    ○
7   5 雑収      ○
8

> 科目をシート2のA20から左詰で表示させたい

A20セル1つにまとめて表示したいということですね?

以下のような感じでできると思います。

Sub Sample1()
 Dim c As Range
 Dim LastCell As Range
 Dim rng As Range
 Dim strKamoku As String
 
 With Sheets("Sheet1")
  Set LastCell = .Cells(Rows.Count, 1).End(xlUp)
  On Error Resume Next
  Set rng = .Range("A3", LastCell). _
   Offset(, Val(Sheets("Sheet2").Range("A1").Value) + 1) _
   .SpecialCells(xlCellTypeBlanks)
  On Error GoTo 0
  If Not rng Is Nothing Then
   For Each c In rng
    strKamoku = strKamoku & .Cells(c.Row, 2).Value & vbCrLf
   Next
   Sheets("Sheet2").Range("A20").Value = Left(strKamoku, Len(strKamoku) - 1)
  End If
 End With
End Sub

【46815】Re:検索
回答  Kein  - 07/2/16(金) 0:35 -

引用なし
パスワード
   シート2のシートモジュールへ、以下のマクロを入れてみて下さい。

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Nm As Long, xR As Long, i As Long
  Dim CkC As Variant
  Dim MyR As Range, C As Range
 
  With Target
   If .Address <> "$A$1" Then Exit Sub
   If .Count > 1 Then Exit Sub
   If IsEmpty(.Value) Then Exit Sub
   If Not IsNumeric(.Value) Then Exit Sub
   If .Value < 1 Or .Value > 31 Then Exit Sub
   Nm = .Value
  End With
  With Worksheets("Sheet1")
   CkC = Application.Match(Nm, .Rows(1), 0)
   If IsError(CkC) Then
     MsgBox "その番号は見つかりません", 48: Exit Sub
   End If
   xR = .Range("A65536").End(xlUp).Row
   Set MyR = .Range(.Cells(3, CkC), .Cells(xR, CkC))
   If WorksheetFunction.CountBlank(MyR) = 0 Then
     MsgBox "空白の科目はありません", 48
     Set MyR = Nothing: Exit Sub
   End If
   Set MyR = _
   Intersect(MyR.SpecialCells(4).EntireRow, .Range("B:B"))
  End With
  Application.EnableEvents = False
  Rows("20:20").ClearContents
  For Each C In MyR
   i = i + 1: Cells(20, i).Value = C.Value
  Next
  Application.EnableEvents = True: Set MyR = Nothing
End Sub

【46818】Re:検索
お礼  bon  - 07/2/16(金) 0:48 -

引用なし
パスワード
   ご親切にありがとうございます。
Worksheet関数は使ったことないので 勉強になります
ありがとうございます。

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