Excel VBA質問箱 IV

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

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


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

【46003】ユーザーフォームのListBoxから転記 yasu 07/1/21(日) 11:58 質問[未読]
【46005】Re:ユーザーフォームのListBoxから転記 ぱっせんじゃー 07/1/21(日) 12:07 発言[未読]
【46007】Re:ユーザーフォームのListBoxから転記 yasu 07/1/21(日) 12:15 発言[未読]
【46008】Re:ユーザーフォームのListBoxから転記 yasu 07/1/21(日) 12:19 発言[未読]
【46009】Re:ユーザーフォームのListBoxから転記 かみちゃん 07/1/21(日) 12:25 発言[未読]
【46010】Re:ユーザーフォームのListBoxから転記 yasu 07/1/21(日) 12:43 発言[未読]
【46017】Re:ユーザーフォームのListBoxから転記 かみちゃん 07/1/21(日) 13:17 発言[未読]
【46019】Re:ユーザーフォームのListBoxから転記 yasu 07/1/21(日) 13:25 発言[未読]
【46021】Re:ユーザーフォームのListBoxから転記 かみちゃん 07/1/21(日) 13:37 発言[未読]
【46022】Re:ユーザーフォームのListBoxから転記 yasu 07/1/21(日) 13:57 発言[未読]
【46023】Re:ユーザーフォームのListBoxから転記 かみちゃん 07/1/21(日) 14:08 発言[未読]
【46029】Re:ユーザーフォームのListBoxから転記 yasu 07/1/21(日) 17:03 お礼[未読]

【46003】ユーザーフォームのListBoxから転記
質問  yasu  - 07/1/21(日) 11:58 -

引用なし
パスワード
   ユーザーフォームのListBoxへテキストを読み込んでいるのですが
このテキストの左側6桁[半角数字]をシート["入力"]のR8からR107のセルに
転記できますか?
下記が現在のコードです
よろしくお願いします。
Sub コード()
  Dim FName As String
  FName = ThisWorkbook.Path + "C:\テキスト.txt"
  Const cnsFILENAME = "C:\テキスト.txt"
  Dim intFF As Integer
  Dim strREC As String
  Dim GYO As Long

  intFF = FreeFile
  Open cnsFILENAME For Input As #intFF
  GYO = 1
  Do Until EOF(intFF)
    Line Input #intFF, strREC
    UserForm2.ListBox1.AddItem strREC
  Loop
  Close #intFF
  UserForm2.Show
End Sub

【46005】Re:ユーザーフォームのListBoxから転記
発言  ぱっせんじゃー  - 07/1/21(日) 12:07 -

引用なし
パスワード
   Left(文字列,6)
で文字列の左6個を取得できます。

【46007】Re:ユーザーフォームのListBoxから転記
発言  yasu  - 07/1/21(日) 12:15 -

引用なし
パスワード
   ▼ぱっせんじゃー さん:
ありがとうございます。
関数では解るのですが
VBAは初心者なのでよく解りません。
コードにどのように書き込めばいいのでしょう
よろしくお願いします。
>Left(文字列,6)
>で文字列の左6個を取得できます。

【46008】Re:ユーザーフォームのListBoxから転記
発言  yasu  - 07/1/21(日) 12:19 -

引用なし
パスワード
   ▼ぱっせんじゃー さん:
