C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

VBAで名前の定義に一つ空白があった場合の処理

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■96974 / inTopicNo.1)  VBAで名前の定義に一つ空白があった場合の処理
  
□投稿者/ エイ (13回)-(2021/03/08(Mon) 22:54:12)

分類:[Microsoft Office 全般] 

VBAで名前の定義指定した列を選択しました。

A2〜A18
A19 空白
A20
A21〜A23 空白
A24

この場合の名前の定義指定は
='sheet1'!$A$2:$A$18,'sheet1'!$A$20,'sheet1'!$A$24
これをユーザーフォームのリストボックスの
プロパティにrowsource :='sheet1'!$A$2:$A$18,'sheet1'!$A$20,'sheet1'!$A$24
を入れました。

結果
リストボックスが空白になってしまいます。


='sheet1'!$A$2:$A$18
はリストに表示されます。

A19 空白
A21〜A23 空白がある場合

A2〜A18、A20、A24をリストボックスに表示さてるにはどのように書き直したらリストボックスに表示出来るのでしょうか?
教えてください。

VBA excel 2019



引用返信 編集キー/
■96976 / inTopicNo.2)  Re[1]: VBAで名前の定義に一つ空白があった場合の処理
□投稿者/ 魔界の仮面弁士 (2997回)-(2021/03/09(Tue) 09:45:12)
No96974 (エイ さん) に返信
> VBAで名前の定義指定した列を選択しました。

複数領域は指定できません。

カンマ指定とならぬよう、連続したセルに値をコピーしておいて、
それを RowSource で指定するようにしてください。


あるいは RowSource を用いず、実行時に AddItem で追加しましょう。


Private Sub UserForm_Initialize()
  If ListBox1.RowSource = "" Then Exit Sub
  Dim s As String
  s = ListBox1.RowSource
  ListBox1.RowSource = ""
  If s Like "=*" Then s = Mid$(s, 2)
  Dim v As Variant
  For Each v In Range(s)
    If Not IsEmpty(v) Then ListBox1.AddItem v
  Next
End Sub
引用返信 編集キー/
■96978 / inTopicNo.3)  Re[2]: VBAで名前の定義に一つ空白があった場合の処理
□投稿者/ エイ (14回)-(2021/03/09(Tue) 16:24:21)
No96976 (魔界の仮面弁士 さん) に返信

>
> 複数領域は指定できません。
>
魔界の仮面弁士さんありがとうございます。

解決しました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