Private Sub ListBox1_MouseUp(ByVal Button As Integer, _
    ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  ActiveCell.Value = ListBox1.Value
  Unload Me
End Sub
上記コードで利用できますか?
>Left(文字列,6)
>で文字列の左6個を取得できます。

【46009】Re:ユーザーフォームのListBoxから転記
発言  かみちゃん  - 07/1/21(日) 12:25 -

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

横から失礼します。

>Private Sub ListBox1_MouseUp(ByVal Button As Integer, _
>    ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
>  ActiveCell.Value = ListBox1.Value
>  Unload Me
>End Sub
>上記コードで利用できますか?

どこが文字列になっているかを考えましょう。
ListBox1.Value
とは、何だと思いますか?
Left(ListBox1.Value, 6)
今回は、半角数字とのことですが、全角半角が混ざってバイト単位の処理をしたい場合、少しややこしい処理が必要です。

【46010】Re:ユーザーフォームのListBoxから転記
発言  yasu  - 07/1/21(日) 12:43 -

引用なし
パスワード
   ▼かみちゃん さん:
ありがとうございます。

>どこが文字列になっているかを考えましょう。
>ListBox1.Value
>とは、何だと思いますか?
>Left(ListBox1.Value, 6)
>今回は、半角数字とのことですが、全角半角が混ざってバイト単位の処理をしたい
これから作成する書類の中に↑が出てきますどのように処理できるのでしょうか
場合、少しややこしい処理が必要です。

テキスト.txtの表示が下記コードなら可能なのですが
Sub コード()
  Dim FName As String
  FName = ThisWorkbook.Path + "C:\テキスト.txt"
  Const cnsFILENAME = "C:\テキスト.txt"
  Dim intFF As Integer
  Dim strREC As String
  Dim GYO As Long

  intFF = FreeFile
  Open cnsFILENAME For Input As #intFF
  GYO = 1
  Do Until EOF(intFF)
    Line Input #intFF, strREC
    UserForm2.ListBox1.AddItem strREC
  Loop
  Close #intFF
  UserForm2.Show
End Sub

ユーザーフォームを下記コードで立ち上げたらテキスト.txtが
表示できなくなりました
どこか違いますか。
よろしくお願いします。 
 If 1 < Target.Count Then Exit Sub 'If Target.Cells.Count > 1 Then
    On Error Resume Next
 If Not Intersect(Target, Range("R8:R107")) Is Nothing Then
    Cancel = True
  UserForm2.Show
 Else
  UserForm2.Hide
 End If

【46017】Re:ユーザーフォームのListBoxから転記
発言  かみちゃん  - 07/1/21(日) 13:17 -

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

> > 今回は、半角数字とのことですが、全角半角が混ざってバイト単位の処理をしたい
> これから作成する書類の中に↑が出てきますどのように処理できるのでしょうか

Excel97以降のVBAにおいて、UniCodeが採用されているため
VBAの一部の文字列関数では全角文字でも半角文字が混在する場合でバイト(文字数ではない)単位の取得をしたい場合は、注意が必要です。
詳しくは、以下を参照してみてください。
http://support.microsoft.com/kb/408879/ja
http://web.pi-ppi.com/vba/g01/index.html
http://www.zenko3.com/tips/ascii_string.html
(先頭から二文字は(全角になっているので)半角にしてください)

>ユーザーフォームを下記コードで立ち上げたらテキスト.txtが
>表示できなくなりました

何がしたいのかがわかりません。
・提示のコードがどのように実行されているのか(全体のコードがわからない)
・どのようにUserFormを立ち上げているのか
・テキスト.txtを表示とはどういう意味なのか?

そもそも、当初の質問と違うであれば、別のスレッド立てたら、いかがですか?

【46019】Re:ユーザーフォームのListBoxから転記
発言  yasu  - 07/1/21(日) 13:25 -

引用なし
パスワード
   ▼かみちゃん さん:

>> > 今回は、半角数字とのことですが、全角半角が混ざってバイト単位の処理をしたい
>> これから作成する書類の中に↑が出てきますどのように処理できるのでしょうか
>
>Excel97以降のVBAにおいて、UniCodeが採用されているため
>VBAの一部の文字列関数では全角文字でも半角文字が混在する場合でバイト(文字数ではない)単位の取得をしたい場合は、注意が必要です。
>詳しくは、以下を参照してみてください。
>http://support.microsoft.com/kb/408879/ja
>http://web.pi-ppi.com/vba/g01/index.html
>http://www.zenko3.com/tips/ascii_string.html
>(先頭から二文字は(全角になっているので)半角にしてください)
上記参考にさせて頂きます。ありがとうございます。

>
>>ユーザーフォームを下記コードで立ち上げたらテキスト.txtが
>>表示できなくなりました
>
>何がしたいのかがわかりません。
>・提示のコードがどのように実行されているのか(全体のコードがわからない)
>・どのようにUserFormを立ち上げているのか
>・テキスト.txtを表示とはどういう意味なのか?
>
>そもそも、当初の質問と違うであれば、別のスレッド立てたら、いかがですか?

延長のような内容なのでこのスレでお願いします。

そもそも最初下記のコードでCドライブにある"テキスト.txt"を下記のコードで
フォームのボタンで立ち上げておりました。
しかし使い勝手上セルをダブルクリックで立ち上げた方が誤記げないと判断し

下記でユーザーフォームを立ち上げに修正したのですが
ListBoxにC:\テキスト.txt呼び込みには
下記にどのように手を加えればいいのでしょうか。

Private Sub Worksheet_BeforeDoubleClick _
(ByVal Target As Range, Cancel As Boolean)
 If 1 < Target.Count Then Exit Sub
    On Error Resume Next
 If Not Intersect(Target, Range("R8:R107")) Is Nothing Then
    Cancel = True
  UserForm2.Show vbModeless
 Else
  UserForm2.Hide
 End If
説明がへたですみません
かみちゃんさんよろしくお願いします。

【46021】Re:ユーザーフォームのListBoxから転記
発言  かみちゃん  - 07/1/21(日) 13:37 -

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

>しかし使い勝手上セルをダブルクリックで立ち上げた方が誤記げないと判断し

ご自身で判断されたのなら、きちんと説明しないと、掲示板を見ている者には伝わりませんよ。

> 下記でユーザーフォームを立ち上げに修正したのですが
> ListBoxにC:\テキスト.txt呼び込みには
> 下記にどのように手を加えればいいのでしょうか。

ListBoxは、UserForm2に配置しているのですよね?
ListBoxへのAddは、UserForm2のInitializeイベントなどに記述すればいいと思います。
Private Sub UserForm_Initialize()
 MsgBox "UserFormを開きます。"
End Sub

試しに、以下のコードでUserFormが表示・非表示になることを確認してください。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If 1 < Target.Count Then Exit Sub
 On Error Resume Next
 If Not Intersect(Target, Range("R8:R107")) Is Nothing Then
  Cancel = True
  MsgBox "UserForm2を表示します"
  UserForm2.Show vbModeless
 Else
  MsgBox "UserForm2を非表示にします"
  UserForm2.Hide
 End If
End Sub

【46022】Re:ユーザーフォームのListBoxから転記
発言  yasu  - 07/1/21(日) 13:57 -

引用なし
パスワード
   ▼かみちゃん さん:
>
>> 下記でユーザーフォームを立ち上げに修正したのですが
>> ListBoxにC:\テキスト.txt呼び込みには
>> 下記にどのように手を加えればいいのでしょうか。
>
>ListBoxは、UserForm2に配置しているのですよね?
>ListBoxへのAddは、UserForm2のInitializeイベントなどに記述すればいいと思い
すみませんかみちゃんさん
AddはC:\テキスト.txtどのように記述すればいいですか
>ます。
>Private Sub UserForm_Initialize()
> MsgBox "UserFormを開きます。"
>End Sub
>
>試しに、以下のコードでUserFormが表示・非表示になることを確認してください。
>Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
> If 1 < Target.Count Then Exit Sub
> On Error Resume Next
> If Not Intersect(Target, Range("R8:R107")) Is Nothing Then
>  Cancel = True
>  MsgBox "UserForm2を表示します"
>  UserForm2.Show vbModeless
> Else
>  MsgBox "UserForm2を非表示にします"
>  UserForm2.Hide
> End If
>End Sub
上うまく表示しました

【46023】Re:ユーザーフォームのListBoxから転記
発言  かみちゃん  - 07/1/21(日) 14:08 -

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

>>ListBoxは、UserForm2に配置しているのですよね?
>>ListBoxへのAddは、UserForm2のInitializeイベントなどに記述すればいいと思い
>すみませんかみちゃんさん
>AddはC:\テキスト.txtどのように記述すればいいですか

相変わらず、ListBox1がどこに配置されているのかわからないのですが、
[46010]でうまくいっているコードは参考にならないのですか?

【46029】Re:ユーザーフォームのListBoxから転記
お礼  yasu  - 07/1/21(日) 17:03 -

引用なし
パスワード
   ▼かみちゃん さん:
いろいろありがとうございました。
できました。
解決ですよ
>>>ListBoxは、UserForm2に配置しているのですよね?
>>>ListBoxへのAddは、UserForm2のInitializeイベントなどに記述すればいいと思い
>>すみませんかみちゃんさん
>>AddはC:\テキスト.txtどのように記述すればいいですか
>
>相変わらず、ListBox1がどこに配置されているのかわからないのですが、
>[46010]でうまくいっているコードは参考にならないのですか?

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